- 1 はじめに
- 2 検証環境
- 3 CPU使用率の高いプロセスを調べる方法(--sort=-%cpu)
- 4 メモリ使用量の高いプロセスを調べる方法(--sort=-rss)
- 5 ディスクアクセスの割合が高いプロセスを調べる方法
- Y 参考図書
- Z 参考情報
1 はじめに
システムを運用している中で、コマンドの応答が遅くなるなどの問題が発生する場合があります。このような状況では、CPUやメモリなどのコンピュータリソースを多く使用しているプロセスを特定し、問題の原因を特定する必要があります。リソースを多く消費しているプロセスを見つける方法はいくつかありますが、ここではpsコマンドを使用してCPU使用率、メモリ使用率、およびディスクアクセスが高いプロセスを調べる方法について説明します。なお、psコマンドの詳細な使い方は、psコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。
2 検証環境
AlmaLinuxの版数は以下のとおりです。
[root@server ~]# cat /etc/redhat-release AlmaLinux release 8.6 (Sky Tiger)
カーネル版数は以下のとおりです。
[root@server ~]# uname -r 4.18.0-372.9.1.el8.x86_64
3 CPU使用率の高いプロセスを調べる方法(--sort=-%cpu)
3.1 事前準備
私の環境は、CPU使用率の高いプロセスが少なく実行結果を確認しずらいので、意図的にCPU使用率の高いプロセスを起動しました。stress-ngコマンドを実行して、CPU使用率が10%,20%のプロセスをそれぞれ1つ起動します。なお、stress-ngコマンドのインストール方法、使い方は、stress-ngコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。
[root@server ~]# stress-ng -k -c 1 -l 10 -q & [1] 1515 [root@server ~]# stress-ng -k -c 1 -l 20 -q & [2] 1517
3.2 動作確認
プロセスのCPU使用率を降順に表示するには、psコマンドのオプションに--sort=-%cpuと指定します。以下の実行例を確認すると、プロセスのCPU使用率が降順に表示されていることがわかります。CPU使用率を昇順に表示するには、--sortオプションに+%cpuを指定します。
[root@server ~]# ps ax --sort=-%cpu -o command,pid,%cpu|head -n 5 COMMAND PID %CPU stress-ng -k -c 1 -l 20 -q 1518 21.2 stress-ng -k -c 1 -l 10 -q 1516 10.5 /usr/lib/systemd/systemd -- 1 1.5 /usr/bin/python2 -Es /usr/s 616 1.3
pkillコマンドを実行して、stressプロセスを終了します。
[root@server ~]# pkill stress-ng
4 メモリ使用量の高いプロセスを調べる方法(--sort=-rss)
4.1 事前準備
stressコマンドを実行して、512M,256Mのメモリを獲得するプロセスをそれぞれ1つ起動します。なお、stressコマンドの詳細な使い方は、stressコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。
[root@server ~]# stress -m 1 --vm-bytes 256M --vm-hang 0 -q & [1] 1543 [root@server ~]# stress -m 1 --vm-bytes 512M --vm-hang 0 -q & [2] 1545
4.2 動作確認
プロセスが使用しているメモリ使用量(RSS)を降順に表示します。以下の実行例を確認すると、プロセスのメモリ使用量が降順に表示されていることがわかります。
[root@server ~]# ps ax --sort=-rss -o command,pid,ppid,vsz,rss|head -n 5 COMMAND PID PPID VSZ RSS stress -m 1 --vm-bytes 512M 1546 1545 531600 524456 stress -m 1 --vm-bytes 256M 1544 1543 269456 262288 /usr/bin/python2 -Es /usr/s 616 1 359088 29808 /usr/bin/python2 -Es /usr/s 937 1 574280 19484
pkillコマンドを実行して、stressプロセスを終了します。
[root@server ~]# pkill stress [1]- Terminated stress -m 1 --vm-bytes 256M --vm-hang 0 -q [2]+ Terminated stress -m 1 --vm-bytes 512M --vm-hang 0 -q
5 ディスクアクセスの割合が高いプロセスを調べる方法
iotopコマンドを使って、ディスクアクセスが多いプロセスを調べてみます。なお、iotopコマンドの詳細な使い方は、iotopコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。
[root@server ~]# iotop
stressコマンドを実行します。
[root@server ~]# stress -d 1 -q & [1] 4682
以下の実行例を確認すると、stressコマンドで起動したプロセスがiotopコマンド実行結果の最上位に表示されていることがわかります。
Y 参考図書
TECHNICAL MASTER はじめてのAlmaLinux 9 & Rocky Linux 9 Linuxサーバエンジニア入門編
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ