나는 다음 기사를 보았다:
http://lwn.net/2001/0419/kernel.php3
제로 카피 네트워킹은 2.4.4에 나타납니다. 이 패치는 David Miller, Alexey Kuznetsov 등이 한동안 개발하고 테스트했으며 2.4.2ac4에서 "ac" 커널 시리즈로 병합되었습니다. 어떤 면에서 이것은 안정적인 커널 시리즈에서 볼 수 있는 놀라운 변화입니다. 왜냐하면 네트워킹 코드의 깊은 근본적인 변화를 포함하기 때문입니다. 그러나 모든 보고서에서 이는 신뢰할 수 있으며 어떤 경우에는 상당한 성능 이점을 제공합니다.
Linux에 제로 카피 네트워킹이 기본적으로 존재하는지, 아니면 이 패치가 제로 카피 네트워킹을 구현하려는 사람들을 위한 것인지 누군가 말해 줄 수 있습니까?
즉, 현재 Ubuntu에서는 항상 무복사 네트워킹을 수행합니까, 아니면 위 패치를 활용하려면 특정 시스템 호출을 사용해야 합니까?
답변1
Linux 커널 git 저장소에서:
git log --oneline -- drivers/net | head -n5000 | egrep -i 'zero[[:space:]]*copy'
우리에게 말해주세요:
- 7d9e6dd macvtap: iov에 MAX_SKB_FRAGS보다 더 많은 페이지가 필요한 경우 제로 복사를 수행하지 마세요.
- 05464d2 tuntap: iov에 MAX_SKB_FRAGS보다 많은 페이지가 필요한 경우 제로 복사를 수행하지 마세요.
- bd31fdd macvtap: Zerocopy를 사용할 때 skb를 올바르게 선형화합니다.
- d09ec76 tuntap: Zerocopy를 사용할 때 skb를 올바르게 선형화합니다.
- 19a6afb tuntap: 여는 동안 SOCK_ZEROCOPY 플래그 설정
- 149d36f tun: 제로 복사 콜백에 고아 조각화 오류가 보고되었습니다.
이것은 (내 생각에) 귀하의 질문에 명확하고 긍정적으로 대답합니다. ;)