내 애플리케이션이 TCP 전송 스트림과 동일한 CPU/코어에서 실행되고 있는지 어떻게 확인할 수 있나요?

내 애플리케이션이 TCP 전송 스트림과 동일한 CPU/코어에서 실행되고 있는지 어떻게 확인할 수 있나요?

다음(매우 단순화된 송신 TCP 큐) 흐름을 가정해 보겠습니다.

 -->[app (nginx)]
 -->[send_buffer(tcp_wmem)]
 -->(qdisc txqueuelen)
 -->[ring buffer(tx_rx)]
 -->(dma)
 -->[nic]

~을 위한링 버퍼 보내기드라이버 스크립트를 사용하여 선호도와 해당 대기열이 CPU/코어별로 분할되도록 할 수 있습니다.

~을 위한송신 대기열 규율나는 사용할 수 fq_codel있습니다애플리케이션(예: nginx)또한 몇 가지 방법(예: cpu_worker_affinity)도 있습니다.

하지만 애플리케이션이 다음에서 실행되는지 어떻게 확인하나요?CPU/코어X네트워크 스트림(send_buffer)과 동일한 CPU/코어에서 실행됩니까?

요약하자면, 애플리케이션은 항상 TCP 전송 버퍼(고정된 경우)와 동일한 CPU/코어에서 실행됩니까? (그렇다면 리눅스는 어떻게 이것을 하는가?)

감사해요

답변1

고객님께서 찾으시는 키워드는XPS: 전송 패킷 부팅. 귀하의 질문에 답할 수 있도록 업스트림에 잘 문서화되어 있습니다.

관련 정보