解析トラブル Linuxマシンの動作のもたつき 原因調査と解決策

バイオインフォマティクス解析で使用するツールは、計算が長く続いたり、メモリを大量に必要とするもの、たくさんのファイルを出力するものなど、大きな負荷がかかるものが多いです。このようなツールを使う場合、コンピュータのパフォーマンス管理がしっかりできていないと、思わぬトラブルに見舞われてしまうこともあります。

様々な調査方法や解決策について知識武装し、普段から扱いに慣れていれば、トラブルが発生したときに大きな強みになります。

動作のもたつき 原因調査に使えるツール

top

top とは

top(トップ)はほとんどのUnix系オペレーティングシステムにあるコマンドで、自動的に更新されるプロセス一覧を作成する。デフォルトではプロセスはCPU使用率の順に並べられ、CPU消費の「トップ」グループだけを表示するタスクマネージャーである。topはCPUやメモリの使用量に加え、実行中のプロセスに関するその他の情報も表示する。

ウィキペディア – top(UNIX)

top 表示内容

起動と画面表示

topを実行すると、CPUやメモリの情報・プロセスの情報が3秒間隔で表示されます(間隔はオプションなどを指定することで変更可能)。

$ top
top サマリー
  • Task タスク数や稼働中・停止中などの情報。zombieに注意。
  • Cpu CPUの使用状況
  • Mem 物理メモリの使用状況
  • Swap スワップ領域の使用状況
top 主なフィールド
  • PID プロセスID
  • USER ユーザー
  • %CPU プロセス毎のCPU使用量(占有率)
  • %MEM プロセス毎の物理メモリ使用量(占有率)
  • TIME+ プロセス開始からの使用したCPU時間の総計
  • COMMAND プログラム名

top 便利な使い方

topのオプションやコマンドは非常に多いので、よく使うもの・知っていると便利なものをまとめます。

並び替え
  • SHIFT+m
    メモリ使用率の大きいものから表示
  • SHIFT+p
    CPU使用率の大きいものから表示
  • SHIFT+t
    累積時間の長いものから表示
表示の切り替え
  • m
    メモリ・スワップに関する情報を表示/非表示
  • c
    コマンド・プログラム名の詳細を表示/非表示
  • 1
    CPU毎の使用率を表示/非表示
その他 topのオプション

オプションを指定することで表示内容や動作を変更することができます。

  • top -p PID
    PIDで指定したプロセスの情報だけを表示
  • top -n 回数
    指定した回数だけ更新し、自動で終了
  • top -u username
    usernameで指定したuserの情報だけを表示
その他 シグナル送信

kを押すと、top画面からPIDを指定したプロセスに対して、シグナルを送信できます。

  • 15:強制終了(SIGTERM)
  • 18:停止していれば再開(SIGCONT)

参考:ウィキペディア – シグナル(Unix)

終了

終了する場合は、キーボードのqを押します。

htop

htop とは

htopは、CLIで動作するタスクマネージャーである。topの置き換えを目標に設計された。デフォルトでは、プロセスはCPU使用率の順に並べられる。topでは最もリソースを消費するプロセスのリストが提供されるが、htopでは全てのプロセスのリストが提供される。htopでは、CPUとメモリとスワップについての情報が色付きで視覚的に表示される。

topが提供する情報では不十分である場合に、htopが選択される場合がある。

ウィキペディア – htop

htopは、topと同等の表示を行いますが、「表示のわかり易さ」や「操作のしやすさ」から、topよりも使いやすいかもしれません。

htop インストール

$ sudo apt intall htop

htop 表示内容

起動と画面表示

htopを実行すると、CPUやメモリの情報・プロセスの情報などが一定間隔で表示されます(表示オプションはファンクションキーを使ったメニューで変更可能です。初期設定はファイルに書かれています。編集の際はバックアップをとっておくのが良いと思います。$HOME/.config/htop/htoprc)。

$ htop
htop サマリー
  • CPU CPUコア毎の負荷(グラフ表示)
  • Mem 物理メモリの使用状況(グラフ表示)
  • Swap スワップ領域の使用状況(グラフ表示)
htop 主なフィールド

デフォルトの設定では、topと同じ内容を表示します。矢印キーを使ってスクロール可能です。スペースキーを押すと、ハイライト表示できるので、注目したいプロセスがある場合は便利です。

  • PID
    プロセスID
  • USER
    ユーザー
  • %CPU
    プロセス毎のCPU使用量(占有率)
  • %MEM
    プロセス毎の物理メモリ使用量(占有率)
  • TIME+
    プロセス開始からの使用したCPU時間の総計
  • COMMAND
    プログラム名

htop 便利な使い方

表示の切り替え

F2キーでセットアップモードになります。

  • Meters
    サマリーの表示方法を変更(項目の表示タイプ変更・項目の追加削除)
  • Display options
    プロセス詳細の表示方法を変更(オプション選択)
  • Colors
    htopの表示色セットを選択
  • Columns
    プロセス詳細の表示項目の設定(項目の追加削除・順番変更)
検索

F3キーで検索モードになります。キーワードを入力して検索します。F3キーを繰り返し押すと、該当するデータを次々に表示します。

フィルター

F4キーでフィルターモードになります。キーワードを入力すると、表示している内容がキーワードで絞りこまれます。

並び替え

F6キーで並び替える項目を選択できます。決定すると、選んだ項目に対してソートされた表示が継続します。

ユーザー選択

uキーで表示するユーザーが選択できます。ユーザーを指定すると、選んだユーザーのプロセスのみを表示します。

シグナル送信

矢印で選ばれているプロセスに対して、F9でシグナルを送信します。送信するシグナルの内容を決定すると、シグナルが送信されます。

  • 15:強制終了(SIGTERM)
  • 18:停止していれば再開(SIGCONT)

参考:ウィキペディア – シグナル(Unix)

終了

終了する場合は、キーボードのqまたはF10を押します。

iotop

iotop とは

iotopコマンドを実行すると、プロセスごとのディスク入出力情報をtopコマンド風に表示します。

Ubuntuサーバー徹底入門 – iotopコマンド

iotop インストール

$ sudo apt intall iotop

top 表示内容

起動と画面表示

iotopの起動には、sudo権限が必要です。

$ sudo iotop
iotop サマリー
  • DISK READ B/s
  • DISK WRITE B/s
  • Total DISK WRITE B/s
  • Actual DISK WRITE B/s
iotop 主なフィールド

プロセス毎のDISK READ/DISK WRITEの情報を表示します。

iotop 便利な使い方

並び替え

カーソルキーの「右・左」で、並べ替えの項目を切り替えることができます。読み込みのみ、書き込みのみに絞り込んでチェックすることが可能です。

終了

終了する場合は、キーボードのqを押します。

動作のもたつき 解決策

メモリ不足

メモリが不足している場合は、swap が頻繁に利用されます。各種コマンドで、swap に関する使用が目立つ場合は、メモリの増設を検討した方が良いかもしれません。

メモリの増設自体はそれほど難しい作業ではありませんが、メモリの上限や既存メモリとの組み合わせなどいくつか注意すべき点があります。また、精密機器なので、静電気の発生や電源管理などをキチンと行うことが大切です。

ディスクの見直し

CPU や メモリの性能は高いのに動作がもたもたしている場合は、ディスクの速度に問題があるかもしれません。

topコマンドなどで確認できる「I/O wait」の値が大きい場合は、ディスクへの入出力でプロセスが待たれている状態なので、HDDからSSDへの変更で解決する場合があります。

CPUパワー不足

top コマンドで CPUの負荷(CPUの利用率・Load Average)を確認できます。かなり負荷が高いと判断できれば、CPUを専有しているアプリケーションを見直したり、CPUをより強力なものにするという対策が考えられます。

しかし、CPUの交換や追加は簡単な対応ではないので、スペックの高い他のマシンを利用したり、クラウドサービスでハイスペックな実行環境を利用してアプリケーションを実行できないか、というような検討の方が現実的かもしれません。