![내 애플리케이션이 TCP 전송 스트림과 동일한 CPU/코어에서 실행되고 있는지 어떻게 확인할 수 있나요?](https://linux55.com/image/133666/%EB%82%B4%20%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%B4%20TCP%20%EC%A0%84%EC%86%A1%20%EC%8A%A4%ED%8A%B8%EB%A6%BC%EA%B3%BC%20%EB%8F%99%EC%9D%BC%ED%95%9C%20CPU%2F%EC%BD%94%EC%96%B4%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%EB%90%98%EA%B3%A0%20%EC%9E%88%EB%8A%94%EC%A7%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%99%95%EC%9D%B8%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
다음(매우 단순화된 송신 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: 전송 패킷 부팅. 귀하의 질문에 답할 수 있도록 업스트림에 잘 문서화되어 있습니다.