ataidle Ersatz

Kamikaze

Warrior of Sunlight
Teammitglied
Mit kern.hz=200 und C3 ist die Festplatte der letzte Geräuschverursacher in meinem Notebook. Die dreht unermüdlich auch nach Stunden des nichts tun vor sich hin.

Deshalb brauche ich so etwas wie ataidle, aber das funktioniert leider nicht mit dem ATA über SCSI Treiberkram. Kennt da jemand etwas?

Ein make quicksearch key=idle hat nichts zum Vorschein gebracht. Vielleicht geht es auch irgendwie mit smartctl, ich habe in der Manual Page aber nichts gefunden.
 
Meinst Du, dass Du den ahci-Treiber verwendest? Dann schau mal in "man camcontrol".

"camcontrol standby [device id] [generic args] [-t time]"
 
Vielen Dank erst mal. Als ich standby -t 900 aufgerufen habe ist die Platte sofort runtergefahren. So ist das natürlich nicht gedacht, sie soll ja erst nach 15 Minuten Inaktivität in Standby gehen. Ich bin mal gespannt ob das klappt aber diese Verhalten betrachte ich erst einmal als Bug.
 
Im FreeBSD-Forum gibt es einen Thread dazu.

Das Advanced Power Management funktioniert auf unterstützen Geräten bei mir einwandfrei. Festgestellt habe ich, dass ein tiefer Wert (die 60 unten, in hex) dazu führt, dass die Platte schneller ausgeht als bei einem höheren Wert:

Code:
camcontrol cmd adaX -a "EF 05 00 00 00 00 00 00 00 00 60 00"
ergeben bei mir ca. 4 Minuten.

mousaka
 
ataidle hatte bei mir nur dann nicht funktioniert, wenn ich einen idle vor dem standby stehen hatte.
Also etwas wie -I 5 -S 10
Wenn ich das I weglasse, geht dann der S. Ich vermutete, dass die Platte auch idled, aber dann eben keinen Standby mehr annehmen kann. Es ist eine 2.5 Zoll SATA in einem EEE 1000HE, genauer weiß ich es grad nicht.
Zusätzlich habe ich die syslogs alle abgeschaltet und die Festplatte aus dem Hal-Pol rausgenommen wie hier beschrieben: http://www.freebsd.org/gnome/docs/halfaq.html
aber das kommt bei dir ja nicht vor.
Bevor ich die logs ausgeschaltet hatte, legte ich die auf einen Ordner nach /tmp, was bei mir als tempfs im Ram liegt. So konnte ich dann sehen, wann die Platte ruhiger wurde.
Meine Platte hat nur eine einzige Partition plus SWAP, wenn ich mich richtig erinnere.

Weil ich oft Daten nur aus meinem Netzwerk beziehe (etwa Filme oder Musik) oder von USB-Sticks spiele, kommt dann die Platte tatsächlich zur Ruhe und das macht da auch Sinn.
 
Zu camcontrol suspend.

Also, ich habe da mal nachgefragt. Anscheinend ist die Spezifikation recht missverständlich und idle und suspend machen das gleiche, bis auf das sofortige Ausschalten bei suspend. Also einfach nur idle verwenden.

Nach meiner Erfahrung gibt es aber immer irgend etwas, dass die Platte wieder sofort wieder aufweckt. Ich beobachte jetzt einfach mal wie sich das entwickelt nachdem ich ein beherztes
# mount -at ufs -uo noatime
abgesetzt habe.
 
Bedenke, dass der Softupdates-Syncer die Platte mit einer Wahrscheinlichkeit von >50% alle 30 Sekunden wieder aus dem Schlaf reißt. noatime senkt die Wahrscheinlichkeit, bringt aber meiner Erfahrung nach nicht wirklich viel. Wirksamer ist es, zumindest noch syslogd auf fifolog(1) umzustellen oder gleich ganz auf eine RAM-Disk zu verbannen. Auch sendmail und cron sind durch ihre ständiges Gepolle da klassische Ansatzpunkte...
 
Sendmail habe ich abgeschaltet. Syslog ist natürlich ein Punkt, aber wenn ich wirklich nichts mache, passiert ja auch da nichts.

Das mit dem Softupdate Syncer peile ich nicht wirklich, was synct der denn, wenn nichts geschrieben wird?

Warum fifolog die Schreibfrequenz ändert scheint mir auch schleierhaft. Aber in der man-page steht ja auch, dass weniger geschrieben wird.

-- UPDATE ---
Hab's gefunden:
FIFOLOG(1) schrieb:
Writes happen whenever the output buffer is filled with compressed data
or when either of two timers expire, forcing a partially filled buffer to
be written.
Mir scheint man muss da noch ordentlich an -w und -s drehen um ansprechende Ergebnisse zu erzielen.
 
Zuletzt bearbeitet:
Wirksamer ist es, zumindest noch syslogd auf fifolog(1) umzustellen oder gleich ganz auf eine RAM-Disk zu verbannen.

Wenn man ein Bindestrich "-" vor den Pfad in die syslog.conf setzt, wird nicht jedesmal auf die Platte synchronisiert.

Beispiel:
Code:
mail.info                                       [B]-[/B]/var/log/maillog
cron.*                                          [B]-[/B]/var/cron/log

mousaka
 
kamikaze schrieb:
Das mit dem Softupdate Syncer peile ich nicht wirklich, was synct der denn, wenn nichts geschrieben wird?

Nichts. Das Problem ist, dass der Syncer bekannterweise kaputt ist. Er hat ein paar interessante Bugs - man arbeitet an einer kompletten Reimplementierung, es gibt da auch schon Patches. Das Ding hat eine gewisse Neigung dazu neu hinzugekommene aber noch unveränderte Vnodes mit den Inodes auf der Platte abzugleichen.
 
Das verzögert das Schreiben dann wie lange?
So wie ich das Verstehe, erzwingt syslog bei jedem Eintrag in ein Log-File einen sync. Damit wird wohl sichergestellt, dass möglichst alle Meldungen im Fehlerfall in den Log-Files vorhanden sind.
Mit dem Bindestrich wird das Synchronisieren auf die Platte dem Betriebssystem überlassen, effektive Zeiten kenne ich da nicht. Das Risiko besteht, dass im Fehlerfall die letzten und somit wohl interessanten Einträge evtl. nicht auf die Platte geschrieben werden.

mousaka
 
Ich habe jetzt mal den Rundumschlage gemacht und folgendes an meine fstab angehängt:
Code:
tmpfs			/var/log	tmpfs	rw		0	0
tmpfs			/var/run	tmpfs	rw		0	0
tmpfs			/tmp		tmpfs	rw		0	0

Das erspart mir die Rumkonfiguriererei an syslog.
 
Code:
tmpfs                   /tmp            tmpfs   rw,mode=1777 2 0

meine fstab sieht für /tmp so aus, weil ich das sticky Bit auch über reboots hinaus benötige.
 
das ist richtig, aber lediglich mit den Standard Mount Optionen. /tmp wird also mit tmpfs bei jedem Boot neu angelegt, wird aber nicht das sticky Bit haben, welches es bei einer Standardinstallation jedoch hätte.
Ich meinte damit dass tmpfs sich keinerlei Rechte oder Mountoptionen merkt, es sei denn sie werden in der fstab fest eingetragen. Auch wird tmpfs nicht automatisch das sticky Bit setzen, nur weil ein Mountpoint /tmp heißt.
 
Sagt mal, gibts denn bei camcontrol auch ne Möglichkeit den aktuell angewandten Standby-Timer Wert auszulesen?

sowie z.B. bei atacontrol:
Code:
[~]# atacontrol spindown ad0
ad0: idle spin down disabled

[~]# atacontrol spindown ad0 60
[~]# atacontrol spindown ad0
ad0: spin down after 60 seconds idle


Grüße
 
Kamikaze: willst du wirklich das dir Logs das RAM komplett füllen können? Du hast ja nicht einmal die Größe beschränkt.

Auf einem syslogd mit XORP hatte ich alleine mal >10MB/s an Datenmüll in -/var/log/messages, weil sich XORPs Prozesse alle gleichzeit in ner Endlosschleife drüber beschwerten, weil sie ihren Elternprozess verloren hatten. Das war nicht lustig und hat /var voll laufen lassen.
 
Zuletzt bearbeitet:
Sagt mal, gibts denn bei camcontrol auch ne Möglichkeit den aktuell angewandten Standby-Timer Wert auszulesen?

Wohl nicht so wie bei atacontrol, aber habe da was gefunden:
Code:
camcontrol cmd ada0 -a "E5 00 00 00 00 00 00 00 00 00 00 00" -r -
Dr_Sweety schrieb:
Value of the next to last hex code: Description
00h: Device is in Standby mode.
40h: Device is in NV Cache Power Mode and the spindle is spun down or spinning down.
41h: device is in NV Cache Power Mode and the spindle is spun up or spinning up.
80h: Device is in Idle mode.
FFh: Device is in Active mode or Idle mode.
Quelle:
http://forums.freebsd.org/showpost.php?p=98640&postcount=27
Dr_Sweety hat da auch Beispiele und Scripte, lohnt sich zu lesen.
 
Zurück
Oben