【ラズパイ】htopのあれこれ【Python】

目次

概要

Linuxのシステムコマンドツールでhtopを使ったので、

紹介します。

htopのインストール方法

ターミナルを開いて、

sudo apt-get install htop

と打ってください。これで使えるようになります。

htopを使用

次にターミナルに

htop

と入力したら、OKです。

htop では、プロセスのリスト、CPU、メモリ、スワップの使用状況がグラフィカルに表示されます。プロセスを選択し、F9キーを押すことで、そのプロセスを終了させることができます。
これらのツールを使用することで、システムのリソース使用状況を監視し、システムが過負荷になっているか、または特定のプロセスがリソースを過剰に消費しているかを把握できます。これにより、パフォーマンスの問題の原因を特定し、適切な対処を行うことができます。

htopの用語

スワップ

スワップ(Swap)は、Linuxを含む多くのオペレーティングシステムで使用される、メモリ管理の技術です。物理メモリ(RAM)がいっぱいになったときに、まだ実行中のプログラムのデータをハードディスクやSSDなどのストレージデバイスに一時的に移動させることで、システムがクラッシュするのを防ぎます。

スワップの動作原理


オペレーティングシステムは、アプリケーションが使用するデータとコードを物理メモリ上に保持します。しかし、多くのアプリケーションが同時に実行されている場合、利用可能な物理メモリの容量を超えることがあります。この問題を解決するために、システムは「スワップスペース」と呼ばれるハードディスクの領域を使用して、一部のデータを物理メモリから移動させます。このプロセスを「ページング」または「スワッピング」と呼びます。

スワップのメリットとデメリット

メリット:

システムの安定性: スワップを使用することで、物理メモリが不足した際にもシステムが動作し続けることができます。
メモリ使用の最適化: アクティブでないプロセスのデータをスワップスペースに移動させることで、より多くのアプリケーションを同時に実行できます。

デメリット:

パフォーマンスの低下: スワップスペースへのデータの読み書きは、物理メモリへのアクセスに比べて遥かに遅いです。そのため、スワップが頻繁に発生するとシステムのパフォーマンスが低下します。
ストレージの消耗: スワップ操作は、ハードディスクやSSDなどのストレージデバイスに対して多くの書き込み操作を行うため、デバイスの寿命を縮める可能性があります。

スワップの管理

Linuxでは、swapon、swapoff コマンドを使用してスワップスペースを有効または無効にすることができます。また、free コマンドや top コマンドを使用して、スワップ領域の使用状況を確認することが可能です。

システムのパフォーマンスを最適化するためには、適切な量の物理メモリを確保し、スワップの使用を最小限に抑えることが重要です。しかし、物理メモリが限られている環境では、スワップスペースはシステムの安定性を保つために不可欠な機能となります。

使用例

たとえば、Swpが44.2M/100.oMとなっているとします。

44.2M/100.0M という表示は、スワップ領域の使用状況を示しています。この場合、合計で100.0メガバイト(M)のスワップ領域がある中で、44.2メガバイトが使用されていることを意味します。スワップ領域は、物理メモリ(RAM)が満杯になった時に、システムが使用する一時的なストレージスペースです。

具体的には、以下のように解釈できます:

合計スワップ領域:100.0M – システムがスワップ用に割り当てている合計容量です。
使用中のスワップ領域:44.2M – 現在、スワップとして使用されている容量です。
この情報は、システムがどの程度スワップ領域を使用しているかを示しています。物理メモリが足りなくなり、スワップ領域にデータを移動させる必要がある場合、スワップの使用量が増加します。スワップの使用量が多いと、ハードディスクやSSDなどのストレージデバイスへの読み書きが増えるため、システムのパフォーマンスに影響を与える可能性があります。

一般的に、スワップの使用量が少ない場合は、システムの物理メモリが適切に管理されていると考えられます。しかし、スワップの使用量が多い、または全体のスワップ領域に対する使用率が高い場合は、物理メモリが不足している可能性があり、追加のメモリの導入や実行中のアプリケーションの見直しを検討する必要があるかもしれません。

Mem

Swpの上にMemとあります。それは、

システムの物理メモリ(RAM)の使用状況を示しています。

0、1、2、3

Memの上に「0,1,2,3」とあります。それは、

マルチコアまたはマルチプロセッサシステムのCPUコアごとの使用率を示しています。

Tasks

システム上で現在実行中のプロセス(タスク)の数を示します。この数値には、実行中(running)、スリープ中(sleeping)、停止中(stopped)、ゾンビ(zombie)状態のプロセスが含まれます。

  • 実行中:現在CPU時間を消費しているプロセス。
  • スリープ中:何らかのイベントやリソースが利用可能になるのを待っているプロセス。
  • 停止中:一時停止(SIGSTOP)されているプロセス。
  • ゾンビ:終了したが、親プロセスによってまだ回収(reaped)されていないプロセス。

Load average

過去1分間、5分間、15分間の平均的なシステム負荷を示す3つの数値です。これは、システムが処理を待っているタスクの平均数を表し、システムの負荷とパフォーマンスを把握するのに役立ちます。値が高いほど、システムが多くの処理を待っており、負荷が高いことを意味します。システムのCPUコア数に対してこの値を評価することが重要で、負荷平均がCPUコア数を超えている場合、システムが過負荷状態にあることを示します。

Uptime

Uptime はシステムが最後に起動してからの経過時間です。これはシステムの安定性を示す指標として使われることがあり、長期間にわたってシステムが再起動せずに動作していることを示します。uptime コマンドを実行することでこの情報を直接確認することができます。

これらの指標を通じて、システムの現在の状態、負荷、およびパフォーマンスを理解することができ、必要に応じてリソース管理やパフォーマンス最適化のための措置を講じることが可能になります。

PID

Process ID (PID): プロセスの一意の識別子。システム上でプロセスを特定するために使用されます。

USER

User: そのプロセスを実行しているユーザー名。

PRI

Priority (PRI): プロセスのスケジューリング優先度。数値が低いほど優先度が高いです。

NI

Nice value (NI): プロセスの優先度を調整するための値。優先度を下げる(他のプロセスに対して「親切」になる)ために使用されます。

VIRT

Virtual memory size (VIRT): プロセスが使用する仮想メモリの総量。これにはプロセスが使用するコード、データ、および共有ライブラリ、さらにページング領域(スワップ領域)も含まれます。

RES

Resident memory size (RES): プロセスが物理メモリ(RAM)で実際に使用している量。

SHR

Shared memory (SHR): プロセスによって使用されている共有メモリの量。他のプロセスと共有されているメモリです。

S

Status (S): プロセスの状態。一般的な状態には、実行中(R)、スリープ中(S)、中断(T)、ゾンビ(Z)などがあります。

CPU%

CPU usage (CPU%): プロセスがCPUリソースをどの程度使用しているかのパーセンテージ。

MEM%

Memory usage (MEM%): プロセスが物理メモリをどの程度使用しているかのパーセンテージ。

TIME+

CPU time (TIME+): プロセスが開始されてからの総CPU使用時間。

Command

Command (COMMAND): プロセスを起動したコマンドラインまたは実行中のプログラムの名前。

まとめ

という感じです。

何かの参考になれば幸いです。

技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。

プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。

気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。

[Kindle Unlimited 読み放題プランをチェックする]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次