家に帰ると充電器に指しておいた愛器のMACがファンを最高スピードまでクロックアップさせながら唸りをあげていた。
なぜだ。蓋閉じてるのに。
今回はこういった漠然とした状態からコンピュータ内部でざっくり何が起こっているか判別するときに使用できるtopコマンドを掘り下げて解説しよう。
topコマンドはosx(mac)だけでなくunix実装のほとんどのディストリビューションで提供されているツールであろう。
システム全体をざっくり見るときによく用いられる。
ただこれディストリビューションによって確認できる情報や、オプションとか結構変わってくるので注意。
さてmacでterminalを立ち上げtopコマンドを打鍵すると下記のような表示が見て取れると思う。
Processes: 226 total, 4 running, 9 stuck, 213 sleeping, 1096 threads Load Avg: 3.12, 3.16, 2.93 CPU usage: 16.81% user, 23.22% sys, 59.95% idle SharedLibs: 9200K resident, 14M data, 0B linkedit. MemRegions: 45374 total, 1842M resident, 59M private, 1496M shared. PhysMem: 5103M used (1685M wired), 2594M unused. VM: 538G vsize, 1066M framework vsize, 3072256(54) swapins, 3399825(0) swapouts. Networks: packets: 6042458/6896M in, 3543389/504M out. Disks: 1397033/93G read, 1239425/75G written.
Load Avg: 3?何も起動してないのに。。。
表示される項目について解説する。
Processes – total
マシン上で動作しているプロセスの数
Processes – running
実行中プロセスの数
実行中となりうるプロセス数は1CPUにつき1プロセスだけである。
動作しているマシンのCPUがクアッドコアなため最大で同時に4つのプロセスが動作可能
Processes – stuck
そもそもstuckとは?
osxのtopコマンドにおけるstuckとはプロセスの状態がLIBTOP_STATE_STUCKとなっている状態のプロセス数である。
またカーネルの状態としてはTH_STATE_UNINTERRUPTIBLEであることを指す。
これはプロセスが割り込み不可能なwait状態であることを指す。
通常はディスクやネットワークに対するI/O待ちのような状態が該当する。
Processes – sleeping
wait状態のプロセスの数を表す。
Processes – threads
スレッドの数を表す。
Load Avg
ロードアベレージとは実行キューの中に入っている平均ジョブ数を表す。
(これはosxの定義であってディストリビューションによって算出方法は多少異なることもある)
3つの数値が並んでいるがこれは左から、1分平均、5分平均、15分平均を表す。
CPU usage – user
ユーザ実行時間を表す。ユーザ時間とはアプリケーションレイヤでカーネル処理(システムコール)に費やされている時間以外の時間のことを指す。
例えばアプリケーション中でシステムコールを利用している場合、その間はシステム時間として認識される。
CPU usage – system
システム実行時間を表す。アプリケーションやOSによりシステムコールに費やされている時間を表す。
CPU usage – idle
アイドル時間を表す。
SharedLibs – resident
メモリに常駐している共有メモリを表す。
SharedLibs – data
データ領域を表す。
SharedLibs – linkedit
MemRegions – total
使用メモリサイズ。単位はmach virtual memory。
MemRegions – resident
常駐メモリのサイズ
MemRegions – private
非共有メモリのサイズ
MemRegions – shared
共有メモリのサイズ
PhysMem – used
使用中の物理メモリサイズ
wiredという表記があるが、これはos kernelによって使用されていることを意味する。
PhysMem – unused
未使用な物理メモリサイズ
VM – vsize
仮想メモリの総サイズ。
仮想メモリとは実際には存在しないが、実メモリにマップ領域を用意し、実際のメモリ上にページを配置したり(スワップイン)
抱えきれなくなったページをディスク上に吐き出したり(スワップアウト)することでプロセスからは膨大なメモリが使用可能なように見えるようにする仕組み。
当然実メモリよりも大幅に大きなサイズとなる。
VM – framework vsize
共有メモリにより諸費される仮想メモリサイズ。
VM – swapins
スワップインを起こしたページ数
VM – swapouts
スワップアウトを起こしたページ数
Network packets
ネットワークに対するin/outのパケットサイズを表す。
Disks
ディスク装置に対するread/writeのデータサイズを表す。
本日はこんなところで。にしてもosxはドキュメントが少ないですね。
https://apple.stackexchange.com/
上記はstackoverflowのapple版みたいなものなんですが、そちらが一番情報量が豊富なように思います。
コメントを残す