2011년 3월 22일 화요일

리눅스 커널 2.6.38 에 포함된 XPS(Transmit Packet Steering)는 무엇이지?

최근 리눅스커널 2.6.38 버전이 공개되었다. 이번 2.6.38 의 주요 변화중 눈에 띄는것이 XPS 였다.

XPS 는 Transmit Packet Steering 으로, 네트워크 카드의 멀티 큐 기능을 소프트웨어 구성요소가 프로세스 코어와 연관되어 큐를 사용할 수 있도록 한 것이라고 정의하고 있다. 그 결과, 특정 상황에서는 프로세서 캐쉬의 효율을 가져오고, 이것은 결국 네트워크 카드의 데이터 처리량을 증가시킨다는 것이다. XPS 의 기본 아이디어는 RPS 를 기본으로 하고 있다고 한다.

RPS 는 Receive Packet Steering 으로 커널 2.6.35 에 RFS(Receive Flow Steering) 와 함께 들어간 기능이다.

개발자의 테스트에 의하면 16 개의 프로세서 코어에서 XPS 는 20 퍼센트 정도 향상된 성능을 보였다고 한다.
이번 패치는 구글에서 일하는 개발자에 의해 개발된 것이고, 구글은 현재 TCP 스택의 기본 설정값들이 현재의 인터넷 환경하고는 이상적이지 않은 부분이 있어, 앞으로도 구글 개발자는 수정된 패치를 제공할 예정이라고 한다. 2.6.38 커널의 config 를 보면

CONFIG_RPS=y 아래에
CONFIG_XPS=y 가 설정되었음을 확인할 수 있다.

참고로, 커널 2.6.39 에서는 초기 congestion window 을 좀더 크게 조정한 패치를 추가될 것이라고 하며 이로 인해 10% 정도 네트워트 통신 대기시간을 줄일 수 있을것으로 예상된다. 이와 관련한 자세한 것은 LWN 기사중 "Increasing the TCP initial congestion window" 를 참고해 보면 된다.

http://lwn.net/Articles/427104/

이런것들을 보면 구글이 생각하는 범위는 작은 것부터 시작해 큰 것까지 소홀히 하는 부분이 없다는 것을 느낀다. 우리 라면 어땠을까? 그냥 주어진 OS 환경 대로 사용하는 경우가 대부분이 아닐까? 하드웨어, 주변 시스템 동작 환경, 운영체제, 클러스트 등 그들이 사용하는 기술이 안겨주는 느낌은 정말 '이게 최선입니까? ' 를 느끼게 할 만큼 노력한다는 것이 보여진다. 물론, 필자만의 생각이다.

[참고]
1. xps: Transmit Packet Steering
http://lwn.net/Articles/412062/
2. The Linux Kernel Archives
http://www.kernel.org/

댓글 없음:

댓글 쓰기