Portál AbcLinuxu, 14. května 2024 09:03

Sysfs - brána do jadra

12. 7. 2005 | Matej Gagyi
Články - Sysfs - brána do jadra  

Sysfs je virtuálny súborový systém podobný procfs. Nájdete ho v adresári /sys. Pomocou neho môžete kontrolovať hárdvér na svojom počítači. Dnes si porozprávame o jeho charakteristikách a uvedieme niekoľko príkladov použitia.

Úvod

Ak používate jadro rady 2.6, mohli ste si vo svojom koreňovom adresári všimnúť adresár /sys. Je to prípojný bod pre nový virtuálny súborový systém Linuxu - Sysfs.

Sysfs, ako každý virtuálny súborový systém, sa nachádza len v pamäti a na vašom pevnom disku nezaberá žiadne miesto. Jeho obsah presne reprezentuje vnútorný model zariadení v jádre Linuxu.

Skoro všetky informácie o vašom hardvéri a ovládačoch sú v jeho štruktúre logicky usporiadané a niektoré i nastaviteľné, podobne ako je tomu pri Procfs.

Charakteristika Sysfs

Začiatky Sysfs

Sysfs bol vyvinutý špeciálne pre Linux a na iných unixových systémoch sa s ním asi nikdy nestretnete. Prvýkrát bol zaradený do jadra experimentálnej rady 2.5 a predpokladá sa, že v jadre zostane veľmi dlho, nakoľko rieši mnoho problémov.

Hlavnou príčinou jeho vzniku bola potreba exportovať štruktúrované informácie z jadra do užívateľského prostredia. V článku DevFS vs. udev píšem o najvýznamnejšom využití Sysfs (využíva ho utilita udev).

Štruktúra Sysfs

Ak sa pozriete do vnútra adresára /sys, zistíte, že jeho štruktúra je veľmi hlboká a stále nachádzate ďalšie podadresáre. Často na konci celej štruktúry narazíte na symbolické linky do iných vetiev tohto stromu. Môžeme teda povedať, že nieje užívateľsky príjemná, ale rýchlo si na ňu zvyknete.

Sysfs nieje určené pre priame prezeranie užívateľom. Pomôže mu však, ak si vie napísať aspoň malý skript, ktorý za neho informácie zo štruktúry Sysfs vytiahne. To však nieje pre užívateľa veľmi atraktívne až do chvíle, kým nezačne riešiť nejaký hardvérový problém.

Sysfs presne zodpovedá rozloženiu premenných v jadre. Každý adresár predstavuje samostatný subsystém alebo modul. Súbory obsahujú skoro vždy len jednu informáciu a ich názov túto informáciu presne vystihuje.

Sysfs ako nástroj

Konkrétnu informáciu môžete z adresára /sys dostať jednoduchým výpisom súboru.

$ cat /sys/block/fd0/removable
1
$ cat /sys/block/hda/removable
0

Dozvedeli sme sa, že disketová jednotka fd0 používa vymeniteľné média, zatiaľčo disk hda je pevne zabudovaný.

Nastaviť nejaký parameter jadra za chodu je rovnako jednoduché. Musíte však mať patričné práva na zápis, takže musíte byť prihlásený ako root.

# cat /sys/block/hda/queue/scheduler
noop [anticipatory] deadline cfq
# echo "cfq" > /sys/block/hda/queue/scheduler
# cat /sys/block/hda/queue/scheduler
noop anticipatory deadline [cfq]

Nastavili sme plánovač fronty príkazov pre pevný disk hda. Plánovač CFQ je vhodný hlavne pre desktop, takže sme trochu zvýšili pružnosť, s akou sa čítanie a zápis na disk budú prevádzať. Niekedy je to o poznanie lepšie.

Nastaviteľné parametre jadra spoznáte podľa toho, že daný súbor má priradené práva na zápis. POZOR! Nieje dobré zisťovať, na čo slúži daný parameter tým, že do neho začnete zapisovať rôzne hodnoty.

$ find /sys -perm +222 ! -type d ! -type l | sort

Ak sa o jednotlivých parametroch jadra chcete niečo dozvedieť, skúste si názov súboru (aj s cestou) vygooglit, alebo sa pohrabte v dokumentácii k zdrojovým kódom jadra. Pokiaľ si nieste istý, čo robíte, nič nenastavujte!

Jednoduché príklady

Abyste sa mali od čoho odraziť, uvediem niekoľko ukážok zaujímavých súborov v Sysfs a dodám aj popis.

/sys/block/*/queue/scheduler
/sys/block/*/queue/io_sched/*
V súbore scheduler si môžete nastaviť alebo vypnúť plánovač fronty úloh pre vaše diskové zariadenia. Plánovač usporiadava jednotlivé diskové operácie tak, aby ich bolo možné vykonať čo najrýchlejšie a aby aby jednotlivé aplikácie, ktoré pristupujú na disk, dostali svoje údaje čím skôr.
noop
Táto voľba vypne plánovanie. Ak nemáte spustených niekoľko procesov, ktoré pristupujú na disk, nespozorujete spomalenie.
anticipatory
Je rýchly plánovač vhodný pre väčšinu prostredí.
deadline
Ak máte na počítači spustenú databázu, ktorá je stále vyťažená, mal by vám pomôcť mierne zvýšiť jej výkon.
cfq
Rozdeluje čas prístupu na disk rovnomerne medzi všetky procesy. Jednotlivé požiadavky sa začnú vykonávať skôr, ale dokončujú rovnakou rýchlosťou.
/sys/class/*/dev
Tento súbor, ak existuje pre dané zariadenie, obsahuje majoritné a minoritné číslo zariadenia. Je to užitočné, pokiaľ používate statický /dev a potrebujete vytvoriť zariadenie ručne.
/sys/class/*/*
Toto sú adresáre pre všetky zariadenia na počítači, aj tie virtuálne, ktoré sú vytvorené modulmi ako fuse, alebo virtuálne terminály.
/sys/bus/*
Tieto adresáre reprezentujú jednotlivé typy zberníc vo vašom počítači (PCI, IDE, USB, ...). Ich podadresáre obsahujú zariadenia pripojené na nich a tak ďalej.

Toto sú naozaj len ilustračné ukážky zo štruktúry Sysfs. Nič užitočné som neuviedol, ale zatiaľ som pomocou Sysfs riešil len problémy typu: "Rozpoznalo mi tú zvukovku? Netreba len nastaviť hlasitosť?" A Sysfs ma ušetril hľadania spôsobu, ako to zistiť.

Druhýkrát som sa so Sysfs stretol, keď som potreboval nechať zaspať počítač a nevedel som, ako to rýchlo urobiť. Podarilo sa mi to príkazom echo "standby" > /sys/power/state, ale lepšie je stiahnuť si programy, ktoré sú na takéto úkony určené.

Administrácia

Sysfs nieje určený práve na administráciu systému, ale skôr ako zdroj informácií. Väčšie administračné schopnosti ponúka Procfs. Sysfs ponúka len tie administračné funkcie, ktoré sú silne späté s hardvérom a ovládačmi.

Na internete nájdete mnoho príkladov užitočného použitia Sysfs. Skúste si vyhliadnúť nejaký súbor v štruktúre /sys a vložte jeho celú cestu do Googla.

Mne sa takýmto spôsobom podarilo nájsť niekoľko užitočných návodov. Lenže ako som povedal, tento článok nepíšem ako 'návod', ale 'úvod'.

Záverom

Jedným z veľkých úspechov linuxových programátorov je nepochybne aj Sysfs. Nieje to síce vlastnosť, pre ktorú by masy obyčajných používateľov prechádzali pod Linux, ale tým, čo tak už učinili, prináša nové možnosti.

Často sa môžete stretnúť s tvrdením, že Sysfs má úplne nahradiť Procfs - a to nieje pravda. Vývojári Linuxu a rôznych nástrojov potrebovali štruktúrované informácie o hardvéri, ktoré by boli ľahko spracovateľné programami, a to im Sysfs ponúka.

Dúfam, že v článku ste si našli odpovede na niektoré otázky, alebo som vám aspoň ukázal spôsob, ako sa k nim dostanete. V každom prípade, adresár /sys už má vo vašom systéme jasné miesto.

Související články

Jak se píše procesor
DevFS vs. udev
Jaderné noviny

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.