대기 시간이 짧은 커널을 사용하는 여러 서버에서 Ubuntu 18을 실행하고 있습니다.
chrt
이전에는 특정 네트워크 인터페이스와 관련된 인터럽트에 대해 인터럽트 스레드의 우선순위를 높이는 데 사용했습니다 .
이제 대기 시간이 짧은 커널을 사용하는 Ubuntu 22를 새로 설치하면 스레드로 실행되는 네트워크 카드에 대한 인터럽트가 더 이상 표시되지 않으므로 chrt가 있는 카드의 우선 순위를 높일 수 없습니다.
무엇이 변경되었으며, 저지연 커널을 사용하는 Ubuntu 22에서 네트워크 카드 인터럽트 우선순위를 높이는 방법이 있습니까?
내가 이렇게 하는 이유는 지연되어서는 안되는 10ms 간격으로 다른 컴퓨터와 소량의 데이터를 동기화하는 응용 프로그램의 여러 인스턴스가 있기 때문입니다.
나는 찾았다이것UbuntuStudio에 대한 정보(2014년부터 약간 오래되었지만)threadirqsCONFIG_IRQ_FORCED_THREADING=y
커널 매개변수를 사용하고 있으며 최신 서버의 커널이 로 구축되었지만 및 로 구축되지 CONFIG_IRQ_FORCED_THREADING_DEFAULT=y
않았음 CONFIG_CMDLINE_BOOL=y
을 확인했습니다 CONFIG_CMDLINE="threadirqs"
.
커널을 부팅하는 것만 큼 간단합니까?threadirqs매개변수, 그렇다면 낮은 대기 시간 커널이 부팅되지 않도록 변경된 시기와 이유는 무엇입니까?threadirqs기본적으로?
세부
내 서버는이전 솔루션 작동커널 4.15.0-123-lowlatency를 사용하여 Ubuntu 18.04.3 LTS를 실행합니다.
다음은 네트워크 인터페이스 인터럽트의 우선순위를 높이기 위해 사용하는 단계입니다.
grep eno1 /proc/interrupts
네트워크 인터페이스에 대한 인터럽트 목록을 얻기 위해 실행합니다.eno1
산출:
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를 찾기 위해 실행합니다.eno1
출력: (irqs 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의 조합을 사용하여 이 세 단계를 한 번에 수행합니다.
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를 실행합니다.
처음 두 단계의 결과:
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