低遅延カーネルを使用して、複数のサーバーで Ubuntu 18 を実行しています。
chrt
以前は、特定のネットワーク インターフェイスに関連する割り込みの割り込みスレッドの優先度を上げるために使用していました。
現在、低遅延カーネルを使用した Ubuntu 22 の新規インストールでは、スレッドとして実行されているネットワーク カードの割り込みが表示されなくなり、chrt を使用してそれらの優先度を上げることができなくなります。
何が変わったのでしょうか? また、lowlatenct カーネルを搭載した Ubuntu 22 でネットワーク カードの割り込み優先度を上げる方法はありますか?
これを実行する理由は、遅延してはならない 10 ミリ秒間隔で他のコンピューターと少量のデータを同期するアプリケーションのインスタンスが複数あるためです。
私は見つけたこれUbuntuStudioに関する情報(2014年のものですが、少し古いです)スレッドIRQカーネル パラメータを調べてみると、新しいサーバ上のカーネルは でビルドされているがCONFIG_IRQ_FORCED_THREADING=y
、とCONFIG_IRQ_FORCED_THREADING_DEFAULT=y
ではビルドされていないことが確認されています。CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="threadirqs"
カーネルを起動するだけでスレッドIRQパラメータもしそうなら、いつ、なぜ低レイテンシカーネルが起動しないように変更されたのか?スレッドIRQデフォルトですか?
詳細
私のサーバー以前のソリューションは機能するUbuntu 18.04.3 LTS、カーネル4.15.0-123-lowlatencyを実行
ネットワーク インターフェイス割り込みの優先度を上げるために使用する手順は次のとおりです。
grep eno1 /proc/interrupts
ネットワークインターフェースの割り込みリストを取得するために実行しますえの1
出力:
46: 19627 486510106 1600726600 752055110 1667993661 1758831968 1471240837 895245906 658188895 458440425 918559817 1494584384 1650824561 1492836078 1214143068 920349210 IR-PCI-MSI 5767169-edge i40e-eno1-TxRx-0
47: 782983498 3867361290 1350470347 1488832628 1644524179 1306935370 2202471485 885906069 266079923 769050734 767000710 1199122348 1933889985 2475859304 880359145 1207562098 IR-PCI-MSI 5767170-edge i40e-eno1-TxRx-1
48: 487247958 557149515 2436993704 1327150410 2327637329 1692350382 1160439225 1234994234 425076063 640500055 1555726813 1469038634 2133556615 1260984085 1076406628 1141316582 IR-PCI-MSI 5767171-edge i40e-eno1-TxRx-2
49: 1143028283 802247216 842065588 1507113921 1450442442 1285188073 1414989498 1386700444 961900607 949612962 1176201048 996374473 1392801596 1501055021 1244839988 1568153886 IR-PCI-MSI 5767172-edge i40e-eno1-TxRx-3
50: 668676162 585775185 627035622 560691459 545566733 534335154 675644369 619390835 602253370 611090233 610683285 552978104 558929823 827257425 555723069 751315724 IR-PCI-MSI 5767173-edge i40e-eno1-TxRx-4
51: 293791983 293018539 290310300 284911609 302624294 171231086 295128963 277943781 299153596 305718023 306559090 265176440 265877422 330072276 275946899 322208126 IR-PCI-MSI 5767174-edge i40e-eno1-TxRx-5
52: 191406211 164689451 184092472 163124351 197416416 147238980 150711931 166047824 174857188 176597379 163302040 163989899 169136092 206831749 154774311 195388230 IR-PCI-MSI 5767175-edge i40e-eno1-TxRx-6
53: 154062755 152443945 151052334 133925954 161462702 130698860 164068832 88730046 146570114 152839498 140082079 134023798 139525722 178502808 136857972 164157076 IR-PCI-MSI 5767176-edge i40e-eno1-TxRx-7
54: 689819152 457848749 1706899545 1350792167 1009016882 750940295 1280794513 1964042727 4293839311 604650430 1394985726 1390827662 1403478542 1032557167 1258596213 1421573353 IR-PCI-MSI 5767177-edge i40e-eno1-TxRx-8
55: 561179546 1569329752 1142403865 1952025068 1831162021 1786111309 1819812537 1726432246 809350013 3510981566 1252176327 1188689474 2184195381 1689746731 1808756473 1998075218 IR-PCI-MSI 5767178-edge i40e-eno1-TxRx-9
60: 922953009 535440685 1433001681 1370014373 1542680223 1564958146 1905615201 2245129577 606607580 751437652 653813572 1648944839 1339662143 2748851364 1328493925 2197584768 IR-PCI-MSI 5767179-edge i40e-eno1-TxRx-10
61: 915173255 898646194 818454435 975220367 1436058787 1258590833 1222669978 1475644158 955884853 1048337605 1028501060 1229229809 1375764724 1619404100 1174614194 1626915747 IR-PCI-MSI 5767180-edge i40e-eno1-TxRx-11
62: 663129689 560699700 659990638 564915959 716701151 537167244 709668792 653540652 643175469 609563694 657141242 551578294 496276894 826134713 584425798 782807812 IR-PCI-MSI 5767181-edge i40e-eno1-TxRx-12
63: 301178832 272290237 297349011 271058986 300930906 219283819 308344403 269722445 297793600 300198211 271567742 257075242 257586638 275439840 258617424 331559250 IR-PCI-MSI 5767182-edge i40e-eno1-TxRx-13
64: 161271542 160600034 162911736 135003940 159159336 126317895 145054883 142236108 153342852 158784173 149385736 130987700 145150304 179008100 100121849 168255307 IR-PCI-MSI 5767183-edge i40e-eno1-TxRx-14
65: 174086138 162484310 163432318 142315712 164872478 136966716 168251078 137840006 150045153 156520410 143270315 134481889 152034193 184135755 140295604 167224365 IR-PCI-MSI 5767184-edge i40e-eno1-TxRx-15
ps -el | grep irq
各irqスレッドのpidを見つけるために実行しますえの1
出力: (IRQ 46-65 に一致する関連行のみを表示していますが、他にもたくさんあります)
1 R 0 1255 2 1 9 - - 0 - ? 6-01:09:56 irq/46-i40e-eno
1 S 0 1256 2 1 9 - - 0 - ? 5-13:32:39 irq/47-i40e-eno
1 S 0 1257 2 0 9 - - 0 - ? 5-04:09:18 irq/48-i40e-eno
1 S 0 1259 2 0 9 - - 0 - ? 3-12:50:35 irq/49-i40e-eno
1 S 0 1261 2 0 9 - - 0 - ? 1-19:03:44 irq/50-i40e-eno
1 S 0 1262 2 0 9 - - 0 - ? 19:55:05 irq/51-i40e-eno
1 S 0 1263 2 0 9 - - 0 - ? 11:48:06 irq/52-i40e-eno
1 S 0 1264 2 0 9 - - 0 - ? 09:59:36 irq/53-i40e-eno
1 S 0 1265 2 0 9 - - 0 - ? 5-09:23:00 irq/54-i40e-eno
1 S 0 1266 2 0 9 - - 0 - ? 4-19:20:49 irq/55-i40e-eno
1 S 0 1267 2 0 9 - - 0 - ? 4-19:24:25 irq/60-i40e-eno
1 S 0 1268 2 0 9 - - 0 - ? 3-10:21:49 irq/61-i40e-eno
1 S 0 1269 2 0 9 - - 0 - ? 1-20:29:13 irq/62-i40e-eno
1 S 0 1270 2 0 9 - - 0 - ? 19:24:51 irq/63-i40e-eno
1 S 0 1271 2 0 9 - - 0 - ? 10:11:11 irq/64-i40e-eno
1 S 0 1273 2 0 9 - - 0 - ? 10:31:14 irq/65-i40e-eno
- このネットワーク インターフェイスの各 irq スレッドに対して、
chrt -p 80 <thread-pid>
たとえばchrt -p 80 1255
irq/46 を実行します。
実際には、grep、awk、xargs を組み合わせて使用し、これら 3 つの手順を 1 つで実行します。
grep $NIC /proc/interrupts \
| awk '{print substr($1, 0, length($1) - 1);}' \
| xargs -I% sh -c "ps -e | grep irq/%-" \
| awk '{print $1;}' \
| xargs -I% sh -c "echo irq PID %; chrt -p 80 %"
me@myserver:~$ grep CONFIG_IRQ_FORCED_THREADING /boot/config-4.15.0-123-lowlatency
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_FORCED_THREADING_DEFAULT=y
me@myserver:~$ grep CONFIG_CMDLINE /boot/config-4.15.0-123-lowlatency
CONFIG_CMDLINE_PARTITION=y
# CONFIG_CMDLINE_BOOL is not set
新しいサーバーこの解決策が機能しない場合カーネル5.15.0-79-lowlatencyでUbuntu 22.04.2 LTSを実行する
最初の 2 つのステップの結果:
grep eno4 /proc/interrupts
出力:
240: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1030184410 0 IR-PCI-MSI 5249025-edge i40e-eno4-TxRx-0
241: 0 0 0 0 0 0 0 0 0 0 0 0 1342657199 0 0 0 IR-PCI-MSI 5249026-edge i40e-eno4-TxRx-1
242: 0 0 1 1007985709 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI 5249027-edge i40e-eno4-TxRx-2
243: 0 995307412 0 21 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI 5249028-edge i40e-eno4-TxRx-3
244: 0 0 0 0 16 0 1231037185 0 0 0 0 0 0 0 0 0 IR-PCI-MSI 5249029-edge i40e-eno4-TxRx-4
245: 0 0 0 0 782521466 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI 5249030-edge i40e-eno4-TxRx-5
246: 1035173010 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 IR-PCI-MSI 5249031-edge i40e-eno4-TxRx-6
247: 0 0 0 0 0 0 0 0 0 0 0 930082293 0 0 0 0 IR-PCI-MSI 5249032-edge i40e-eno4-TxRx-7
248: 0 0 0 0 0 0 0 762559502 1 0 0 0 0 0 0 0 IR-PCI-MSI 5249033-edge i40e-eno4-TxRx-8
249: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 793943748 0 IR-PCI-MSI 5249034-edge i40e-eno4-TxRx-9
250: 0 0 0 0 0 0 0 0 0 0 12 0 998551326 0 0 0 IR-PCI-MSI 5249035-edge i40e-eno4-TxRx-10
251: 0 0 0 0 0 0 0 0 0 0 975747642 1 0 0 0 0 IR-PCI-MSI 5249036-edge i40e-eno4-TxRx-11
252: 0 1342889081 0 0 0 0 0 0 0 0 0 0 216 0 0 0 IR-PCI-MSI 5249037-edge i40e-eno4-TxRx-12
253: 0 0 0 0 0 0 0 0 0 0 0 0 0 14 0 818489097 IR-PCI-MSI 5249038-edge i40e-eno4-TxRx-13
254: 0 0 0 0 1177974058 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI 5249039-edge i40e-eno4-TxRx-14
255: 0 0 942945250 0 0 0 0 0 0 0 0 0 0 0 0 27 IR-PCI-MSI 5249040-edge i40e-eno4-TxRx-15
ps -el | grep irq
出力:
1 S 0 14 2 0 70 -10 - 0 - ? 00:06:33 ksoftirqd/0
1 S 0 23 2 0 70 -10 - 0 - ? 00:14:18 ksoftirqd/1
1 S 0 29 2 0 70 -10 - 0 - ? 00:30:44 ksoftirqd/2
1 S 0 35 2 0 70 -10 - 0 - ? 00:03:54 ksoftirqd/3
1 S 0 41 2 0 70 -10 - 0 - ? 00:09:49 ksoftirqd/4
1 S 0 47 2 0 70 -10 - 0 - ? 00:02:08 ksoftirqd/5
1 S 0 53 2 0 70 -10 - 0 - ? 00:06:32 ksoftirqd/6
1 S 0 59 2 0 70 -10 - 0 - ? 00:05:31 ksoftirqd/7
1 S 0 65 2 0 70 -10 - 0 - ? 00:03:34 ksoftirqd/8
1 S 0 71 2 0 70 -10 - 0 - ? 00:00:29 ksoftirqd/9
1 S 0 77 2 0 70 -10 - 0 - ? 00:04:11 ksoftirqd/10
1 S 0 83 2 0 70 -10 - 0 - ? 00:02:47 ksoftirqd/11
1 S 0 89 2 0 70 -10 - 0 - ? 00:13:01 ksoftirqd/12
1 S 0 95 2 0 70 -10 - 0 - ? 00:01:02 ksoftirqd/13
1 S 0 101 2 0 70 -10 - 0 - ? 00:06:02 ksoftirqd/14
1 S 0 107 2 0 70 -10 - 0 - ? 00:06:08 ksoftirqd/15
1 I 0 197 2 0 60 -20 - 0 - ? 00:00:00 vfio-irqfd-clea
4 S 0 924 1 0 80 0 - 20764 - ? 00:10:46 irqbalance
カーネルビルドパラメータ:
me@myserver:~$ grep CONFIG_IRQ_FORCED_THREADING /boot/config-5.15.0-79-lowlatency
CONFIG_IRQ_FORCED_THREADING=y
me@myserver:~$ grep CONFIG_CMDLINE_ /boot/config-5.15.0-79-lowlatency
# CONFIG_CMDLINE_BOOL is not set
CONFIG_CMDLINE_PARTITION=y