Add support for IO CPU affinity Jan 14, 2009

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c7c22e4d5c1fdebfac4dba76de7d0338c2b0d832

이번에 살펴볼 패치는 IO CPU affinity이다. x86의 server side 제품군들이 NUMA로 간지는 오래다. NUMA는 멀티 프로세서 시스템의 공유 메모리에 대한 FSB(Front-Side Bus) bottleneck을 줄이기 위한 시도였다. 하지만 NUMA로 인해 수면위로 드러났던 문제는 cache-miss 문제이다. cache-miss 문제야 이미 오래전 부터 많이 연구되었던 문제지만 NUMA에서는 cache-miss로 인한 cost가 보다 훨씬 크기 때문에 더욱 중요해 졌다. remote node로부터의 cache-to-cache transfer는 시스템의 성능 저하에 큰 요소로 작용한다. 결국, 시스템의 cache hit을 높이는 것이 갈수록 중요해지고 있는데, 이의 일환으로 이번 2.6.28에 들어간 패치 중의 하나가 IO CPU affinity이다. 이미 CPU affinity와 IRQ affinity는 이미 mainline kernel에 들어가 있는 상태이다. 이번에 추가된 IO CPU affinity는 착각하면 IRQ affinity처럼 생각할 수 있지만, IRQ와는 달리 IO를 submit한 CPU에서 IO complete routine도 처리하고자 하는 것이다. 이는 시스템의 cache hit을 높여, 성능측정 결과 20~40%의 성능 향상을 보였다고 한다. 하지만 arch에 따라 지원 여부가 결정된다는 단점이 있다. 해당 arch가 CONFIG_USE_GENERIC_SMP_HELPERS를 지원해야만 사용할 수 있다는 단점이 있다. 지원하지 않는다면 기존과 마찬가지로 여느 CPU에서나 동작하게 될 것이다.

0 개의 덧글: