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使用率の監視

ユーティリティのuptimempstatsardstatおよびtopを使用すると、CPU使用率を監視できます。システムのCPUコアがプロセスのコードの実行ですべて占有されていると、その他のプロセスは、CPUコアが解放されるか、そのコードを実行するようにスケジューラがCPUコアを切り替えるまで待機する必要があります。多数のプロセスが頻繁にキューに入れられている場合は、そのことがシステムのパフォーマンスにおけるボトルネックを表していることがあります。

コマンドのmpstat -P ALLsar -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/spswpout/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コマンドを使用して、%utilavgqu-szの値など、ブロックI/Oアクティビティに関してレポートすることもできます。

iotopコマンドは、過剰なディスクI/Oの原因になっているプロセスの識別に役立ちます。iotopのユーザー・インタフェースはtopと同様です。その上部のセクションに、iotopでは、1秒当たりのディスク入出力使用量の合計がバイト数で表示されます。その下部のセクションに、iotopでは、1秒当たりのディスク入出力使用量(バイト数)、ディスクからページへのスワップ・インまたはI/Oの待機に費やした時間の割合、およびコマンド名など、各プロセスに対するI/O情報が表示されます。左矢印キーと右矢印キーを使用するとソート・フィールドを変更でき、[A]を押すと、I/O単位を1秒当たりのバイト数と合計バイト数で切り替えることができ、[O]を押すと、すべてのプロセスの表示とI/Oを実行しているプロセスのみの表示を切り替えることができます。

 ファイル・システムの使用量の監視

sar -vコマンドでは、ディレクトリ・キャッシュ内の未使用キャッシュ・エントリの数(dentunusd)、および使用中のファイル・ハンドラ(file-nr)、inodeハンドラ(inode-nr)、擬似端末(pty-nr)の数がレポートされます。

nfsiostatは、マウントされている各NFSファイル・システムのI/O統計情報をレポートします。このコマンドが使用できない場合は、nfs-utilsパッケージをインストールしてください。

ネットワーク使用状況の監視

ip -s linkコマンドでは、送信バイト数(TX)と受信バイト数(RX)など、すべてのネットワーク・デバイスに対するネットワーク統計とエラーが表示されます。droppedおよびoverrunフィールドには、ネットワーク・インタフェース飽和の指標が示されます。

ss -sコマンドでは、各プロトコルに対するサマリー統計が表示されます。

グラフィック・システム・モニターの使用

GNOMEデスクトップ環境には、グラフィカル・システム・モニターが組み込まれています。これを使用して、システム構成、実行中プロセス、リソース使用率およびファイル・システムに関する情報を表示できます。

システム・モニターを表示するには、次のコマンドを使用します。

sudo gnome-system-monitor

リソース・タブに次が表示されます。

  • グラフィック形式のCPU使用率履歴および現在のCPU使用率の割合。

  • グラフィック形式のメモリー使用量とスワップ使用量の履歴、および現在のメモリー使用量とスワップ使用量。

  • グラフィック形式のネットワーク使用状況の履歴、受信および送信ごとの現在のネットワーク使用状況、および受信データと送信データの合計量。

システム・モニターのマニュアルを表示するには、[F1]を押すか、「Help」メニューから「Contents」を選択します。