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 ;-)