4.1.11

내장랜의 성능이 안좋은 이유

내장랜의 성능이 안좋은 이유는, 해외 트래커에서 광랜이 ADSL이 되는 이유과 비슷한 측면이 있습니다.
아래 링크의 글을 못보셨다면, 먼저 내용을 읽어 주시기 바랍니다.

해외트래커에서 광랜이 ADSL이 되는 이유

패킷을 해외로 장거리 전송하면서 효율을 높이기 위해서는, 화물차처럼 패킷을 하나씩 싣어나르며 왕복하는 것이 아니라,
기차처럼 여러개를 한꺼번에 전송해야 한다는 것을 이해하셨을 것입니다.

내장랜에도 이와 비슷한 동작 때문에, 효율이 떨어지고 과부하가 발생하는 것입니다.

외부에서 랜카드에 패킷이 도착하면, 랜카드는 CPU에 이를 알리게 됩니다. 이때 사용하는 방법이 Interrupt 라는 방식입니다.
CPU는 인터럽트 신호를 받자마자 CPU의 상태를 변경시키고, 랜카드에서 패킷을 불러와 처리를 하게 됩니다.

이 동작에서 패킷 하나가 올때마다 인터럽트를 걸게 되면, CPU 입장에서는 굉장히 큰 부담을 느끼게 됩니다.
CPU의 상태를 인터럽트에 맞게 변경시키고 다시 복구하는 작업에 시간이 걸리게 되고,
랜카드로부터 패킷을 불로오는 동안 다른 작업을 못하면서 시간을 뺏기게 되는 것입니다.
CPU는 2~3GHz 속도로 32bit나 64bit 병렬로 처리하면서 빠른데, 랜카드의 속도는 상대적으로 낮기 때문에 더욱 문제가 됩니다.
이런 이유로, CPU가 내장랜의 패킷만을 처리하면서 CPU 점유율이 20~40% 이상 되는 과부하 상태가 되는 것입니다.

그래서, 고급 랜카드에서는 Interrupt Moderation 기능을 통해서, 시스템의 부하를 조절하고 있습니다.
패킷이 천천히 오면 인터럽트가 빠르게 걸리도록 하여 반응속도를 높이고,
패킷이 한꺼번에 몰리면 인터럽트가 천천히 걸리도록 하여 패킷을 한꺼번에 모아서 전송하게 함으로써,
CPU의 상태 변경을 최소화하여 시스템의 부하도 줄이고, 패킷 처리 효율도 높이게 되는 것입니다.

그러니, 인터럽트 완화(조절) 기능이 없는 랜카드를 사용할 경우, 다운로드나 업로드가 많아져 패킷 입출력이 많아지게 되면,
시스템에 부하가 증가하여 전송속도를 떨어트리고, CPU 자원만 많이 소모하게 되는 것입니다.

이런 이유에서, CPU 점유율도 낮추고, 패킷 전송 속도로 높이려면, 외장형 랜카드를 사용하는 것이 좋습니다.