neděle 14. října 2012

Monitorování Radeonu s Conky

Jako obvykle, blbnu s novým hardware o něco více, než s tím starým. I když je to jen další Radeon v řadě. Rozdíl je v tom, že ten předchozí o sobě odmítal cokoliv prozrazovat a tak nešlo číst teplotu GPU, takty a tak vůbec. Nový Radeon HD7750 již přes aticonfig s proprietárním ovladačem fglrx poskytuje vše potřebné a tak jsem to samozřejmě zakomponoval do svého conky skriptu...



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'}

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í



2 komentáře:

  1. 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ětVymazat
    Odpovědi
    1. Obč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

Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.

Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.