バイオインフォマティクス解析で使用するツールは、計算が長く続いたり、メモリを大量に必要とするもの、たくさんのファイルを出力するものなど、大きな負荷がかかるものが多いです。このようなツールを使う場合、コンピュータのパフォーマンス管理がしっかりできていないと、思わぬトラブルに見舞われてしまうこともあります。
様々な調査方法や解決策について知識武装し、普段から扱いに慣れていれば、トラブルが発生したときに大きな強みになります。
動作のもたつき 原因調査に使えるツール
top
top とは
top(トップ)はほとんどのUnix系オペレーティングシステムにあるコマンドで、自動的に更新されるプロセス一覧を作成する。デフォルトではプロセスはCPU使用率の順に並べられ、CPU消費の「トップ」グループだけを表示するタスクマネージャーである。topはCPUやメモリの使用量に加え、実行中のプロセスに関するその他の情報も表示する。
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)
iotop
iotop とは
iotopコマンドを実行すると、プロセスごとのディスク入出力情報をtopコマンド風に表示します。
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の交換や追加は簡単な対応ではないので、スペックの高い他のマシンを利用したり、クラウドサービスでハイスペックな実行環境を利用してアプリケーションを実行できないか、というような検討の方が現実的かもしれません。