1 システムのモニタリングとパフォーマンスの最適化
この章では、最適なパフォーマンスを実現するためにシステムをモニタリングする際の情報とタスクについて説明します。また、Oracle Linuxに備えられた各種モニタリング・ツールについても説明します。
システム・パフォーマンスの問題について
パフォーマンスの問題は、その多くが構成エラーの結果であり、サポートされているソフトウェア、ハードウェア、ストレージ、ドライバおよびネットワークのコンポーネントについて事前にテストした検証済の構成を使用することで回避できます。検証済の構成では、スタック全体の実際のテストの実施を含む、Oracle Linuxデプロイメントのベスト・プラクティスを具体化します。オラクル社では、100を超える検証済の構成を公開しており、これらは自由にダウンロードできます。カーネル・パラメータの設定に関する詳細な推奨事項については、実行中のOracle Linuxリリースのリリース・ノートを参照してください。
たとえば、一般的な問題には、Oracle Database実行時のメモリー不足エラーと全般的なパフォーマンス低下が関連します。この問題の原因として考えられるのは、システム・グローバル領域(SGA)に対してHugePages機能を使用するようにシステムが構成されていないことです。HugePagesを使用すると、2から256MBの間にページ・サイズを設定できるため、カーネルで管理する必要があるページの総数が削減されます。HugePagesに関連付けられたメモリーはスワップ・アウトできないため、SGAはメモリーに常駐したままになります。このような問題は、検証済の構成を使用することと、カーネル・パラメータの推奨値を設定することで回避できます。
システム・パフォーマンスに影響するカーネル・パラメータの詳細は、『Oracle Linux 7: コア・システム構成の管理』を参照してください。Oracle Linuxシステムで機能が重複しているコマンドごとのマニュアル・ページを確認することもできます。
システムのパフォーマンスおよびモニタリング・ユーティリティの使用
パフォーマンスの問題は、システムのコンポーネント、ソフトウェアまたはハードウェアのいずれかが原因になる場合や、それらの相互作用が原因になる場合があります。Oracle Linuxでは、多数のパフォーマンス診断ユーティリティを使用でき、その中には、異なるハードウェア・コンポーネントごとにリソース使用率を監視および分析するツールや、複数のプロセスとそのスレッドでパフォーマンスの問題を診断するためのトレース・ツールなどがあります。
次の各ユーティリティを使用すると、システム・リソースの使用状況とエラーに関する情報を収集できるようになります。この情報は、過負荷のディスク、ネットワーク、メモリーまたはCPUが原因のパフォーマンスの問題を特定するために役立ちます。
- dmesg
-
システム・リソースの使用率に関するエラーが含まれる場合がある、カーネル・リング・バッファの内容を表示します。
util-linux-ng
パッケージによって提供されます。 - dstat
-
システム・リソースの使用率に関する統計を表示します。
dstat
パッケージによって提供されます。 - free
-
システム内の空きメモリーおよび使用済メモリーの量を表示します。
procps
パッケージによって提供されます。 - iostat
-
I/O統計をレポートします。
sysstat
パッケージによって提供されます。 - iotop
-
ディスクおよびスワップI/Oをプロセスごとに監視します。
iotop
パッケージによって提供されます。 - ip
-
ネットワーク・インタフェースの統計とエラーをレポートします。
iproute
パッケージによって提供されます。 - mpstat
-
プロセッサ関連の統計をレポートします。
sysstat
パッケージによって提供されます。 - nfsiostat
-
NFSマウントのI/O統計をレポートします。
nfs-utils
パッケージによって提供されます。 - sar
-
システム・アクティビティに関する情報をレポートします。
sysstat
パッケージによって提供されます。 - ss
-
ネットワーク・インタフェースの統計をレポートします。
iproute
パッケージによって提供されます。 - top
-
システムで実行中のタスクの動的なリアルタイム・ビューを提供します。
procps
パッケージによって提供されます。 - uptime
-
過去1分間、5分間および15分間のシステム・ロード平均を表示します。
procps
パッケージによって提供されます。 - vmstat
-
仮想メモリー統計をレポートします。
procps
パッケージによって提供されます。
システム・リソースの使用状況の監視
システム・リソースの定期的な収集とモニタリングは、システムの継続的な記録を得るために必要な作業です。最初に、標準的な操作条件で許容測定値のベースラインを確立します。そのベースラインを基準点として使用すると、メモリー不足やリソース使用率のスパイクなどの問題発生時の識別が容易になります。また、システム・パフォーマンスのモニタリングにより、将来的な拡大を計画することも、構成の変更が将来のパフォーマンスに与える影響を判断することもできます。
設定した秒数ごとにリアルタイムでモニタリング・コマンドを実行し、出力の変化を監視するには、watchコマンドを使用します。たとえば、次のコマンドでは、mpstatコマンドを毎秒1回実行します。
sudo watch -n 1 mpstat
また、多くのコマンドでサンプリング間隔を秒数で指定できます。次に例を示します。
sudo mpstat seconds
sarコマンドがインストールされている場合、このコマンドにより、システム実行中の10分ごとに統計が記録され、その情報が現在の月の各日ごとに保持されます。次のコマンドでは、現行月の日DD
に対してsarで記録されたすべての統計が表示されます。
sudo sar -A -f /var/log/sa/saDD
バックグラウンド・プロセスとしてsarコマンドを実行し、その後で-fオプションを使用すると表示できるファイルにデータを収集するには、次のようにします。
sudo sar -o datafile seconds count >/dev/null 2>&1 &
前のコマンドのcountは、記録するサンプルの数です。
OSWbbとOSWbbアナライザ(OSWbba)は、パフォーマンス統計の収集と分析のために役立つツールです。詳細は、「OSWatcher Black Boxの使用」を参照してください。
CPU使用率の監視
ユーティリティのuptime、mpstat、sar、dstatおよびtopを使用すると、CPU使用率を監視できます。システムのCPUコアがプロセスのコードの実行ですべて占有されていると、その他のプロセスは、CPUコアが解放されるか、そのコードを実行するようにスケジューラがCPUコアを切り替えるまで待機する必要があります。多数のプロセスが頻繁にキューに入れられている場合は、そのことがシステムのパフォーマンスにおけるボトルネックを表していることがあります。
コマンドのmpstat -P ALLとsar -u -P ALLでは、各CPUコアと全CPUコアの平均CPU使用率統計情報を表示します。
%idle
の値は、CPUでシステム・コードまたはプロセス・コードが実行されていなかった時間の割合を示します。%idle
の値が全CPUコア上の時間の大半である0%に近い場合、システムは、実行中のワークロードに対してCPUバインドされています。システム・コードの実行に費やす時間の割合(%system
または%sys
)は通常、%idle
が0%に近い場合は特に、30%を超えないようにする必要があります。
システム・ロード平均は、CPUコアで実行中、実行待機中またはディスクI/Oアクティビティの完了待機中のプロセスの一定期間の平均数を表します。ビジー・システムでは、uptimeまたはsar -qでレポートされるロード平均は通常、5分間または15分間の期間でCPUコア数の2倍を超えないようにする必要があります。ロード平均がCPUコア数の4倍を長期間超える場合、システムはオーバーロードです。
ロード平均(ldavg-*
)に加えて、sar -qコマンドでは、現在実行待機中のプロセスの数(実行キュー・サイズ、runq-sz
)、およびプロセスの合計数(plist_sz
)がレポートされます。runq-sz
の値では、CPU飽和の指標も提供されます。
ユーザーおよびアプリケーションがシステムの応答に関する問題を経験しないような、標準負荷におけるシステムの平均ロードを確認し、このベンチマークからの偏差を一定期間調べます。ロード平均の大幅な上昇は、重大なパフォーマンスの問題を示す場合があります。
持続的で非常に大きいロード平均または実行キュー・サイズと低い%idle
の組合せは、ワークロードに対してCPU性能が不十分であることを示す場合があります。CPU使用率が高い場合は、dstatまたはtopなどのコマンドを使用して、原因である可能性が最も高いプロセスを判別します。たとえば、次のdstatコマンドでは、CPU、メモリーおよびブロックI/Oを最も集中的に使用しているプロセスが示されます。
sudo dstat --top-cpu --top-mem --top-bio
topコマンドでは、CPUアクティビティのリアルタイムの表示が提供されます。デフォルトで、topでは、システム上の最もCPU集中型のプロセスがリストされます。その上部のセクションに、topでは、過去1分間、5分間および15分間のロード平均、実行中およびスリープ中のプロセス(タスク)数、合計CPU使用率とメモリー使用量などの一般情報が表示されます。その下部のセクションに、topでは、プロセスID番号(PID)、プロセス所有者、CPU使用率、メモリー使用量、実行時間、コマンド名など、プロセスのリストが表示されます。デフォルトで、リストはCPU使用率でソートされ、CPUの上位コンシューマが最初にリストされます。topで表示されるフィールドを選択するにはf
、フィールドの順序を変更するにはo
、またはソート・フィールドを変更するにはO
を入力します。たとえば、On
と入力すると、メモリー使用量の割合フィールド(%MEM
)でリストがソートされます。
メモリー使用量の監視
sar -rコマンドでは、使用中の物理メモリーの割合である%memused
など、メモリー使用量の統計がレポートされます。
sar -Bでは、1秒間にkswapd
デーモンによってスキャンされるメモリー・ページの数であるpgscank/s
、1秒間に直接スキャンされるメモリー・ページの数であるpgscand/s
など、メモリー・ページングの統計がレポートされます。
sar -Wでは、1秒間にスワップインおよびスワップアウトされるページの数であるpswpin/s
とpswpout/s
など、スワッピングの統計がレポートされます。
%memused
が100%に近く、スキャン率が毎秒200ページを継続的に超えている場合、システムはメモリー不足です。
システムで実メモリーまたは物理メモリーが不足し、スワップ領域の使用が開始されると、そのパフォーマンスは大幅に低下します。スワップ領域が不足した場合は、プログラムまたはオペレーティング・システム全体がクラッシュする可能性があります。freeまたはtopで、使用可能なスワップ領域がわずかであることが示された場合は、メモリーが少なくなっていることも示しています。
dmesgコマンドからの出力には、ブート時に検出された、物理メモリーに関する問題の通知が含まれている場合があります。
ブロックI/O使用量の監視
iostatコマンドでは、デバイスがアクティブである時間を平均データ転送速度と比較して監視することによって、ブロックI/Oデバイスの負荷が監視されます。この情報を使用すると、ディスクおよびホスト・アダプタ全体でI/O負荷を平均化するようにシステム構成を調整できます。
iostat -xでは、デバイスに対するI/Oリクエストの処理に費やしたCPU時間の割合である%util
、そのデバイスに対して発行されたI/Oリクエストの平均キューの長さであるavgqu-sz
など、ブロックI/Oアクティビティに関する拡張統計が1秒間隔でレポートされます。%util
が100%に近い、またはavgqu-sz
が1より大きい場合は、デバイス飽和が発生しています。
sar -dコマンドを使用して、%util
やavgqu-sz
の値など、ブロックI/Oアクティビティに関してレポートすることもできます。
iotopコマンドは、過剰なディスクI/Oの原因になっているプロセスの識別に役立ちます。iotopのユーザー・インタフェースはtopと同様です。その上部のセクションに、iotopでは、1秒当たりのディスク入出力使用量の合計がバイト数で表示されます。その下部のセクションに、iotopでは、1秒当たりのディスク入出力使用量(バイト数)、ディスクからページへのスワップ・インまたはI/Oの待機に費やした時間の割合、およびコマンド名など、各プロセスに対するI/O情報が表示されます。左矢印キーと右矢印キーを使用するとソート・フィールドを変更でき、[A]
を押すと、I/O単位を1秒当たりのバイト数と合計バイト数で切り替えることができ、[O]
を押すと、すべてのプロセスの表示とI/Oを実行しているプロセスのみの表示を切り替えることができます。
グラフィック・システム・モニターの使用
GNOMEデスクトップ環境には、グラフィカル・システム・モニターが組み込まれています。これを使用して、システム構成、実行中プロセス、リソース使用率およびファイル・システムに関する情報を表示できます。
システム・モニターを表示するには、次のコマンドを使用します。
sudo gnome-system-monitor
リソース・タブに次が表示されます。
-
グラフィック形式のCPU使用率履歴および現在のCPU使用率の割合。
-
グラフィック形式のメモリー使用量とスワップ使用量の履歴、および現在のメモリー使用量とスワップ使用量。
-
グラフィック形式のネットワーク使用状況の履歴、受信および送信ごとの現在のネットワーク使用状況、および受信データと送信データの合計量。
システム・モニターのマニュアルを表示するには、[F1]
を押すか、「Help」メニューから「Contents」を選択します。