5.5.3. procファイルシステム
5.5.3. procファイルシステム
最近では他のUNIX系OSでも見ることができますが、Linuxにはprocファイルシステムという仕組みが用意されています。これは、システムの内部状態をファイルの形で公開し、一般ユーザでもある程度の情報を取得することができる構造になっています。このような情報を取得するにはカーネル空間のメモリに直接アクセスする必要があるため、他のOSでは少し扱いが難しいというケースもありますが、Linuxの場合にはprocファイルシステムで大半の処理が可能です。procファイルシステムは、通常ディレクトリ“/proc”にマウントされており、一般ユーザでも(制限はありますが)参照可能になっています。
$ cd /proc/
$ ls
1 1308 1963 2315 2709 5 bus kcore stat
10 1313 1977 2348 2710 51 cmdline key-users swaps
1059 1326 1994 2374 2712 53 cpuinfo keys sys
1060 1335 1995 2375 2713 6 crypto kmsg sysrq-trigger
11 1336 2 2407 2714 7 devices loadavg sysvipc
このうち、数字のディレクトリはそれぞれが現存するプロセスのIDとなっています。各プロセスの情報については、ディレクトリ中にあるstatusファイルを参照することである程度の情報を得ることも可能です。
$ cd 1
$ cat status
Name: init
State: S (sleeping)
SleepAVG: 98%
Tgid: 1
Pid: 1
PPid: 0
TracerPid: 0
...
statusファイルは人間向けに出力されますが、よりプログラム向けに利用しやすいstatファイルなどもあります。これらのファイルを(他のプログラムなどで)利用することで、昔のカーネル上では(カーネルメモリを読むために)内部で特殊な操作を行っていた部分を一般ユーザでも安心して行えるようになっているわけです。ただし、すべての情報を参照できるわけではなく、プロセスの所有者でないと参照できない部分もあります(fdなど)。
他にも利用価値が高いものとしてcpuinfoというファイルがあります。このファイルを読むと、カーネルが認識しているCPUの情報(SMP構成なら各CPUの情報)を得ることができます。
$ cat cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU D510 @ 1.66GHz
stepping : 10
cpu MHz : 1666.670
cache size : 512 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm dts
bogomips : 3333.42
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
…
この他/procには以下の代表的なものがあります。
- filesystems 現在カーネルに組み込まれているファイルシステムのフォーマット一覧
- interrupts IRQ(割り込み要求)の利用状況
- meminfo メモリの利用状況
- version カーネルのバージョン情報
実際にそれぞれのファイルの内容を確認してみましょう。
$ less filesystems
$ less interrupts
$ less meminfo
$ less version
いくつかのファイルについての情報は、オンラインマニュアル“proc”を参照してみてください。なお、procファイルシステムは仮想的なパーティションなので、ファイルサイズがいくつであろうと、ディスクを消費しているわけではありません。
SMPとは?
Symmetric Multiprocessing = SMP(対称型マルチプロセッシング)とは、物理メモリを共有して管理する「メモリ共有型並列コンピューティング(マルチプロセッシング)方式」のこと。全てのCPUに対して対称的、均一的に処理が割り付けられた複数プロセッサによる並列処理方式のことを言う。