Tak a tradice už bylo dost. Protože už jsme téměř u konce výpisu základních souborů, zde jsou soubory, které nám ještě zbývají:
slabinfo acpi/ irq/ tty/ stat bus/ net/ swaps driver/ nv/ uptime fs/ sys/ version ide/ sysvipc/
- slabinfo – pokračování
-
Minule jsme probrali úvod a hlavičku, teď jsou na řadě jednotlivé řádky souboru a jejich význam. Pokud to bude možné, budu používat termín cache, pokud bude nutné skloňovat nebo něco podobného, uchýlím se k české alternativě VP = vyrovnávací pamět stejného významu. Pokud existuje nějaký český překlad (jiný než rychlá vyrovnávací pamět), dejte mi vědět, rád se poučím.
... kmem_cache 54 78 100 2 2 1 ...
První cache je určena pro ostatní cache. Jednoduše řešeno je to seznam ostatních VP. Jak vidno, vše sedí, neboť ve výpise je právě 54 řádků a tedy 54 aktivních objektů dle prvního sloupce. Tato cache zabírá dva slaby (jeden slab na stránku), tedy 8KB.
... tcp_tw_bucket 0 0 96 0 0 1 tcp_bind_bucket 3 113 32 1 1 1 tcp_open_request 0 0 64 0 0 1 inet_peer_cache 0 0 64 0 0 1 ip_fib_hash 5 113 32 1 1 1 ip_dst_cache 0 0 160 0 0 1 arp_cache 0 0 128 0 0 1 ...
Tento blok VP je určen pro objekty síťového rozhraní, jedná se o VP pro síťové spojení v různých stavech protokolu. tcp_tw_bucket je pro sokety ve stavu TIME_WAIT, nastane po uzavření soketu a je určen pro ošetření paketů, které jsou v tu chvíli ještě na síti. tcp_bind_bucket slouží pro znovupoužití portů, tcp_open_request je určen pro informace o otevřeném TCP spojení, inet_peer_cache pro směrovací informace, if_fib_hash pro forwarding (FIB – Forwarding Information Base), ip_dst_cache pro cache směrovacích cest a arp_cache pro překlad adres pomocí ARP.
... blkdev_requests 256 280 96 7 7 1 dnotify cache 0 0 20 0 0 1 file lock cache 5 42 92 1 1 1 fasync cache 1 202 16 1 1 1 ...
blkdev_requests je VP pro požadavky na přístup k blokovým zařízením, dnotify cache je VP pro požadavky na oznamování změn v souborech. Existuje nový, ješte nedokumentovaný (v man na RH 7.0 :) typ volání fcntl(), a to F_NOTIFY. Ten umožňuje reagovat na změny vytvoření, modifikace, přístupu nebo smazání souborů. file lock cache je určena pro struktury s informacemi k souborovým zámkům, fasync cache je pro asynchronní požadavky na bloková zařízení.
... uid_cache 4 113 32 1 1 1 skbuff_head_cache 40 48 160 2 2 1 sock 43 45 832 5 5 2 sigqueue 1 29 132 1 1 1 cdev_cache 533 1298 64 13 22 1 bdev_cache 6044 8142 64 105 138 1 mnt_cache 10 59 64 1 1 1 inode_cache 87793 88048 480 11006 11006 1 dentry_cache 65537 68940 128 2298 2298 1 filp 966 1000 96 25 25 1 names_cache 0 2 4096 0 2 1 buffer_head 41001 47280 96 1172 1182 1 mm_struct 43 48 160 2 2 1 vm_area_struct 1776 1888 64 31 32 1 fs_cache 42 59 64 1 1 1 files_cache 42 45 416 5 5 1 signal_act 44 48 1312 15 16 1 ...
uid_cache obsahuje informace o uživateli (počet procesů, otevřených souborů), skbuff_head_cache je VP pro síťové pakety, sock pro datové struktury soketů, sigqueue je určena pro fronty signálů, cdev_cache a bdev_cache jsou pro informace o znakových respektive blokových zařízeních, mnt_cache pro informace o existujících připojeních pro viruální soub. systém (VFS)., inode_cache pro struktury k i-uzlům, dentry_cache pro informace k vyhledávání adresářových cest, filp pro informace o otevřených souborech, names_cache pro buffery pro zpracování cest a názvů souborů, buffer_head pro struktury blokové cache, mm_struct pro informace o fyzických stránkách, vm_area_astruct pro informace o alokovaných oblastech v LAP (logickém adresovém prostoru), fs_cache je pro informace o umístění souboru v adresářové struktuře, files_cache pro tabulku otevřených souborů v jádře, signal_act pro informace o signálech v jádře.
... size-131072(DMA) 0 0 131072 0 0 32 size-131072 0 0 131072 0 0 32 size-65536(DMA) 0 0 65536 0 0 16 size-65536 1 1 65536 1 1 16 ... size-64(DMA) 0 0 64 0 0 1 size-64 1083 1711 64 27 29 1 size-32(DMA) 0 0 32 0 0 1 size-32 9614 11639 32 99 103 1
A tohle už je vážně poslední skupina. Jedná se obecnou cache pro paměťové objekty o patřičných velikostech. Položky s (DMA) jsou navíc určeny pro DMA přenosy. To znamená na některých platformách jistá omezení. Například na x86 musí být tato paměť fyzicky umístěna v rozsahu 0–16MB.
- uptime
-
Tohle je teké velmi jednoduché. Jsou zde dvě hodnoty. První udává vlastní uptime, tedy jak dlouho je již systém spuštěn. Druhá udává čas strávený ve stavu idle – tedy celkovou dobu, kdy nebylo nic na práci. Následuje příklad:
1712.17 1689.83
Jednotkou jsou v obou případech sekundy. Příkaz uptime ve stejnou dobu tedy vypíše:
8:41am up 28 min, 3 users, load average: 0.15, 0.09, 0.03
A vskutku, 1712 sekund je 28 minut. Vzhledem k tomu, že psaní textu není moc náročná činnost (alespoň pro můj počítač :), je hodnota idle také 28 minut. Nicméně je vždy menší než celkový čas.
Teď ještě jak jsou hodnoty získány. To je prosté. V Linuxu existuje konstatnta HZ (na Intel x86 #definovaná jako 100, u Aplhy je to 1024 nebo 1200). Ta je použita pro nastavení časovače při startu systému a udává počet přerušení časovače za sekundu. Hlavním úkolem obsluhy přerušení časovače je potom při každém tiku inkrementovat proměnnou jménem jiffies, která potom udává počet tiků časovače od startu systému. Jde o unsigned long a je to veřejně přístupná proměnná (pro jádro). Hodnota uptime v souboru je tedy jednoduše jiffies/HZ. (Obecně to sice tak jednoduché není, protože je třeba ošetřit různá přetečení rozsahů a podobně, ale smysl zůstává stejný.) Druhé číslo vznikne podobně, ale čítač je inkrementován pouze při nečinnosti.
- version
-
Opět jedna lahůdka. Informace zde skoro nepotřebují komentář, uznejte sami:
Linux version 2.4.9 (root@sirion) (gcc version 2.96 20000731 \ (Red Hat Linux 7.0)) #1 Út zář 4 19:28:22 CEST 2001
Jedná se o informace o verzi jádra Linuxu. Kromě vlastní verze (2.4.9) je zde zaznamenán i čas překladu, kdo ho prováděl a jaký byl použit překladač. Informace jsou natvrdo vloženy do jádra při překladu (viz. soubor init/version.c)