Liten Linux-förändring ger stor effekt

Permalänk
Medlem
Skrivet av klein:

RHEL och dess klon kör faktiskt Kernel 5.14.0-503.11.*

Ja för version 9. CentOS 10 är nyligen släppt. RHEL 10 är i beta.

Visa signatur

Intel i9-12900K | Asus STRIX Z690-I | 32 GB DDR5-6400 CL30 | AMD Radeon RX 7900 XTX | WD Black SN850 1 TB
Asus ROG Loki SFX-L 750W | SSUPD Meshlicious | Arctic Cooling Freezer II 280 | Alienware AW3423DWF

Permalänk
Medlem

ger det stor effekt eller minskad effekt höhöh

I'll see myself out

Visa signatur

Xeon E5450@3.2ghz
9800GTX+

Permalänk
Medlem

Wow, förklarat så till och med jag förstår det! Tackar för utbildningen

Skrivet av Yoshman:

Linux har sedan väldigt långt tillbaka (NAPI från 2002) växlat mellan att driva nätverkskort med en kombination av IRQ och busy-polling.

Att till 100 % låta applikationer styra polling är bra så långe som applikationer uppför sig, men blir katastrofalt om den inte gör det. Så går inte att köra en sådan modell med mindre än att då helt räkna applikationen som en del av OS-kärnan.

Nyheten här är egentligen otroligt simpel: en till timer.

Processen i NAPI är att NIC ger ett RX IRQ när ett paket kommer in. "Top-half" av IRQ-rutinen maskar då den IRQ-kanalen och schemalägger ett "soft-IRQ" som hanterar paketet. I detta läge kommer alltså inga fler IRQs.

ALLA paket (eller normalt alla paket, finns en övre "budget" när man låter andra saker komma emellan men normalfallet är alla) processas sedan i soft-IRQ. När man är klar slås IRQ på igen.

Här är nyheten. Vid hög last kommer ett nytt IRQ nästan direkt triggas igen, det kommer i praktiken hända innan applikationer haft en chans att beta av allt som redan kommit in -> detta leder till lägre IPC då cacha:ar trashas av frekventa kontext-switchar.

Istället för att direkt slå på IRQ när man processat alla paket startar man nu en timer. Om applikationen är "well-behaved" kan man nu helt driva all nätverkstrafik mot den RX-ringen med IRQ permanent avslaget så länge det kommer paket "tillräckligt snabbt".

Om applikationen får för sig att sluta poll:a av någon anledning triggar timer som slår på IRQ så inte andra applikationer blir lidande. "Worst case tail-latency" begränsas då av denna timer.

Så länge applikationen uppför sig så kommer paket drivas av att den rätt snabbt går in för att kolla efter paket.

Besparingen kommer av att det är mer effektivt att driva trafik med IRQ avslaget vid hög last. Alt. om man kör out-of-kernel polling (t.ex. via DPDK) så är vinsten att detta ger nästan samma prestanda, fast utan extremt hög effekt när det kommer få paket.

Visa signatur

anti-fascist antiX Linux på en MacBook Pro late 2013, Nintendo Switch, Samsung galaxy S23+

Intels fabrik på mark tagen av Israel

Permalänk
Medlem

Sån här utveckling är spännande. Intressant läsning. Tack.
(Håller inte helt med om er beskrivning av IRQ dock

Skrivet av Cheewie:

OT. Hur går det med rapporteringen kring DeepSeek? SweLångsammers!

Den här tråden/nyheten handlar om Linuxkärnan.

Visa signatur

Kontor MacBook Pro 16" M4 Pro, 48GB, 512GB, Predator X38, TB4 dock
UHD ProArt 4070TiS, i5-13600K (U12A), 32GB 3200, Prime Z790 mATX, 2xNVMe, Prime 650 Platinum, Torrent Compact
QHD 1080Ti, i5-8400, ROG B360 mATX, 16GB, 2xSSD, 750W PSU, nåt Fractal-chassi

Permalänk
Medlem

De här är nyheter de och goda sådanna. Slår alla överhypade nyheter om CPU'er och grafikkort.
Uppdateringen är effektiv, permanent och GRATIS för alla.
Tack Linus och alla välgörare!

Permalänk
Medlem
Skrivet av mar3ld:

Sån här utveckling är spännande. Intressant läsning. Tack.
(Håller inte helt med om er beskrivning av IRQ dock

Den här tråden/nyheten handlar om Linuxkärnan.

Jo därför jag skrev OT.

Visa signatur

Antagligen en bättre dator än vad du har!