【Linux】procファイル情報活用のすすめ
Linuxにはprocファイルシステムというとても便利で素晴らしい機能があります。
このprocファイルを参照すればほとんどのシステム情報を得ることが可能です。
システム情報を表示するコマンドもありますが、単にこのprocファイルから情報を取得して人間が見やすいように加工しているだけだったりします。
よく使うprocファイルを紹介していこうと思います。
代表的なprocファイル
/proc/cpuinfo
以下のようにCPUの詳しい情報が得られます。
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU Z530 @ 1.60GHz
stepping : 2
microcode : 0x217
cpu MHz : 798.070
cache size : 512 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon pebs bts cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 xtpr pdcm movbe lahf_lm tpr_shadow vnmi flexpriority dtherm
bugs :
bogomips : 3192.28
clflush size : 64
cache_alignment : 64
address sizes : 32 bits physical, 32 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU Z530 @ 1.60GHz
stepping : 2
microcode : 0x217
cpu MHz : 798.101
cache size : 512 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon pebs bts cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 xtpr pdcm movbe lahf_lm tpr_shadow vnmi flexpriority dtherm
bugs :
bogomips : 3192.28
clflush size : 64
cache_alignment : 64
address sizes : 32 bits physical, 32 bits virtual
power management:
個人的にはCPUのコア数やSSEいくつまで対応しているか調べて、gccのコンパイルオプションを指定するときにこの情報を参照することがあります。
/proc/meminfo
メモリー使用状況の詳細な情報を得ることができます。
$ cat /proc/meminfo
MemTotal: 2064280 kB
MemFree: 437160 kB
MemAvailable: 1103524 kB
Buffers: 96904 kB
Cached: 642988 kB
SwapCached: 0 kB
Active: 1467384 kB
Inactive: 117720 kB
Active(anon): 800356 kB
Inactive(anon): 71012 kB
Active(file): 667028 kB
Inactive(file): 46708 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 1178312 kB
HighFree: 32360 kB
LowTotal: 885968 kB
LowFree: 404800 kB
SwapTotal: 2097148 kB
SwapFree: 2096628 kB
Dirty: 12 kB
Writeback: 4 kB
AnonPages: 845236 kB
Mapped: 54716 kB
Shmem: 26156 kB
Slab: 25852 kB
SReclaimable: 19004 kB
SUnreclaim: 6848 kB
KernelStack: 1016 kB
PageTables: 2264 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3129288 kB
Committed_AS: 1467920 kB
VmallocTotal: 122880 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
CmaTotal: 16384 kB
CmaFree: 16328 kB
DirectMap4k: 16376 kB
DirectMap4M: 892928 kB
各種メモリーの使われ方の詳細を知りたい時に重宝します。
/proc/interrupts
IRQなどのハードウェア割り込み回数の情報を得ることができます。
$ cat /proc/interrupts
CPU0 CPU1
0: 25 0 IO-APIC 2-edge timer
8: 1 0 IO-APIC 8-edge rtc0
9: 0 0 IO-APIC 9-fasteoi acpi
14: 733591 0 IO-APIC 14-edge pata_sch
15: 0 0 IO-APIC 15-edge pata_sch
18: 0 0 IO-APIC 18-fasteoi uhci_hcd:usb4
19: 0 0 IO-APIC 19-fasteoi uhci_hcd:usb3
21: 18 0 IO-APIC 21-fasteoi ehci_hcd:usb1
23: 0 0 IO-APIC 23-fasteoi uhci_hcd:usb2
24: 6566494 0 PCI-MSI 1048576-edge eth0
25: 20077583 0 PCI-MSI 1572864-edge eth1
NMI: 0 0 Non-maskable interrupts
LOC: 120368497 114360274 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
IWI: 0 0 IRQ work interrupts
RTR: 0 0 APIC ICR read retries
RES: 217539 233941 Rescheduling interrupts
CAL: 287430 7437333 Function call interrupts
TLB: 12008 7956 TLB shootdowns
ERR: 0
MIS: 0
PIN: 0 0 Posted-interrupt notification event
NPI: 0 0 Nested posted-interrupt event
PIW: 0 0 Posted-interrupt wakeup event
smp_affinityなどを設定して各CPUへ割り込みを分散するときなどに便利な情報です。
/proc/softirqs
こちらはソフトウェア割り込み回数の情報になります。
$ cat /proc/softirqs
CPU0 CPU1
HI: 0 0
TIMER: 4192370 4388613
NET_TX: 7536700 1164664
NET_RX: 37350421 7869458
BLOCK: 0 0
IRQ_POLL: 0 0
TASKLET: 9243007 46148
SCHED: 3414335 3432548
HRTIMER: 0 0
RCU: 2688608 2375643
その他
/proc以下には他にもPID以下にそのプロセスの情報やnet以下にネットワーク関連の情報など有益な情報がたくさんあります。
気になった方はprocファイルの情報について調べてみて下さい。