Translated message

A translation of this page exists in English.

collectl ユーティリティーを使用した Red Hat Enterprise Linux のパフォーマンス問題をトラブルシューティングする方法

更新 -

collectl は Red Hat によって出荷もサポートもされていませんが、ユーザーやサードパーティーベンダーによって使用されることがあります。

注記: 現在、Red Hat のエンジニアが github のアップストリーム collectl プロジェクトのメンテナーを務めていますが、Red Hat は依然として RHEL 上の collectl を出荷しておらず、サポートも提供していません。

以下の情報は Red Hat が提供していますが、製品サポートのサービスレベルアグリーメント および 製品サポートの対象範囲 の対象外となります。collectl をインストールしても、システムが Red Hat Global Support Services チームによるサポートを受けられなくなるわけではありません。ただし、collectl は標準の Red Hat Enterprise Linux チャネルには同梱されていないため、Red Hat Global Support Services チームは collectl に関する問題や collectl のインストールおよび使用によって発生する問題をサポートまたはデバッグすることはできません。サードパーティーパッケージのインストールは、サードパーティーパッケージに関連する問題やサードパーティーパッケージによって発生する問題に対する Red Hat のサポートが制限されることをユーザーが理解した上で行うことになります。

collectl の入手方法

collectl コミュニティープロジェクトは https://github.com/sharkcz/collectl ⧉ で管理されており、Fedora コミュニティープロジェクトでも提供されています。
RHEL 6 および RHEL 7 の場合、collectl をインストールする最も簡単な方法は、Extra Packages for Enterprise Linux (EPEL) リポジトリーを使用することです。これは、Fedora コミュニティーによって管理されています。

注記: 以前は、メインのコミュニティープロジェクトは http://collectl.sourceforge.net/ ⧉ にありました。これは現在も存在しますが、最新バージョンは '4.3.1 Oct 31, 2018' であるとその Web ページの上部に記載されています。一方、https://sourceforge.net/projects/collectl/files/collectl/ ⧉ には、2023 年 6 月時点で利用可能な現行バージョンとして '4.3.8 Feb 07, 2023' が記載されています。更新の主な場所は、sourceforge.net のこの コメント に従って、上記の git hub に移動されました。

EPEL リポジトリーを設定するには、こちらの手順 に従ってください。セットアップが完了したら、以下のコマンドで collectl をインストールできます。

# yum install collectl     

パッケージは、次のリンクを使用して直接ダウンロードすることもできます。

  • RHEL 8 collectl は、collectl が RHEL 8 EPEL に追加されるまで、現時点では Sourceforge から直接ダウンロードする必要があります
wget https://sourceforge.net/projects/collectl/files/collectl/collectl-4.3.2/collectl-4.3.2.src.tar.gz/download -O /tmp/collectl-4.3.2.src.tar.gz
tar -hxvf /tmp/collectl-4.3.2.src.tar.gz
cd collectl
./INSTALL
cd ../
systemctl start collectl # start data collection service on host
systemctl enable collectl # optional: enable collectl server to be started at boot time
ls -ltr /var/log/collectl/* # where output from collectl is kept

注記:
collectl が git repo で利用可能になりました。
以下の簡単な git clone で必要なものを入手できます。

これは一般に公開されていますが、コードの変更とコミットは Red Hat のエンジニアによってのみ維持および更新されます。

https://github.com/sharkcz/collectl.git

git clone 後

# cd collectl
# ./INSTALL

RHEL7 以降の場合

# systemctl start collectl
# systemctl enable collectl

collectl の一般的な使用法

collectl の有効化

collectl ユーティリティーは、コマンドラインを使用して手動で実行することも、サービスとして実行することもできます。データは /var/log/collectl/*.raw.gz に記録されます。デフォルトでは、ログは 24 時間ごとにローテーションされます。サービスとして実行するには、以下を実行します。

# chkconfig collectl on       ## Optional step, enabled in runlevel 3, to start at boot time
# service collectl start

サンプル間隔

コマンドラインから手動で実行する場合、最初の間隔値は 1 になります。
サービスとして実行する場合、デフォルトのサンプル間隔 は以下のようになります。平均化を避けるために、1、30、60 のようにこれらを下げることが望ましい場合もあります。

# grep -i interval /etc/collectl.conf 
#Interval = 10
#Interval2 = 60
#Interval3 = 120

ログファイル

デーモンから自動的に実行される場合、出力ログファイルの場所は /etc/collect.conf 設定内で指定されます。この場所は、必要に応じて新しい場所に変更できます。/etc/collectl.conf を編集し、-f オプションの後のファイルパスを新しい場所のファイル名に変更します。

grep -i daemoncommands /etc/collectl.conf | grep -v "^#"
DaemonCommands = -f /var/log/collectl -r00:00,7 -m -F60 -s+YZ -i1

collectl を使用したディスクまたは SAN ストレージのパフォーマンスのトラブルシューティング

60 秒間隔で収集されるプロセスデータを除くすべてのデータのデフォルトは 10 秒ですが、ストレージパフォーマンス分析の場合でも、これはそのままにしておくのが最適です。

SAR Equivalence Matrix には、経験豊富な SAR ユーザーが collectl の使用方法を学習できるように、一般的な SAR コマンドに等しいものが表示されています。

以下のサンプルコマンドは、/var/log/collectl/HOSTNAME-20130416-164506.raw.gz ファイルの CPU、ネットワーク、ディスクの詳細な概要を表示します。

collectl -scnd -oT -p HOSTNAME-20130416-164506.raw.gz
# <----CPU[HYPER]-----><----------Disks-----------><----------Network---------->
#Time cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut
16:46:10 9 2 14470 20749 0 0 69 9 0 1 0 2
16:46:20 13 4 14820 22569 0 0 312 25 253 174 7 79
16:46:30 10 3 15175 21546 0 0 54 5 0 2 0 3
16:46:40 9 2 14741 21410 0 0 57 9 1 2 0 4
16:46:50 10 2 14782 23766 0 0 374 8 250 171 5 75
....

次の例は、17:00 から 17:01 までの 1 分間 の出力を示しています。

collectl -scnd -oT --from 17:00 --thru 17:01 -p HOSTNAME-20130416-164506.raw.gz
# <----CPU[HYPER]-----><----------Disks-----------><----------Network---------->
#Time cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut
17:00:00 13 3 15870 25320 0 0 67 9 251 172 6 90
17:00:10 16 4 16386 24539 0 0 315 17 246 170 6 84
17:00:20 10 2 14959 22465 0 0 65 26 5 6 1 8
17:00:30 11 3 15056 24852 0 0 323 12 250 170 5 69
17:00:40 18 5 16595 23826 0 0 463 13 1 5 0 5
17:00:50 12 3 15457 23663 0 0 57 9 250 170 6 76
17:01:00 13 4 15479 24488 0 0 304 7 254 176 5 70

次の例では、詳細なディスク データを出力します。

collectl -scnD -oT -p HOSTNAME-20130416-164506.raw.gz

### RECORD 7 >>> tabserver <<< (1366318860.001) (Thu Apr 18 17:01:00 2013) ###

# CPU[HYPER] SUMMARY (INTR, CTXSW & PROC /sec)
# User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg1 Avg5 Avg15 RunT BlkT
8 0 3 0 0 0 0 86 8 15K 24K 0 638 5 1.07 1.05 0.99 0 0

# DISK STATISTICS (/sec)
# <---------reads---------><---------writes---------><--------averages--------> Pct
#Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Util
sda 0 0 0 0 304 11 7 44 44 2 16 6 4
sdb 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-0 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-1 0 0 0 0 5 0 1 4 4 1 2 2 0
dm-2 0 0 0 0 298 0 14 22 22 1 4 3 4
dm-3 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-4 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-5 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-6 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-7 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-8 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-9 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-10 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-11 0 0 0 0 0 0 0 0 0 0 0 0 0

# NETWORK SUMMARY (/sec)
# KBIn PktIn SizeIn MultI CmpI ErrsI KBOut PktOut SizeO CmpO ErrsO
253 175 1481 0 0 0 5 70 79 0 0
....

よく使われるオプション

これらは、特定のタイプのすべてのデータの合計であるサマリーを生成します。
- b - バディー情報 (メモリー断片化 cpu)
- d - ディスク
- f - nfs
- i - inode
- j - CPU による割り込み
- l - lustre
- m ­- メモリー
- n ­- ネットワーク
- s ­- ソケット
- t ­- tcp
- x - Interconnect
- y - Slabs (システムオブジェクトキャッシュ)

これらは通常、デバイスレベルに詳細なデータを生成します (デバイスレベルに限定されるものではなりません)。
- C - 個々の CPU (sj または sJ の場合の割り込みを含む)
- D - 個別のディスク
- E - 環境 (fan、power、temp) [ipmitool が必要]
- F ­- nfs データ
- J - 割り込み番号による CPU による割り込み
- L ­- lustre
- M - メモリー NUMA/ノード
- N - 個別のネットワーク
- T - tcp の詳細 (大量のデータ)
- X - 相互接続ポート/レール (Infiniband/Quadrics)
- Y ­- slabs/slubs
- Z - プロセス

以下は、最も便利なスイッチのリストです。
- -sD 詳細なディスクデータ
- -sC 詳細な CPU データ
- -sN 詳細なネットワークデータ
- -sZ 詳細なプロセスデータ

Comments