Pro získání údajů o stavu vnitřností je třeba mít nainstalován a inicializován propritární fglrx ovladač. Inicializace je o zápisu konfigurace do souboru /etc/X11/xorg.conf, kterou umí provést grafické nastavovátko od AMD ACCC spuštěné pod administrátorem, nebo příkaz
sudo aticonfig --initial
Tím se zpřístupní vrstva Overdrive, která umí podávat informace, i nastavovat parametry grafického systému, jako takty, sledovat teplotu a zatížení GPU a další.
Teplotu zjistíte příkazem:
aticonfig --odgt
Takty a zatížení zas:
aticonfig --odgc
Další možnosti viz:
aticonfig --help
Výstupní data jsou zabalená do omáčky, kterou je třeba vyfiltrovat, pokud potřebujete pouze užitečná data, k čemuž vám dopomáhej Bůh. Bůh stvořil člověka a ten stvořil sed, ještě před tím, než si lehnul. Proto je sed boží nástroj. Stejně jako conky.
Teplota GPU:
aticonfig --odgt | sed -nr '/Temp/s/^.*- ([0-9]+).*/\1°C/p'
Zatížení GPU v procentech:
aticonfig --odgc | sed -n '/GPU/s/^.* \([0-9]*\)%/\1/p'
Takty parsuju pro conky s typem HW najednou, proto rovnou přidám můj conky skript pro sekci Graphics:
# Graphics #
############
${color1}${voffset 2}${font sans:size=10:bold}Graphics$color${font sans:size=8:bold}$alignr GPU temp: $font${execi 5 aticonfig --odgt | sed -nr '/Temp/s/^.*- ([0-9]+).*/\1°C/p'}
${voffset -6}${color3}$hr$color${voffset 3}
Hardware: $alignr$font${execpi 5 aticonfig --odgc|sed -n '/AMD/s/^.* - \(.*\) /\1/p; /Clocks/s/^.*: *\([0-9]*\) *\([0-9]*\)/Clocks: $alignr \1 \/ \2 MHz/p'}
Fan: $alignr${execi 10 sensors|sed -n '/fan2/s/^.*\(.... RPM\) .*/\1/p'}
GPU load:$alignr${color3}${execgraph aticonfig --odgc|sed -n '/GPU/s/^.* \([0-9]*\)%/\1/p'}
############
${color1}${voffset 2}${font sans:size=10:bold}Graphics$color${font sans:size=8:bold}$alignr GPU temp: $font${execi 5 aticonfig --odgt | sed -nr '/Temp/s/^.*- ([0-9]+).*/\1°C/p'}
${voffset -6}${color3}$hr$color${voffset 3}
Hardware: $alignr$font${execpi 5 aticonfig --odgc|sed -n '/AMD/s/^.* - \(.*\) /\1/p; /Clocks/s/^.*: *\([0-9]*\) *\([0-9]*\)/Clocks: $alignr \1 \/ \2 MHz/p'}
Fan: $alignr${execi 10 sensors|sed -n '/fan2/s/^.*\(.... RPM\) .*/\1/p'}
GPU load:$alignr${color3}${execgraph aticonfig --odgc|sed -n '/GPU/s/^.* \([0-9]*\)%/\1/p'}
Co se barev týká, ty mám samozřejmě definované v konfigurační části skriptu, mám tam i definován výchozí rozměr pro execigraph, který v této formě neumožňuje definovat vlastní rozměry, jako třeba cpugraph, viz dokumentace na webu conky. Protože nepoužívám originál ventilátory se směšným pidikonektůrkem, ale ventilátor s konektory úplně jinými, mám ho zapojený do MB a čtu jeho otáčky pomocí sensors (služba lm-sensors ze stejnojmenného balíku).
Jak to vypadá, vidíte v úvodním obrázku.
V tomto kontextu bych rád připoměl mé rozšíření Geditu, které umí zvýrazňovat syntaxi conky skriptů a velmi zpřehledňuje orientaci v kódu:
Zvýraznění syntaxe Conky skriptů v Geditu
Příhoda z natáčení
Před pár dny, když jsem laboroval s připojením tří monitorů, jsem se setkal s tím, že mi od určitého okamžiku začal zlobit start systému, lépe řečeno grafického prostředí. Systém nabíhal normálně (Ubuntu 12.10), ale po tom, co dosáhl přihlašovací obrazovky, nebylo možné zadat heslo. Dokonce ani hýbat myší. Zjistil jsem, že to bylo omezení jen dočasné, myš začala fungovat po cca minutě, klávesnice za další dvě minuty. Původně jsem si myslel, že za to může zapojení monitorů, protože když jsem jednou přehodil kabely, začalo to fungovat normálně, ovšem to se ukázalo jako náhoda. Kouknul jsem se do sys.log a zjistil, že kernel má problém s přiřazením adres na USB sběrnici. Obě vstupní zařízení jsou na USB. Kernel se s hw několik minut hádal a nakonec všechny adresy vyhádal, vždy dosáhl svého. Pak vše fungovalo naprosto normálně, bez znatelných omezení, je to pašák.Za tyhle věci většinou může hardware, otevřel jsem proto skříň a přesadil grafickou kartu v PCI-E slotu. A také že jo, USB začalo fungovat bez prodlení. Jenže jsem si všiml ještě jedné změny, najednou mi stoupla teplota GPU o cca 10°C. Předtím, když jsem nechal otevřené okno, to ukazovalo i 28°C a po opravě skoro 40! Navíc mi po pár dnech celý systém zamrzl a po tvrdém restartu už nefungoval ani BIOS, potřeboval desítky minut odpojení od elektriky, aby znovu nastartoval. Moc náhod najednou, ale stále i tyto řádky píšu na tom samém HW.
Nicméně když jsem si přidal do conky i monitoring taktů a zatížení GPU, zjistil jsem, proč asi stoupla teplota - GPU je většinu času vytěžován na více než 50% a to ho přepíná z klidového stavu, kdy jsou frekvence jádra a paměti 300 / 150 MHz, do aktivního stavu na frekvencích 830 / 1125 MHz. Vidíte na úvodním screenshotu a to vůbec Compiz neoperuje, prostě klid, na nic nesahám. Stejný driver, stejný systém. Nejsem si jist, zda předchozí špatný kontakt na PCI-E sběrnici měl vliv na spotřebu karty, nesledoval jsem zatížení GPU v tomto stavu, možná je to jen úplně blbá shoda náhod a může za to nějaká aktualizace compizu. Každopádně to je na pikaču, i když se to projevuje na desktopu, který nějaký ten Watt navíc snese. Vytěžovat GPU bez důvodu je chyba v každém případě a na noteboocích je to klíčové, tam se taková bota velmi projeví na výdrži baterie.
Na jednu stranu je GPU akcelerace desktopu fajn a umí i z pomalého netbooku udělat rychlíka, co se odezvy prostředí týká, ale na druhou stranu umí i pěkně nasrat, když se zrovna váš HW neshodne s návrhem vývojářů SW a naneštěstí jde o počítač na baterie.
Tož uvidíme, zda se to nějak umoudří, každopádně to budu sledovat a zkoumat.
Update: Compiz samotný mi GPU nevytěžuje, je to čistě v pluginu Unity. Jak jinak...
Update 2: Možná za to mohlo Unity, ale projevovalo se to jen při spuštěném indikátoru multiload v panelu
Update 3: Po čase se to srovnalo a nyní je vše perfektní
Pěknej návod, jen s regulárními výrazy je potíž - pořád je nemůžu nějak dostat do hlavy, asi budu blbej :-(
OdpovědětVymazatObčas je to na palici, člověk si musí uvědomit pár zásadních zákonitostí a nezapomínat na ně, jinak na to může čučet jak husa do flašky a divit se, že to nedělá co chtěl, i když význam jednotlivých znaků zná :)
Vymazat