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に対して対称的、均一的に処理が割り付けられた複数プロセッサによる並列処理方式のことを言う。