0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

可視化で極めるプロセス管理:htopの使い方と活用術

Posted at

概要

CPUのメモリ利用率を知るためにtopやfreeというコマンドはよく使われると思いますが、htopという可視化ツールもなかなか魅力的なツールだと思いました。

  • エンジニアが好きそうなダッシュボード感がたまらない
  • 特定のタスクについて絞り込む機能も魅力的
  • プロセスの削除をGUIから容易に行える

特に、プロセスの削除に関しては複数のpythonタスクを実行中に、PIDを調べて一つ一つkillしていくのは手間ですし、ミスする可能性もありますが、htopなら容易に実行できます。

image.png

bashに標準装備のtopの画面はこんな感じです。

image.png

htop/top両方について言えることですが、使いこなせていない自信があります。
今回はそれぞれのバロメータが何を表しているのかこの機会に調べてみてアウトプットを試みようという企画です。

htopのインストール


# macos
brew install htop

# linux
sudo apt install htop

知りたいこと

  • topやhtopが示すインジゲータの意味
  • topやhtopのオプション

というわけで調べていきます。htopベースでまずは記載していきます。

概要

htop起動画面でhを押すと、なんと説明が出てきます。

image.png

CPU usage, Memory, Swp bar

今回使用しているCPUは4コア8スレットのXeon W-2123です。

Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         46 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  8
  On-line CPU(s) list:   0-7
Vendor ID:               GenuineIntel
  Model name:            Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
    CPU family:          6
    Model:               85
    Thread(s) per core:  2
    Core(s) per socket:  4
    Socket(s):           1
    Stepping:            4
    CPU max MHz:         3900.0000
    CPU min MHz:         1200.0000

CPU使用率を示すインジケータは0-7までありますので、スレットベースでのインジケータであることがわかります。
i番目のThreadのCPU稼働率(リソースの使用率)がわかるようです。

image.png

htopによってThreadごとのCPUリソース使用率がわかるので、
例えばリソース使用が偏っている場合、並列に処理を実行することで高速化できる可能性があります。

色分けについては、

  • 緑色:Normal(ユーザーモード)。通常のアプリケーション、ユーザースクリプト ユーザーレベルでの計算処理
  • 赤色:Kernel(カーネルモード)。ファイル操作、ネットワーク、デバイス制御 OSが重要な操作を管理
  • 青色:Low-priority。バックグラウンドタスク、低優先度プロセス リソース競争が少ない場合のみ実行

を表しているようです。

メモリとスワップメモリの説明は多くの解説記事があるので解説を譲りますが、概要を以下に記載します。

  • Memory/RAMは、物理的なメインメモリ(Random Access Memory)のことを指します
  • Swapは、物理メモリ(RAM)が不足した場合に、ハードディスクやSSDの一部を仮想的なメモリとして使用する仕組みです
項目 Memory(RAM) Swap
位置 物理メモリ(RAMモジュール) ストレージ(HDD/SSD)
速度 非常に高速 RAMに比べて遅い(特にHDDでは顕著)
揮発性 揮発性(電源を切るとデータ消失) 非揮発性(データはストレージ上に残る)
用途 アクティブなプロセスのデータ保持 RAM不足時のデータ退避
容量 限られている(数GB~数十GB) ストレージ容量に依存(必要に応じて増加可能)
性能 パフォーマンスに直接影響 頻繁に使用されるとシステムが遅くなる

free -hと入力するとシンプルにメモリとSwwapの使用率が確認できます。

           total        used        free      shared  buff/cache   available
Mem:            23Gi        13Gi       465Mi       200Mi       9.0Gi       8.8Gi
Swap:          2.0Gi       2.0Gi       0.0Ki

PRI, NI, VIRT, RES, SHR, S, CPU%, MEM%, TIME+, Commandの意味

image.png

一つ一つ調べていった結果がこの通りです。

項目 意味 内容/詳細
PRI プロセスの優先度 数値が小さいほど高優先度
NI Nice値(優先度の調整値) -20(高優先度)~19(低優先度)
VIRT 仮想メモリ使用量 物理メモリ + スワップ
RES 物理メモリ使用量 現在RAM上に存在するデータ
SHR 共有メモリ量 他のプロセスと共有しているリソース
S プロセスの状態 R, S, D, Z, T, I
CPU% CPU使用率 単一コアに対する割合
MEM% メモリ使用率 RESが物理メモリ全体に占める割合
TIME+ プロセスの合計CPU使用時間 累計CPU時間
Command 実行中のコマンドまたはプロセス名 実行ファイルやオプション情報を表示

PRI = Priority, プロセスの優先度 / NI = Nice, ニース値

優先度が1番高いジョブは0で表されており、私のサーバーだと50までジョブがありました。

image.png

NIは相対的な優先度を表しているようです。

VIRT = Virtual Memory, 仮想メモリ量 / RES = Resident Memory, 物理メモリ量

VIRTの値で降順ソートすると1163GBととんでもない値になりましたが、そもそもメモリの容量(このサーバーの場合48GB)をはるかに超えており、???となりました。

image.png

上記は動画処理をしているケースですので、実際のメモリ使用量(RES)をみてみると、389MBとなっており想定の範囲内の数字となっています。

S = State, プロセスの状態

R: 実行中(Running)。
S: スリープ中(Sleeping)。
D: ディスク待ち(Uninterruptible Sleep)。
Z: ゾンビプロセス(Zombie)。
T: 停止中(Stopped)。
I: 無操作(Idle)。

後のCPU%, MEM%, TIME+, Commandは言葉の通りですので説明を省きます。

これでhtopの登場人物はあらかた理解できて気がします。
便利なコマンドですので、これからも積極的に活用していきたいと思います。

おしまい!

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?