Bật mạnh fq_pie

Oct 18 2020

Tôi rất quan tâm đến việc thiết lập kỷ luật hàng đợi fq_pie để kiểm soát tắc nghẽn TCP. Nếu tôi ghi net.core.default_qdisc = fq_pievào /etc/sysctl.d/90-override.conf, nó sẽ bật fq_pie trên các hạt nhân mới nhất.

Nó hoạt động trên máy tính để bàn của tôi. Nhưng trên máy tính xách tay của tôi:

$ tc qdisc show
qdisc noqueue 0: dev lo root refcnt 2 
qdisc noqueue 0: dev wlp1s0 root refcnt 2 
qdisc mq 0: dev wlp0s20f0u3 root 
qdisc fq_pie 0: dev wlp0s20f0u3 parent :4 limit 10240p flows 1024 target 15ms tupdate 16ms alpha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10 
qdisc fq_pie 0: dev wlp0s20f0u3 parent :3 limit 10240p flows 1024 target 15ms tupdate 16ms alpha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10 
qdisc fq_pie 0: dev wlp0s20f0u3 parent :2 limit 10240p flows 1024 target 15ms tupdate 16ms alpha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10 
qdisc fq_pie 0: dev wlp0s20f0u3 parent :1 limit 10240p flows 1024 target 15ms tupdate 16ms alpha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10

Như có thể thấy rằng tôi có 2 bộ điều hợp wifi. Một trong những tích hợp sẵn cho máy tính xách tay của tôi, đó là Qualcomm Atheros (Ath10k), không thể kích hoạt fq_pie trên cái này.

Tuy nhiên, fq_pie có thể được kích hoạt trên bộ điều hợp TP Link (RTL8188EUS).

Mình cũng đã thử thêm 2 laptop (Dell và HP) thì cục phát wifi tích hợp thực tế không chạy được fq_pie.

Có cách nào để kích hoạt mạnh mẽ fq_pie với Qualcomm Atheros và các bộ điều hợp wifi khác không?

Chi tiết hệ thống:

$ cat /proc/version
Linux version 5.8.12-xanmod1-1 (makepkg@archlinux) (gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP PREEMPT Wed, 30 Sep 2020 14:19:49 +0000

$ ip -V ip utility, iproute2-v5.7.0-77-gb687d1067169 $ tc -V
tc utility, iproute2-v5.7.0-77-gb687d1067169

Trả lời

1 A.B Oct 19 2020 at 02:01

Nó xuất hiện net.core.default_qdiscảnh hưởng đến trình điều khiển giao diện khi nó được tải. Nếu mô-đun hạt nhân được tải trước đó net.core.default_qdiscđã được thay đổi, thì sau này nó sẽ không ảnh hưởng đến nó. Một số giao diện có hành vi thay đổi : các giao diện nhiều hàng sẽ giữ nguyên mqnhưng thay thế các lá của chúng kế thừa mặc định này. lo hoặc veth sẽ không nhận được bất kỳ hàng đợi mặc định nào.

Nếu bạn muốn đảm bảo sysctl được thay đổi trước trình điều khiển, bạn có thể:

  • nó có bị thay đổi trong tập lệnh initramfs không (có thể cần một số chỉnh sửa),

  • đã tải nó từ cmdline hạt nhân chưa. Q / A này cho biết chỉ có thể xảy ra với bất kỳ sysctl tùy ý nào kể từ kernel 5.8 mà bạn đang sử dụng. Vì vậy, về lý thuyết, bạn có thể thêm thứ gì đó vào thông số khởi động (có thể là trong GRUB_CMDLINE_LINUX của GRUB) và quên nó đi:

    sysctl.net.core.default_qdisc=fq_pie
    

    nhưng thực tế điều này chỉ có thể thực hiện được đối với các trình điều khiển được tích hợp sẵn. Nó rất khó có khả năng sch_fq_pieđược biên dịch tích hợp sẵn.

  • trì hoãn việc tải trình điều khiển cho wlp1s0(Tôi không biết phải làm điều này ở đâu)

  • rmmod ath10kvà modprobe ath10kdo đó, mặc định mới được áp dụng.

Dù sao để ngay lập tức thay đổi qdisc của giao diện, chỉ cần xác định qdisc của nó, nó sẽ ghi đè qdisc hạt nhân mặc định, có xử lý dành riêng 0:. Ví dụ:

tc qdisc add dev wlp1s0 handle 1: root fq_pie