ANS 관련 설명을 읽다보니 "NDIS6.2 에서는 새로운 RSS 데이터 구조와 인터페이스가 도입"
이라는 신기한 문구가 보이길래 검색겸 정리!
RSS로 검색하면 구독용 RSS만 잔뜩 나와서 조금 검색하기가 힘들다 -_-

오늘 얘기할 Receive Side Scaling 은 다중 프로세서 시스템에서 패킷을 효율적으로 처리하는 아키텍처 입니다. 
보통의 경우는 패킷이 NIC에 왔을 때 인터럽트가 걸리고 미니포트의 ISR 에서 DPC 를 큐잉하여 DPC에서 전체 패킷을 받아오게 끔 하도록 되어 있는데 이 때 기존의 방식은 처음 인터럽트가 걸린 CPU 에서 패킷처리를 담당하게 됩니다.(DPC 큐잉이 동일 CPU에서 이루어지므로). 
RSS 방식은 이 시점에서 패킷에 대한 처리를 처음 인터럽트가 걸린 CPU가 아닌 다른 CPU 코어로 전달한다든지, 아니면 특정 연결을 하나의 CPU 로만 할당한다든지 하는 제어를 할 수 있습니다. 
한마디로 인터럽트에 대한 배분을 효율적으로 커스터마이징 하는 것이죠.

이렇게 되면 NIC 의 수신처리를 다수의 CPU 처리로 분산시켜서 IDLE 상태의 CPU가 발생되지 않게 할 수 있고, Shared 리소스에 대한 처리를 한 CPU 로만 지정하여 처리토록 함으로써 시스템 자원(스핀락 오버헤드 같은 것)의 리로딩을 줄여주게 됩니다.
꽤 쓸만하죠. 아니 요즘 멀티코어 시스템에선 이러한 기능을 갖는 랜카드가 필수적인 옵션으로 자리잡아가고 있습니다.


[링크 : http://zpacket.blogspot.com/2010/07/rssreceive-side-scaling.html]
 

Receive-Side Scaling (RSS) resolves the single-processor bottleneck by allowing the receive side network load from a network adapter to be shared across multiple processors. RSS enables packet receive-processing to scale with the number of available processors. This allows the Windows Networking subsystem to take advantage of multi-core and many core processor architectures.
 

[링크 : http://technet.microsoft.com/en-us/network/dd277646]
 

When Receive Side Scaling (RSS) is enabled, all of the receive data processing for a particular TCP connection is shared across multiple processors or processor cores. Without RSS all of the processing is performed by a single processor, resulting in inefficient system cache utilization.
 

[링크 : http://www.intel.com/support/network/adapter/pro100/sb/cs-027574.htm
 

신고
Posted by 구차니

댓글을 달아 주세요