Hlavní navigace

Co před námi tají /proc (18)

Tomáš Kašpárek

Dneska dokončíme poslední ze souborů v základním adresáři. Konkrétně se jedná o soubory "stat" a "swaps". Potom se zaměřím na úplné vymýcení všech bacilů, které se na mě poslední dobou nějak domluvily, a po malé přestávce na zotavenou budeme pokračovat v jednotlivých adresářích.

Dnes naposled se můžete podívat na výpis celého adresáře /proc. Po dnešku už budou všechny soubory otečkovány, a tak nebude mít smysl je vypisovat stále dokola:

  .840     .devices     .kcore   .modules     stat     ide/     acpi/
  .842     .dma         .kmsg    .mounts      swaps    irq/
  .847     .execdomains .ksyms   .mtrr       .uptime   net/
  .848     .filesystems .loadavg .partitions .version  nv/
  .849     .interrupts  .locks   .pci         bus/     sys/
  .cmdline .iomem       .meminfo .self@       driver/  sysvipc/
  .cpuinfo .ioports     .misc    .slabinfo    fs/      tty/
stat

Soubor stat je jednou ze statistik, které jádro nabízí. Naleznete zde informace o celém systému, určené hlavně pro zběžnou kontrolu jeho stavu:

cpu  937 0 617 51832
cpu0 937 0 617 51832
page 56065 6655
swap 1 517
intr 118148 53386 3092 0 0 0 0 2 0 0 50074 0 0 6460 0 5134 0 ....
disk_io: (3,0):(5136,3530,112131,1606,13310)
ctxt 104742
btime 1000281282
processes 735

První dvě položky informují o stavu procesoru. Na jednoprocesorové mašině jsou identické, jinak první udává součet pro celý systém a následují jednotlivé procesory. Jednotlivé položky u procesorů znamenají (v tomto pořadí) časy procesoru strávené v režimu: user, nice, system, idle. To znamená, že můj procesor v době výpisu použil 937 jiffies pro běh uživatelského režimu, 617 pro běh v režimu jádra (systémovém) a 51832 jiffies promrhal nicneděláním. 0 na druhém místě říká, že zatím neběžel žádný program, který má prioritu sníženou pomocí volání nice(). Na druhou stranu, pokud si vzpomínáte na povídání o procesu jádra pro obsluhu „softwarových“ přerušení (ksoftirqd_CPU00) v dílu číslo 10 (o výpočtu loadavg), víte, že právě tento proces má nice rovnu 19. (Ano, skutečně nejmenší možná priorita).

Nejprve slíbené zdůvodnění, jak je možné, že tak důležitý proces má tak malou prioritu. Respektive neřeknu vám, proč má tak malou prioritu, když obsluhuje (kromě jiného) časovač, a ten potřebuje stejně pravidelně vykonávat, co je třeba. Možná odpověď je, že když je tento proces potřeba, zajistí se jeho probuzení jinými prostředky než standardním plánovačem, a bylo by tedy zbytečné, aby ho plánovač sám od sebe spouštěl. A jak to tedy funguje a jaké jsou ty jiné prostředky? Pokud je vyvoláno softwarové přerušení, existují dvě možnosti. Pokud jsme zrovna v té době v obsluze přerušení nebo ve funkci dolní poloviny handleru přerušení, je náš požadavek proveden po návratu z nich. Pokud tomu tak není, je vyvolána funkce wakeup_softirqd, která se pokusí probudit démona ksoftirqd. To provede funkce wake_up_proces(). Ta nakonec probublá do funkce, kde se požadovaná úloha zařadí na začátek fronty úloh připravených ke spuštění. Je možné požadovat okamžité přeplánování (parametr synchronous – jako v tomto případě), kdy se prostě zavolá plánovač ihned, nebo nechat dokončit aktuálně běžící úlohu a naši vybrat až při regulérním přeplánování (z důvodů vypršení časového kvanta).

Tak a teď budeme pokračovat naším výpisem. Další položkou je page. Dvě čísla znamenají počet stránek načtených a zapsaných na disk. Ne pro swap, ale například pro soubory mapované do paměti a vůbec všechny datové stránky. Podobně swap udává nejprve počet paměťových stránek přečtených ze swapu a další položka je počet stránek zapsaných na swap. Opakovaná operace se stejnou stránkou (čtení) nebo opakovaný zápis jsou počítány zvlášť.

Následuje blok informací o přerušeních. První číslo je počet všech obsloužených přerušení, za ním následuje statistika pro každé přerušení zvlášť (lze srovnat s informacemi v souboru interrupts).

Další na řadě je položka s informacemi o diskových operacích. Pro každé diskové zařízení (ne oddíl, ale celý disk) je zde informace v tomto formátu: (MAJOR, MINOR):(IO_OPERACE, READ_OPERACE, READ_BLOCK, WRITE_OPERACE, WRITE_BLOCK). MAJOR a MINOR jsou hlavní a vedlejší číslo disku. Následuje celkový počet požadavků na zařízení, počet požadavků na čtení, počet přečtených bloků, počet požadavků na zápis a počet zapsaných bloků (v jednom požadavku se často zapisuje několik bloků).

Poslední tři položky jsou již jednoduché. ctxt udává počet přepnutí kontextu od startu systému. Přepnutí kontextu je (zjednodušeně) změna prováděného procesu. Jeden proces se z procesoru odstraní a nahradí se jiným, který může procesor po jistou dobu používat (tato doba je právě ono časové kvantum). btime je čas nastartování systému a je uveden v počtu vteřin od 1.ledna 1970. Poslední položka udává počet provedení operace fork(), tedy počet vytvořených procesů. Vzhledem k tomu, že po operaci fork (respektive funkci do_fork() v jádře) nemusí vzniknout proces s novým PID, neodpovídá toto číslo poslednímu použitému PID. (Pomocí příznaku CLONE_PID lze vytvořit dva procesy se stejným PID – překvápko :-)

swaps

Tak a poslední soubor. Tento nám říká, jak jsou v systému nakonfigurovány odkládací prostory:

Filename        Type            Size    Used    Priority
/dev/hda4       partition       130748  26320   -1
/home/swap.64MB     file            65528   0       -2

Nejprve je uvedeno jméno odkládacího prostoru. Tím může být buď disková oblast, nebo normální soubor na libovolném souborovém systému. Typ udává právě druhá položka. Pak tu máme celkovou velikost a využité místo. Priorita je určena k tomu, aby bylo možno odlišit jednotlivé oblasti (pokud jich je víc) dle jejich výkonu. Například odkládací prostor na samostatném (a rychlém) disku bude mít nejlepší prioritu, oddíl na stejném disku jako systém bude mít menší prioritu a swap v souboru bude mít nejmenší prioritu. Potom bude swapovací algoritmus používat nejprve swap na samostatném disku, pak na diskovém oddílu a teprve nakonec, když už jinde nebude místo, začne používat soubor. POZOR: Platí, že lepší je ten, kdo má vyšší číslo. Pro nastavení se používá příkaz swapon -p priorita swap :

swapoff /home/swap.64MB
swapon -p 1 /home/swap.64MB
/dev/hda4       partition       130748  33564   -1
/home/swap.64MB     file            65528   168     1

Pro zvýšení výkonu nemá význam mít více odkládacích oblastí na jednom zařízení, to lze doporučit jen pro případ, že krátkodobě potřebujete více dostupné paměti (nebo chcete někomu ukázat, jak vypadá výpis souboru /proc/swaps :). Na druhou stranu umístění (primárního) swapovacího oddílu na jiný disk (v lepším případě rychlejší) je vždy přínosem (lepší paralelismus).

Našli jste v článku chybu?

21. 11. 2001 14:57

Jiri Hnidek (neregistrovaný)

Swapovaci soubor nemuze byt jakykoliv soubor. Musi splnovat nektere nalezitosti. Zde je navod, jak takovy soubor vytvorit:

$ dd if=/dev/zero of=/home/swap.64MB bs=1024 count=65536

Takto vytvorite prazdny soubor o velikosti 64MB. Parametr count udava velikost souboru v kB. Je dobre tuto velikost zvolit jako nasobek 4, protoze jadro zapisuje do swapu 4kB stranky.

$ mkswap /home/swap.64MB

Takto "zformatujeme" soubor pro swapovani. A ted uz ho muzeme pouzit, jak bylo uvedeno v clanku.









DigiZone.cz: SES zajistí HD pro M7 Group

SES zajistí HD pro M7 Group

Root.cz: Nová třída SD karet A1 s vysokým výkonem

Nová třída SD karet A1 s vysokým výkonem

Měšec.cz: Exekuční poradna: ptejte se online

Exekuční poradna: ptejte se online

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

DigiZone.cz: Ohrozí Freedom TV přechodové sítě?

Ohrozí Freedom TV přechodové sítě?