Tenho lido sobre RoCE e fala sobre transferir dados zero copy entre a memória de um servidor diretamente para a memória de uma aplicação em outro servidor. A maioria dos artigos faz questão de dizer que isso é feito sem envolvimento da CPU. Eu não entendo como isso é feito embora. Como os dados vão do adaptador para a RAM sem nenhum processamento da CPU? Como ele sabe onde os dados do aplicativo estão na RAM?
Acho que você não entendeu "sem CPU". Isso não significa que a CPU não está envolvida - significa apenas que a CPU não está fazendo a cópia. Ele faz - via drivers - a configuração da operação de cópia e, em seguida, o hardware faz o processamento real.
Seu link diz isso MUITO explicitamente - apenas leia:
Essa é a operação de cópia, não a configuração. Alguém tem que dizer ao adaptador de rede.
Entenda que as redes modernas onde isso realmente brilha são 100+ gigabit - 10 gigabyte + - por segundo, geralmente várias linhas combinadas, com o high-end atualmente sendo 400 gigabit.
Isso é muito - para a CPU ler da RAM, faça um loop sobre ela e envie-a para o Adaptador, quando você poderia apenas dizer ao adaptador qual memória ler e enviar.
Mas, novamente, "sem envolvimento" não é "nenhuma CPU", é "CPU não está copiando os dados". Ele ainda faz todo o controle.