В используемом в Ubuntu 11.04 и Fedora 15 Linux-ядре 2.6.38, а также в 2.6.39 и тестовых версиях 3.0-rc наблюдается возрастание энергопотребления на 10-30%. Кроме Phoronix подобная тенденция наблюдалась в тестах издания Tom's Hardware. По предварительным данным, одна из приводивших к повышению энергопотребления проблем связана с изменением в коде поддержки ASPM (Active-State Power Management) для плат PCI Express, который стал активироваться только при сигнализации о поддержке ASPM со стороны BIOS (определенные реализации BIOS указывают, что ASPM не поддерживается, но все равно инициализирует данную поддержку для некоторых устройств). Экспериментальным путем был выявлен обходной путь решения проблемы, который позволяет уменьшить энергопотребление в среднем на 15%. Для решения проблемы систему следует загрузить передав ядру в интерфейсе загрузчика GRUB параметр "pcie_aspm=force".
Открыть /boot/grub/menu.lst и дописать к активной строке "kernel" по аналогии с другими параметрами.
$ cat grub.cfg
# # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #
Это такая фича 2-й версии grub - теперь ему конфиги перегенеряет операционка, на основе данных настроек из /etc/default/grub и скриптов в /etc/grub.d/*
ИМХО слегка оверкилл но упрощает ОСи апгрейд ядер и разобраться вполне можно. Правда grub сам все больше в результате напоминает какую-то операционку.
Обычно спрашивают, как добавить в автозагрузку :)
[ 0.000000] PCIe ASPM is forcedly enabled [ 0.670510] Unable to assume _OSC PCIe control. Disabling ASPM
debian wheezy 2.6.38. Как бороться? На самосборном gentoo 2.6.38, кстати все отлично работало.
Варианты
pcie_aspm.policy=powersave pci=nomsi pci=noaer
$ cat /sys/module/pcie_aspm/parameters/policy default performance [powersave]
$ uname -a Linux tline 2.6.39-2-amd64 #1 SMP Wed Jun 8 11:01:04 UTC 2011 x86_64 GNU/Linux
У меня вообще PCI-E 1.0, так что мне пофиг. :)
> 'Disabling ASPM'. Но в pcie_no_aspm() все равно проверяется aspm_forced == 1, > то включает ASPM.
void pcie_no_aspm(void) { if (!aspm_force) aspm_disabled = 1; }
# dmesg