deactivate_slab.isra.82
통화 __alloc_skb
(15%+ CPU 시간) 로 인해 병목 현상이 발생하는 UDP 사용량이 많은 워크플로가 있습니다 . alloc 메소드는 Intel 카드 드라이버 내에서 가장 자주 호출되는 것으로 보이지만(RX 경로라고 가정함) send 시스템 호출에서도 호출됩니다.
이러한 병목 현상으로 인해 10G 서버에서는 약 1.1Gbps만 푸시할 수 있으며, 이 오버헤드를 줄이기 위해 조정할 수 있는 커널 매개 변수가 있는지 알고 싶습니다. 아마도 SKB의 사용 가능한 목록 크기를 늘려서 kernel-malloc 경로가 자주 적중되지 않습니다.
slub_debug
이 기능은 데비안에서 기본적으로 활성화되어 있어 애플리케이션 속도가 더욱 느려지는 것을 확인했습니다 (850Mbps에서 1.1Gbps로).
답변1
이것은 slub_debug 옵션에 대한 나의 오해입니다. 이 옵션을 끄는 올바른 방법은 "slub_debug=-"입니다. "slub_debug=off"는 슬랩 디버깅 검사를 비활성화하지만 모든 디버깅 코드를 비활성화하는 것은 아닙니다.
디버그 모드를 적절하게 비활성화하면 UDP가 많은 워크로드에서 성능이 크게 향상되었으며 더 이상 병목 현상을 일으키는 명백한 단일 커널 기능이 없었습니다.