Tôi muốn điền vào một liên kết 10Gbps với các gói udp rất nhỏ (64B).
Tôi sử dụng lệnh sau
for i in 1 2 3 4 5 6 7 8; do netperf -H 192.168.56.2 -p 12865 -t UDP_STREAM -l 60 -C -c -- -m 64 -s 16M -S 16M -R 1 & done
Nhưng tôi không thể có được thông lượng hơn 250Mbps. Đối với các tin nhắn nhỏ, tôi thấy rằng một luồng có tên ksoftirqd đang sử dụng 100% lõi CPU ở máy thu. Vì vậy, câu hỏi của tôi là
- Làm thế nào để giảm mức sử dụng cpu của ksoftirqd cho các tin nhắn nhỏ?
Cài đặt hiện tại: Tôi có hai máy Ubuntu (8 lõi và 16 lõi) với các Intel Intel2020-T2 và kernel 3.11 được kết nối với một công tắc Juniper 10G. Đây là những thay đổi tôi có cho sysctlcfg.conf
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 0
net.core.rmem_max = 268435456
net.core.wmem_max = 268435456
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.core.netdev_max_backlog = 250000
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_congestion_control = htcp
Tôi cũng tăng kích thước txqueue của NIC
/sbin/ifconfig eth0 txqueuelen 10000
Tôi đã tìm kiếm sự kết hợp ngắt bằng cách sử dụng tham số rx-usecs nhưng làm tăng thông lượng.