|||||||||||||||||||||

なんぶ電子

- 更新: 

topコマンドでDebianのプロセス調査

DebianのTOPコマンド

WindowsにおいてプロセスのCPUやメモリの使用量を測定するものにタスクマネージャがあります。Debian(Linux)においてそのようなプロセスを監視するアプリのひとつにtopというものがあります。

今回はそのtopの使い方や見方を覚書として記しておきます。

基本的な使い方

基本的な利用方法はとても簡単です。単にコマンドラインから「top」と打つだけです。終了するには「q」を押します。

上記画面にはいろいろな情報が表示されています。順を追ってみていきます。

大きく分けて画面上部のサマリーと、下部のプロセスに分かれます。

上部画面

左から右、上から下の順で項目を見ていきます。

  • top -

    topの右側にある表示はデータを取得した時刻が入ります。

  • up

    upはシステムが稼働している時間数です。再起動すると0になりそこからカウントされていきます。

  • users

    usersはシェルにログインしている数です。自身も1とカウントします。

  • load average

    Qiita:「LoadAverage(ロードアベレージ)について」によると、この値は「実行待ちのプロセスの平均数」という事です。左から1分平均、5分、15分と並びます。

    「実行待ち」という言葉を正確に表すと、TASK_RUNNINGと、TASK_UNINTERRUPTIBLE状態の二つだそうです。

    ちなみにプロセスの状態は他にTASK_INTERRUPTIBLE、TASK_STOPPED、TASK_ZOMBIEがあります。

    ここではプロセスと書いていますが、状態はTASK...となっています。ここではプロセスとTaskとほぼ同義で、ひとつのプロセスは複数のスレッドを持つことができます。

  • Tasks

    Tasks以降は、total(全)、running(稼働中)、sleeping(休止中)、stopped(停止中)、zonbie(実行終了中)となります。

  • %Cpu(s)

    %Cpu(s)であらわされる項目は、%がついている通り百分率で表され、さらに細分化されています。

    • us(user)

      ユーザープロセスが使用している割合

    • sy(system)

      システムプロセスが使用している割合

    • ni(nice)

      nice経由のプロセスが使用している割合です。niceとはユーザーが優先度を指定してコマンドを実行できるコマンドです。「nice -n n command」でnに優先度が高い値順に-20~19までを指定して、続けてコマンドを入力します。

    • id(idle)

      アイドルの割合です。

    • wa(IO-wait)

      IO(ディスク)側が待ち状態になっている時に発生します。注意したいのは、CPUが他の処理で埋まっているときはIO待ちにはならないので、IOが多くてもこの値には表れないという事です。

    • hi(hardware interrupts)

      ハードウェア割込み。キーボードやディスク、ネットワークなどにより発生した割込みです。

    • si(software interrupts)

      ソフトウェア割込み。

    • st(stolen)

      仮想OSが使用しているプロセスです。

  • Mib Mem

    メモリ使用量です。先頭が単位になっています(この場合はmebibyte)。 total(全)、free(未使用)、used(使用済)、buff/cache(バッファ・キャッシュ使用量)

    バッファはmallocなどで割り当てたメモリ割り当て領域で使用した分です。キャッシュはファイルシステム等がキャッシュとして使用している分です。

  • Mib Swap

    インストール時に設定したスワップ領域の使用量です。物理メモリが不足すると利用されます。total(全)、free(未使用)、used(使用済)、avail Mem(物理メモリ残)

下部画面

下部画面はQiita:「free, top コマンド」を参考にさせていただきました。

CPU使用率でソートされ表示されます

  • PID

    プロセスID

  • USER

    実行ユーザー

  • PR

    優先度

  • NI

    nice優先度

  • VIRT

    仮想メモリ

  • RES

    物理メモリ

  • SHR

    共有メモリ

  • S

    状態。D(割込不能)、R(実行中)、S(休止中)、T(停止中)、Z(ゾンビ)

  • %CPU

    CPU使用率

  • %MEM

    メモリ使用率

  • TIME+

    CPU使用時間。

  • COMMAND

    実行中のコマンド

表示のカスタマイズ

TOPコマンドの表示カスタマイズ

-pオプションでプロセスIDを指定して表示することができます。監視対象のプロセスが特定できたらこちらの方が見やすいです。

-dオプションの後ss.ttの表記で更新頻度を変更できます。

表示項目の変更は、top表示中にfキーを押します。上下で項目の選択、スペースで対象の項目、sでソート対象列の指定、ENTERで決定、qで中止です。

表示順位を変えるには→を押すと、全選択状態になるのでその状態で上下で移動させ←を押すとその位置に指定します。

メモリとCPUについてはソート用のショートカットがあります。shift pでCPU、shift m でMemoryです。

他不明なことがあれば「man top」から確認するようにします。

topコマンドで何が解決できるか

筆者の場合、時折サーバーの処理が遅くなるという現象が発生していて、topコマンドを表示しながら眺めていたところ、ちょうど遅くなるタイミングと似た間隔でwaの値が大きくなっていることに気づきました。waはIO-waitなのでディスクアクセスが遅いという事です。

ここからアプリをiotopに変えて、-aオプション(累積表示)を付けて調べてみたのですが、リストに上がってくるのはjdb2やkwokerといったシステム系のもの。加えてcollectdもIOが多かったのですがこれはiotopで使っているから表示されるような気もします。

SSDに変えるぐらいしか対処方法はなさそうですが、そのまえにログ出力をもう少し減らしてみようと思います。

筆者紹介


自分の写真
がーふぁ、とか、ふぃんてっく、とか世の中すっかりハイテクになってしまいました。プログラムのコーディングに触れることもある筆者ですが、自分の作業は硯と筆で文字をかいているみたいな古臭いものだと思っています。 今やこんな風にブログを書くことすらAIにとって代わられそうなほど技術は進んでいます。 生活やビジネスでPCを活用しようとするとき、そんな第一線の技術と比べてしまうとやる気が失せてしまいがちですが、おいしいお惣菜をネットで注文できる時代でも、手作りの味はすたれていません。 提示されたもの(アプリ)に自分を合わせるのでなく、自分の活動にあったアプリを作る。それがPC活用の基本なんじゃなかと思います。 そんな意見に同調していただける方向けにLinuxのDebianOSをはじめとした基本無料のアプリの使い方を紹介できたらなと考えています。

広告