
Heute ist mir aufgefallen, dass die HDD-LED meines Desktops blinkt, obwohl keine Prozesse auf die Festplatte (SSD) schreiben oder sie lesen.
Ich habe ein Terminal geöffnet, htop
alle Prozesse ausgeführt und sortiert IO_RATE
. Ich konnte deutlich sehen, dass keiner der Prozesse auf die Festplatte geschrieben oder sie gelesen hat, obwohl die HDD-LED meines Computers immer noch 1 bis 2 Mal pro Sekunde blinkte. Warum könnte das passieren?
Antwort1
Dafür kann es viele Gründe geben. Der wahrscheinlichste Grund ist, dass das Schreiben unter Linux normalerweise als Writeback erfolgt (wobei Seiten im Seitencache gepuffert und später auf die Festplatte geschrieben werden), was nach einer unbegrenzten Zeitspanne passieren kann write()
, während E/A-Zähler normalerweise den unmittelbaren Schreib-/Lesedurchsatz messen.
Ein weiterer Grund ist, dass diese Zähler eigentlich nur wissen, was Linux vorhat (und je nach Zähler schließt das sogar Dinge wie Rückschreiben und I/O-Scheduler-Entscheidungen aus), nicht aber Ihre Festplatte. Viele Festplatten führen unabhängig voneinander Vorgänge aus, die vom Betriebssystem nicht gesehen werden. Ein besonders auffälliges Beispiel – nicht Ihr Fall, aber trotzdem – sind SMR-Festplatten, bei denen die Festplatte auch dann noch funktioniert, wenn das Betriebssystem längst mit dem Schreiben von Daten fertig ist, um Daten aus schnellerem Zwischenspeicher auf die Shingles zu verschieben.
Im Allgemeinen ist die Messung von I/O auf Betriebssystemebene tendenziell ungenau und die verwendeten Zähler entsprechen htop
nicht einmal dem neuesten Stand der Technik. Um näher an die Realität heranzukommen, sollten Sie die Verwendung von cgroup v2 in Betracht ziehen io.stat
, die eine detailliertere und transparentere Berichterstattung bietet.