TUN 인터페이스의 메모리 소비 차이

TUN 인터페이스의 메모리 소비 차이

TUN 인터페이스 multi_queue 기능을 사용해 보고 있습니다. 잘 작동하고 트래픽이 다른 대기열로 분산되어 애플리케이션 성능이 향상됩니다.

그러나 multi_queue와 함께 tuntap 명령만 사용하여 TUN 인터페이스를 생성하면 multi_queue 설정 없이 tuptap 명령을 사용하여 인터페이스를 생성하는 것보다 커널이 더 많은 GB의 메모리를 소비하게 된다는 점도 알아냈습니다.

커널 5.4.0-94-generic을 실행하는 Ubuntu 20에서 테스트했는데, 시스템은 약 1200개의 TUN 인터페이스에 대해 최대 30GB의 메모리를 소비했고, multi_queue 없이 1200개의 TUN 인터페이스에 대해 0.3GB의 메모리를 소비했습니다.

내 테스트는 간단했습니다. vmstat를 실행하여 사용 가능한 메모리를 모니터링하고 스크립팅을 통해 tuptap 및 multi_queue를 사용하여 1200 TUN 인터페이스를 생성했습니다.

내 질문은 메모리 소비 사이에 이러한 차이가 발생하는 이유입니다. 감사해요.

답변1

이제 이해가 된 것 같아요. 오늘날 우리가 multi_queue tun 인터페이스를 생성하면 커널은 무조건 256개의 큐를 생성합니다. multi_queue 플래그를 설정하지 않으면 하나의 tx 큐만 생성됩니다.

관련 정보