0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

こんにちは!

Linuxで作業をしていると、負荷状況を知りたくなることがあります。
そこで便利なのが topコマンド
リアルタイムにシステムの負荷状況を監視し、問題発生の予兆をいち早く察知するために欠かせないツールです。

今回は、このtopコマンドについて、基本的な見方を振り返ります。

topコマンドを実行してみる

まずは、ターミナルで top と入力してコマンドを実行してみましょう。

$ top

すると、以下のような画面が表示されるはずです。
(環境によって表示内容は多少異なります)

Processes: 466 total, 3 running, 463 sleeping, 2579 threads
2024/07/06 19:30:44
Load Avg: 3.48, 10.31, 18.44
CPU usage: 21.73% user, 29.86% sys, 48.40% idle
SharedLibs: 239M resident, 43M data, 13M linkedit.
MemRegions: 929204 total, 3494M resident, 39M private, 527M shared.
PhysMem: 8043M used (1965M wired), 148M unused.
VM: 93T vsize, 3153M framework vsize, 220843950(0) swapins, 228894984(0) swapouts.
Networks: packets: 10609880/8494M in, 6543712/4585M out.
Disks: 37609398/2929G read, 16655199/1072G written.

PID    COMMAND          %CPU TIME     #TH   #WQ #PORTS MEM   PURG  CMPRS PGRP  PPID  STATE    BOOSTS     %CPU_ME %CPU_OTHRS UID FAULTS    COW     MSGSENT   MSGRECV   SYSBSD    SYSMACH    CSW        PAGEINS IDLEW    POWER INSTRS CYCLES USER                   #MREGS RPRVT VPRVT VSIZE KPRVT KSHRD
99878  mobileassetd     0.0  00:24.97 3     1   112    3772K 0B    3476K 99878 1     sleeping *0[348]    0.00000 0.00000    0   127311    247     3756      2068      133038    6653       94559      397     886      0.0   0      0      root                   N/A    N/A   N/A   N/A   N/A   N/A
99437  WirelessRadioMan 0.0  00:02.01 2     1   49     1524K 0B    868K  99437 1     sleeping *0[1]      0.00000 0.00000    0   20958     207     5235      5387      62925     29647      28002      69      93       0.0   0      0      root                   N/A    N/A   N/A   N/A   N/A   N/A
...(以下省略)...

topコマンドの見方

topコマンドの出力は、大きく分けて2つの部分で構成されています。

  1. システム全体の情報:
    CPU使用率、メモリ使用量、ロードアベレージ、稼働時間などのシステム全体の状態が表示されます。
  2. プロセスごとの情報:
    システム上で動作しているプロセスの一覧が表示されます。
    CPU使用率、メモリ使用量、プロセスID、コマンド名などの情報が表示されます。

これらについて、以下で説明します。

システム全体の情報

  • Processes: プロセス情報。システムで実行中のプロセスの総数と状態別の内訳を表示します。
  • Load Avg: ロードアベレージ。過去の平均負荷を表示します。値が大きいほど、システムに負荷がかかっていることを示します。

CPU使用率

  • CPU usage: CPU使用率。CPU時間がユーザー処理、システム処理、アイドル状態のどれに費やされているかをパーセンテージで表示します。

メモリ使用量

  • SharedLibs: 共有ライブラリ。共有ライブラリが使用しているメモリ量, データセグメントサイズ, リンクエディタ使用量を表示します。
  • MemRegions: メモリ領域。システム全体のメモリ領域の数と使用状況を表示します。
  • PhysMem: 物理メモリ。物理メモリの使用量と空き容量、そしてワイヤードメモリの量を表示します。

仮想メモリとネットワーク

  • VM: 仮想メモリ。仮想メモリのサイズ、フレームワークの仮想メモリサイズ、スワップイン/スワップアウト回数などを表示します。
  • Networks: ネットワーク。送受信されたネットワークパケット数とデータ量を表示します。

ディスクI/O

  • Disks: ディスクI/O。ディスクの読み込みと書き込みの回数とデータ量を表示します。

これらの情報は、システム全体のリソース使用状況を把握し、パフォーマンスのボトルネックを特定したり、システムの安定稼働を維持するために役立ちます。

プロセスごとの情報

プロセス情報:

  • PID: プロセスID。各プロセスを一意に識別する番号。
  • COMMAND: プロセス名。実行中のコマンドやプログラムの名前。

リソース使用率:

  • %CPU: CPU使用率。そのプロセスが現在使用しているCPUリソースの割合。
  • TIME: CPU時間。プロセスが開始してから使用した合計CPU時間。

スレッドとワークキュー:

  • #TH: スレッド数。プロセスが使用しているスレッドの総数。
  • #WQ: ワークキュー。プロセスに関連付けられているワークキューの数。

メモリ使用量:

  • MEM: メモリ使用量。プロセスが現在使用している物理メモリの量。
  • PURG: パージ可能メモリ。必要に応じてディスクに退避できるメモリ量。
  • CMPRS: 圧縮メモリ。メモリ圧縮によって節約されたメモリ量。

プロセスグループと状態:

  • PGRP: プロセスグループID。プロセスが属するプロセスグループのID。
  • PPID: 親プロセスID。このプロセスを生成した親プロセスのID。
  • STATE: プロセス状態。 running, sleeping, stopped, zombie など。

その他:

  • BOOSTS: ブースト情報。プロセスの優先度ブーストに関する情報。
  • %CPU_ME: 他プロセス起因CPU時間。他のプロセスによって消費されたCPU時間。
  • %CPU_OTHRS: 自分起因CPU時間。このプロセスによって消費されたCPU時間。
  • UID: ユーザーID。プロセスを実行しているユーザーのID。
  • FAULTS: ページフォルト。プロセスがアクセスできなかったメモリページへのアクセス試行回数。
  • COW: コピーオンライトフォルト。コピーオンライトによって発生したページフォルト数。
  • MSGSENT: 送信メッセージ数。プロセスが他のプロセスに送信したメッセージの数。
  • MSGRECV: 受信メッセージ数。プロセスが他のプロセスから受信したメッセージの数。
  • SYSBSD: BSDシステムコール回数。プロセスが行ったBSDシステムコールの数。
  • SYSMACH: Machシステムコール回数。プロセスが行ったMachシステムコールの数。
  • CSW: コンテキストスイッチ回数。プロセスがCPUを他のプロセスに明け渡した回数。
  • PAGEINS: ページイン回数。ディスクからメモリに読み込まれたページの数。
  • IDLEW: アイドルウェイクアップ回数。プロセスがアイドル状態からウェイクアップされた回数。
  • POWER: 電力使用量。プロセスが消費している電力の推定値。
  • INSTRS: 命令実行数。プロセスが実行したCPU命令の数。
  • CYCLES: CPUサイクル数。プロセスが消費したCPUサイクルの数。
  • USER: ユーザー名。プロセスを実行しているユーザーの名前。

これらの情報は、システムの負荷状況やプロセスの動作状況を把握し、問題解決やパフォーマンスチューニングを行う際に役立ちます。

まとめ

topコマンドは、システム管理者にとって欠かせないツールで、基本的な見方をマスターするだけでも、システムの状態を把握するのに非常に役立ちます。

topコマンドを使いこなし、一システムの状態を判断できるようになりましょう!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?