Użyj reguł udev, aby uzyskać stałe oszczędności energii, skonfiguruj ustawienia bezpośrednio u źródła, zamiast tworzyć skrypty lub polegać na możliwych niezainstalowanych pakietach. Tak więc, jak tylko sprzęt zostanie dodany przez udev
twoje ustawienia są stosowane.
Prawidłowa udev
reguła powoduje, że ustawienia nie mają zastosowania, gdy nie ma tam sprzętu, dzięki czemu konfiguracja jest bardziej przenośna. I dowiadujesz się więcej o wewnętrznych działaniach jądra Linux :-). Konfiguracja wykonana w ten sposób, obowiązuje również, gdy nie działa na baterii.
Przykład dostrajania Enable SATA link power Managmenet for host0
. Sugeruje się:
# echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy'`
To już daje wyobrażenie o tym, gdzie znajduje się sprzęt: w / sys / class / scsi_host. Możesz to sprawdzić za pomocą:
# udevadm info -a -p /sys/class/scsi_host/host?
…
looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0':
KERNEL=="host0"
SUBSYSTEM=="scsi_host"
…
ATTR{eh_deadline}=="0"
ATTR{link_power_management_policy}=="max_performance"
ATTR{host_busy}=="0"
Lepiej nie dotykaj systemowych reguł udev w /lib/udev/rules.d/ i utwórz własny plik reguł udev na poziomie około 60 w /etc/udev/rules.d/. Na przykład za pomocą edytora nano:
$ nano /etc/udev/rules.d/60-power.rules
Niektóre inne przykłady piszą reguły, takie jak:
KERNEL=="host[0-5]", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}="min_power"
Powiedziałbym „nie” i uczyń swoją regułę jeszcze lepszą, stosując ją tylko wtedy, gdy polityka zarządzania mocą łącza jest ustawiona na max_performance. Spójrz na małą różnicę (poszukaj znaku podwójnego równania):
KERNEL=="host[0-5]", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}=="max_performance", ATTR{link_power_management_policy}="min_power"
Sprawdź, czy rządzisz udevadm test /devices/…
:
# udevadm test /devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0/link_power_management_policy
calling: test
version 204
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
=== trie on-disk ===
tool version: 204
file size: 5660180 bytes
header size 80 bytes
strings 1265196 bytes
nodes 4394904 bytes
load module index
read rules file: /lib/udev/rules.d/40-crda.rules
read rules file: /lib/udev/rules.d/40-gnupg.rules
read rules file: /lib/udev/rules.d/40-hyperv-hotadd.rules
read rules file: /lib/udev/rules.d/42-usb-hid-pm.rules
read rules file: /lib/udev/rules.d/50-firmware.rules
read rules file: /lib/udev/rules.d/50-udev-default.rules
read rules file: /lib/udev/rules.d/55-dm.rules
read rules file: /lib/udev/rules.d/60-cdrom_id.rules
read rules file: /lib/udev/rules.d/60-keyboard.rules
read rules file: /lib/udev/rules.d/60-persistent-alsa.rules
read rules file: /lib/udev/rules.d/60-persistent-input.rules
read rules file: /lib/udev/rules.d/60-persistent-serial.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-dm.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules
read rules file: /lib/udev/rules.d/60-persistent-storage.rules
read rules file: /lib/udev/rules.d/60-persistent-v4l.rules
read rules file: /etc/udev/rules.d/60-power.rules
read rules file: /lib/udev/rules.d/61-accelerometer.rules
read rules file: /lib/udev/rules.d/64-btrfs.rules
read rules file: /etc/udev/rules.d/70-persistent-net.rules
read rules file: /lib/udev/rules.d/70-power-switch.rules
read rules file: /lib/udev/rules.d/70-uaccess.rules
read rules file: /lib/udev/rules.d/71-biosdevname.rules
read rules file: /lib/udev/rules.d/71-seat.rules
read rules file: /lib/udev/rules.d/73-idrac.rules
read rules file: /lib/udev/rules.d/73-seat-late.rules
read rules file: /lib/udev/rules.d/75-net-description.rules
read rules file: /lib/udev/rules.d/75-persistent-net-generator.rules
read rules file: /lib/udev/rules.d/75-probe_mtd.rules
read rules file: /lib/udev/rules.d/75-tty-description.rules
read rules file: /lib/udev/rules.d/78-graphics-card.rules
read rules file: /lib/udev/rules.d/78-sound-card.rules
read rules file: /lib/udev/rules.d/80-drivers.rules
read rules file: /lib/udev/rules.d/85-hdparm.rules
read rules file: /lib/udev/rules.d/85-keyboard-configuration.rules
read rules file: /lib/udev/rules.d/85-regulatory.rules
read rules file: /lib/udev/rules.d/95-udev-late.rules
rules contain 24576 bytes tokens (2048 * 12 bytes), 11335 bytes strings
1814 strings (22027 bytes), 1179 de-duplicated (11328 bytes), 636 trie nodes used
ATTR '/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0/link_power_management_policy' writing 'min_power' /etc/udev/rules.d/60-power.rules:1
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0
SUBSYSTEM=scsi_host
USEC_INITIALIZED=1203444595
unload module index
Nie mogę znaleźć sposobu na zastosowanie reguły, więc w tym przypadku zrestartowałem komputer, aby zastosować nowo utworzoną regułę udev.
sudo
do edycji pliku.