Hallo!
Problem in Kurzfassung: Wieso blockieren auf I/O wartende Prozesse das
ganze System?
THEORIE:
Wait bezeichnet meines Wissens nach den Zustand, dass ein auf einer CPU
laufender Prozess auf den Abschluss einer I/O-Operation wartet. Wenn
Bedarf besteht kann er die Time Slice abgeben und ein anderer Prozess
kann rechnen. Wenn ich also im Hintergrund was kopiere stört mich das
beim Arbeiten kaum.
PRAXIS - allgemein:
Wenn auf einer CPU ein Prozess in Wait steht, ist sie für weitere Arbeit
gesperrt. Wenn man I/O betreibt ist das System in der Zeit nur mehr sehr
eingeschränkt nutzbar, die Latenzen stören im Desktop-Einsatz.
PRAXIS - Quad Core und dmcrypt:
Wenn ich eine Vielzahl von Dateien (im MB-Bereich) auf eine
verschlüsselte Platte kopiere scheint der kryptd mehrere Threads zu
erzeugen, die allesamt im Wesentlichen mit Wait beschäftigt sind.
Kumuliert belegt der kcryptd nur ca. 70% eines einzelnen Kerns, trotzdem
sind durch ihn alle Kerne mit Wait belegt und das normale Arbeiten wird
erheblich gestört (Editor, Terminal, Musikplayer, Mailclient reagieren
sehr langsam, frieren sogar immer wieder ganz ein).
Wieso führen Threads/Prozesse/Kerne in Wait-State zum Blockieren des
ganzen Systems? Liege ich mit obigem Theorie-Abschnitt (was Wait sein
sollte) falsch? Welche anderen Ursachen könnte es noch geben?
Eine (entsprechend längere) Mail, wie ich zu meiner Diagnose gelangt
bin, schicke ich gleich nach.
Ich bin mit meinem Latein am Ende, will mich aber mit einem sich selbst
einfrierenden System auf ordentlicher Hardware nicht zufriedengeben.
Vielen Dank schonmal im voraus & Beste Grüße
Fabian
PS: ich entsinne mich noch der Tage, da ich unter auf'm 486 (25 MHz, 8
MB RAM, Linux 1.0) im Hintergrund tars ein- und auspacken konnte, ohne
das mich das beim Programmieren unter X gestört hat - das waren noch
Zeiten, als man sich wirklich sicher sein konnte, das bessere OS zu
haben ;-)