Softwareinterrupt

Hallo zusammen

auf einem Superknoten mit mehreren fastd-Instanzen wurden Idle-Anteile von 50% bei einem Load von über 6 beobachtet. Hier als Beispiel eine Aufnahme mit 9% Idle bei 52% Softwareinterrupt

top - 19:25:28 up 52 min,  1 user,  load average: 3,39, 3,63, 3,19
Tasks:  94 total,   8 running,  86 sleeping,   0 stopped,   0 zombie
%Cpu(s): 13,9 us, 25,2 sy,  0,0 ni,  9,3 id,  0,0 wa,  0,0 hi, 51,6 si,  0,0 st

Mutmaßlicher Verursacher ist fastd:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
922 root      20   0  327236   4700   3652 R  47,0  0,5  21:58.23 fastd       
928 root      20   0  261436   4460   3652 S  24,5  0,4   8:03.55 fastd       
940 root      20   0  392608   4608   3716 S  23,8  0,4  11:32.18 fastd       
907 root      20   0  261308   4372   3668 R  19,5  0,4   9:01.01 fastd       
943 root      20   0  523452   4380   3652 S  17,6  0,4   6:25.81 fastd       
910 root      20   0  253112   4356   3652 S  16,2  0,4   5:29.23 fastd       
914 root      20   0  326972   4440   3652 S  14,9  0,4   6:43.47 fastd       
937 root      20   0  253112   4364   3668 R  12,3  0,4   1:58.85 fastd 
925 root      20   0  326844   4360   3668 S   0,7  0,4   0:17.80 fastd       
934 root      20   0  326844   4360   3668 S   0,3  0,4   0:04.99 fastd       

ich nehme an – ich weiß es aber nicht –, dass fastd als Userspace Dämon da was umkopiert …

Ich würde mich über Informationen, Links und Lösungen diesbezüglich freuen und wie Softwareinterrupts minimiert werden können.

Kannst du nicht, weil immer ein Kontext Switch ausgeführt wird, wenn ein Paket von Batman zum fastd geht oder umgekehrt.

Hallo Phip,

ich lehne mich mal ein wenig aus dem Fenster da ich auch nicht so sicher bin in der Materie.

Im Prinzip wird das System angehalten und der Prozessorspeicher in den Ram geladen, wenn ein Interrupt oder ein Software Interrupt ausgelösst wurde. Dies ist in unserem konstukt (Batman/Fastd) mindestens 4 mal der Fall. Dieses nennt man dann auch Context Switching.

Wenn ein Ethernet Paket ankommt (auf der Netzwerkkarte) wird ein Interrupt ausgelösst und der Netzwerkkartentreiber untersucht das Paket (z.B. Checksumme) anschließend wird ein Software Interrupt ausgelösst und das Paket geht an das Userspace Programm Fastd (Context Switch) anschließend geht es wieder an das Batman Modul (Kernel Task - ContextSwitch) und dann nochmal wieder zurück an den Node oder halt ins Internet.
Kommt halt darauf an woher es kam und sohin es gehen soll.

Das einzige was dir da hilft ist mehr Hardware oder auch mehr Rechenleistung!
Leider geht in unserem Konstrukt sehr viel Rechenleistung durch die vielen Software Interrupts „Verloren“
weswegen auch einige Communities den wechsel auf Tunneldigger (L2TP) überlegen (reine Kernel Tasks)
Allerdings haste dann keine Crypto mehr weshalb ich persönlich dem ganzen Kritisch gegenüber stehe. Aber dies ist ein anderer Punkt.

Ich hoffe ich habe jetzt nicht zu viel Blödsin geschrieben?

Gruß
Thomas

1 „Gefällt mir“

Die sinnvolle Lösung würde heissen:
„Wieviel Geld müssen wir einsammeln, damit davon jemand ehrlich bezahlt werden kann, der fastd in ein Kernelmodul verwandelt.“

6 „Gefällt mir“

Um das Rad nicht erneut neu erfinden zu müssen: „Wieviel Geld müssen wir einsammeln, damit jemand $PROTO1 und $PROTO2 so verheiratet, daß es wie fastd genutzt werden kann?“

PROTO1=IPsec, PROTO2=GRETAP wäre ja mein Favorit. Im Grunde braucht’s aber „nur“ einen IPSec-Wrapper um tunneldigger, oder sehe ich das falsch?

Die Lösung für fastd sieht doch eher async IO statt eines Kernelmoduls.

Auch das wäre sicher eine Option, oder beides.

Nur sollte es den Communites durchaus etwas wert sein in Form von blanken Euro.
Denn „Speed verdoppeln“ würde die Anschaffung von schnelleren (teureren) Plasteroutern und auch von schnelleren Fastd-supernodes zum guten Teil überflüssig machen.

Dementsprechend lässt sich da auch ein Business Case entwickeln.
Einen VPN Tunnel werden wir auf absehbarer Zeit in meinem Augen immer brauchen und das am besten mit Crypto.

Wenn man den Begriff dafür nutzen möchte: Ja.
Denn selbst wenn die Entwicklung jetzt 5.000€ kosten würde, Gerechnet auf die Zahl der Supernodes und WR1043 die sich damit sparen lassen.
Bliebe halt nur das Problem, dass die meisten von uns (mich eingeschlossen) lieber Geld für Hardware ausgeben als für Software, schließlich soll sie ja Opensource, und total frei sein… Nicht beachtend, dass die Schreiber der Software auch irgendwie beim Bäcker bezahlen müssen.

Erklär mal bitte, wie Kernel Modul und async IO zusammen sinnvoll genutzt werden könnten.