Como posso ter certeza de que um aplicativo está sendo executado na mesma cpu / core que seu fluxo de envio TCP é?

2

Vamos supor o seguinte fluxo (muito simplificado do e-mail tcp):

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

Para o tx ring buffer , posso usar o script de driver para garantir que a afinidade e suas várias filas sejam divididas por cpu / core.

Para o egresso qdisc , posso usar o fq_codel e, para , um aplicativo (como o nginx) também tenho algumas formas (exemplo: cpu_worker_affinity). p>

Mas como eu posso ter certeza de que um aplicativo rodando em uma CPU / core X está na mesma CPU / núcleo que seu fluxo de rede (send_buffer) está rodando?

Para resumir, um aplicativo sempre é executado (quando pinado) na mesma CPU / núcleo que seu buffer de envio tcp é? (se sim, como o linux faz isso?)

Obrigado

    
por leandro moreira 19.05.2018 / 02:13

1 resposta

0

A palavra-chave que você está procurando é XPS: Transmit Packet Steering . Bem documentado, isso deve responder às suas perguntas.

    
por 19.05.2018 / 11:13