epoll을 사용한 서버 프로그램, e1000 튜닝 (InterruptThrottleRate=0) 적용후.

|

기존의 구조 변경 없이 튜닝값만 적용하고, 적용하지 않고 테스트를 진행했다.

결론적으로 튜닝값을 적용한 후에, 더 많은 초당 Interrupt를 처리하는 것이 확인되었다. 하지만 그것이 문제가 아니라 부하가 올라간다는 것인데,

사용자 삽입 이미지

Before. CPU Time이 상당히 많이 남아 있는것을 볼 수 있다.


사용자 삽입 이미지

After. CPU를 상당히 많이 쓰고 있다.


전체 CPU 사용율 뿐만 아니라, Send와 Receive를 담당하는 프로세스 자체의 부하도 약 43%, 21%에서 60%, 67%로 늘었다.

그것 뿐만 아니라 메시지를 처리하는 프로세스들의 부하도 늘었는데, 그 원인은 초당 Interrupt를 더 많이 처리함에 따라 한 Interrupt당 들어오는 메시지의 숫자도 줄은것 같다. 그러므로 구조상 Receive를 담당하는 프로세스는 recv 시스템 콜 하나당 하나의 이벤트를 발생하도록 되어 있는데, 이 이벤트의 갯수가 늘어난 것이다 (그러니까 recv 시스템 콜이 더 많은 빈도로 불린다). 만일 Receive를 담당하는 프로세스가 하나의 (논리적인) 메시지당 하나의 이벤트를 발생한다면, 두 경우의 부하가 거의 비슷했을 것 같다. (Send와 Receive를 담당하는 프로세스는 여전히 높은 부하를 가지고 있겠지만.)

아니면 약간의 버퍼 영역을 두고 recv 시스템 콜 n개당 하나의 이벤트를 발생하도록 하면 뒤의 처리 프로세스들의 부하는 다소 줄어들 것 같다.

2007/09/28 - [작업로그(SE)/Linux (배포본)] - linux: e1000 device parameters

And