Накратко, в тази статия ще ви покажа как да активирате някои енергоспестяващи функции на видеокартата ви ако тя е на на nVidia и използвате Убунту с ограниченият(restricted) драйвер за такива видеокарти.
(забележка: това е нова и допълнена версия на статията от октомври 2008)

(Ограниченият драйвер се инсталира от „Система“ -> „Администриране“ -> „Hardware drivers“ (или „Мениджър на ограничените драйвери“ – зависи с коя версия на Убунту сте).

Повечето нови (а и не чак толкова нови) видеокарти на nVidia притежават една полезна функция, наречена Powermizer. Тя се състои в това, че честотите на ядрото и паметта (на видеокартата) се регулират автоматично в определени граници, в зависимост от натоварването. За настолни компютри е спорно колко това е полезно, но при лаптопите може да бъде от голяма полза.
Реално, ако я използвате, не би трябвало да усетите разлика в скоростта на работа, а енергопотреблението може да се понижи с до няколко вата – примерно, да си спечелите още половин час работа от батерия с лаптопа. Не е никак малко, нали? Плюс това, по този начин лаптопът ще се „напича“ много по-малко и ще е по-безшумен, тъй като и вентилаторът който охлажда видеокартата ще работи на по-ниски обороти – поне докато не пуснете някое тежко 3D приложение. С Compiz няма да имате проблеми – би трябвало дори когато той е активен, пак да сте с понижено енергопотребление (относно Compiz ще ви покажа и една друга настройка, но това – по-късно).

И така, първо трябва да се уверите че видеокартата ви поддържа Powermizer. Можете да видите това, като си пуснете програмата nvidia-settings, от „Система“ -> „Администриране“ -> „NVIDIA X Server Settings“. Ако я нямате в менюто, инсталирайте пакета nvidia-settings – от Synaptic, или чрез команда в терминал

sudo apt-get install nvidia-settings

След като сте я пуснали, вижте дали в списъка с опции в лявата страна на прозореца има Powermizer:

Ако го няма – ами… просто спрете да четете тази статия, защото явно видеокартата ви не го поддържа.
Такаа… още ли сте тук? Ако сте тук – продължаваме!
За да активирате Powermizer, трябва да добавите една опция във конфигурационният файл на Xorg – /etc/X11/xorg.conf. За целта трябва да го отворите в обикновен текстов редактор, и да сте с административни права. В примера аз използвам редактора geany, но вие може да използвате gedit, тъй като най-вероятно при вас ще е инсталиран той. И така, натиснете ALT+F2 от клавиатурата, за да ви се появи диалоговият прозорец „Стартиране на програма“. В него напишете „gksu gedit /etc/X11/xorg.conf“ (или „gksu geany /etc/X11/xorg.conf“ – както е в моя случай) и натиснете бутона „Стартиране“:

Ще ви се отвори желаният файл. В него намерете мястото където пише Section „Screen“. На нов ред, след редът на който пише DefaultDepth (или някъде там), напишете един от следните редове, в зависимост от ефекта който искате да постигнете:

на батерии – адаптивно бързодействие (средно енергоспестяване), от мрежата – максимално (минимално енергоспестяване):

 Option        "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3"

на батерии – минимално бързодействие (максимално енергоспестяване), от мрежата – максимално бързодействие (минимално енергоспестяване):

 Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x1"

на батерии – минимално бързодействие (максимално енергоспестяване), от мрежата – адаптивно бързодействие (средно енергоспестяване) – най-удачният режим:

 Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1"

адаптивно бързодействие за всички видове захранване:

 Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3333"

Може да експериментирате с тях, за да видите с коя как работи. Като пояснение ще напиша какво означава всеки един от режимите на бързодействие:

  • минимално бързодействие – видаокартата винаги работи на минимална честота, което я прави бавна, но пести доста енергия
  • адаптивно бързодействие – честотата на видеокартата зависи от натоварването – ако пуснете само прости 2-Д приложения, честотата ще е предимно минимална или средна, и ще се повиши до максимум само ако се налага (т.е. пуснете някое 3-Д приложение, примерно Compiz)
  • максимално бързодействие – честотата винаги е максимална, и всичко работи с максимална бързина. Видеокартата грее и харчи много енергия. Но е бърза.

Запишете файла, и рестартирайте Xorg чрез клавишната комбинация CTR+ALT+BACKSPACE (като преди това си запишете всички незаписани документи върху които евентуално работите в момента…). След рестартирането на Xorg, ще ви посрещне екранът за вход – въведете си името и паролата, и готово.
Сега си пуснете пак програмата nvidia-settings, отидете на секцията Powermizer, и обърнете внимание коя честота е активна под надписа Performace levels:

В зависимост от настройките които сте избрали, ще е активна различна честота. Не обръщайте внимание че на снимката под „Memory clock“ пише 0. Това е така, понеже видеокартата на лаптопа ми е със споделена памет (т.е. взема от системната, и не разполага със собствена).
Така.

Следващият трик който ще ви покажа, се състои в добавянето на опцията „OnDemandVBlankInterrupts. Добавете я на нов ред, след опцията RegistryDwords, която добавихте преди малко. Редът трябва да е следния:

Option "OnDemandVBlankInterrupts" "True"

След като сте я добавили, трябва пак да рестартирате Xorg.
В режим на енергоспестяване тази опция ще намали събужданията на процесора от драйвера на nvidia с до 60 пъти (което означава че ще седи повече време в режим на изчакване и ще пести повече енергия).
Ето как изглежда секцията „Screen“ на моят xorg.conf след тези промени:

Section "Screen"
    Identifier    "Default Screen"
    Monitor       "Configured Monitor"
    Device        "Configured Video Device"
    Option        "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3"
    Option        "OnDemandVBlankInterrupts" "True"
EndSection

Забележка: ако тези опции не сработят, опитайте да ги преместите в секцията „Device“ (в която пише Driver „nvidia“ – сложете ги след този ред). И пак – рестартирайте Xorg.

Ако използвате 3D ефекти на прозорците, трябва от настройките на Compiz да изключите вертикалната синхронизация, иначе OnDemandVBlankInterrupts опцията няма да има ефект. По принцип, ако имате инсталиран CompizConfig Settings Manager, може да я изключите от там. Но по подразбиране той не е инсталиран, и за това ще ви покажа как да го направите с gconf-editor. За целта натиснете клавишите ALT+F2, в текстовото поле въведете gconf-editor и натиснете бутона „Стартиране“:

В прозореца който ви се отваря, намерете ключа /apps/compiz/general/screen0/options (в левия панел), и от дясно намерете опцията която се казва „sync_to_vblank“. Ако до нея има отметка – махнете я:

Затворете програмата, и за всеки случай рестартирайте Xorg по познатия начин.

Това е всичко!

Забележка: ако объркате нещата в xorg.conf, може изобщо да не може да стигнете до графична среда! За това преди да правите промените, за всеки случай си направете едно резервно копие на файла, с командата

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup

В случай на „авария“, влезте в системата в терминален режим, изпълнете командата

sudo cp /etc/X11/xorg.conf.backup /etc/X11/xorg.conf

и рестартирайте. Би трябвало всичко да се оправи.
Ако се сблъскате с някакви проблеми, пишете тук и ще видим как можем да ви помогнем.