現在位置: ホーム / Red Hat Ch. / Red Hat Blog / Performance Co-Pilotでパフォーマンス測定を簡単にしよう

Performance Co-Pilotでパフォーマンス測定を簡単にしよう

Red Hat Enterprise Linux 7(そして6.7)にはパフォーマンス監視や記録のために、従来のsysstatなどに加えてPerformance Co-Pilot(PCP)が含まれました。PCPは特に複数台からなる大規模なシステムのパフォーマンス監視に便利な特長を多くもっています。今回はPCPをご紹介します。

レッドハットの森若です。Red Hat Enterprise Linux 7(そして6.7)にはパフォーマンス監視や記録のために、従来のsysstatなどに加えてPerformance Co-Pilot(PCP)が含まれました。

PCPは2000年にSGIがIRIX用に出荷してから現在まで15年ほどの歴史があリ、特に複数台からなる大規模なシステムのパフォーマンス監視に便利な特長を多くもっています。

Performance Co-Pilot(PCP)とは?

Performance Co-PilotはCPU使用率やディスクアクセスなどのパフォーマンスメトリクスを収集、分析するためのフレームワークです。データ収集のためのデーモンと、さまざまな形で出力するためのクライアントが提供されています。

PCPのアーキテクチャはデータ収集をするデーモンとクライアントにわかれています。クライアントはローカルホストだけでなく、リモートサーバへの接続ができるので、リモート環境や複数台からなる環境のパフォーマンス監視をごく自然におこなうことができます。

データ収集デーモンには、収集をおこないクライアントからの接続を受けつけるpmcdと、実際に測定対象からパフォーマンスデータを収集するpmdaの2種類のプログラムが登場します。pmdaは測定対象ごとに、kernel, linux, cisco, mounts, などのコンポーネントに分かれていて必要なものだけを選択して利用します。pmdaはユーザが新しく作成して拡張することもできます。

 

pcp_arch.png

PCPの名前空間

PCPであつかうメトリクスは名前、データ型、単位の組み合わせで定義されており、名前はツリー状の構造を持っています。たとえばCPUの使用量であれば、kernel.percpu.cpu.user のようにPMDAの名前からはじまり、順に分類が細かくなっていきます。現在のシステムで利用可能な測定値の名前一覧はpminfoコマンドで取得できます。

各項目の説明はpminfo -t で、現在の値はpminfo -fで取得できます。各項目には複数のインスタンスを持つことができるので、たとえばディスク性能の項目についてはパーティション毎などのインスタンスが含まれます。以下はpminfoで項目の意味と値や単位を確認する例です。

$ pminfo -dtf disk.partitions.read

disk.partitions.read [read operations metric for storage partitions]
   
Data Type: 32-bit unsigned int  InDom: 60.10 0xf00000a
   
Semantics: counter  Units: count
   
inst [0 or "sdb1"] value 29668
   
inst [1 or "sda1"] value 257
   
inst [2 or "sda2"] value 2
   
inst [3 or "sda5"] value 120259
   
inst [4 or "sr0"] value 0
   
inst [5 or "sdc1"] value 358

特殊な項目としてハードウェアインベントリhinvがあり、この項目はCPU数やメモリの総量など基本的に変化しないメトリクスを保持します。

PCPのクライアント

PCPではあらかじめ様々な種類のクライアントが用意されています。クライアントの一部を眺めてみましょう。

GUIでグラフを作成するpmchart

pmchart.png

vmstat風の出力を出してくれるpmstat

pmstat.png

top風の出力をおこなうpmatop

pmatop.png

オプションのクエリにしたがって任意のメトリクスを定期的に表示するpmval

pmval.png

トリガの設定とコマンド実行

クライアントの1つであるpmieでは専用の言語によりメトリクスを使った各種の条件でトリガーを設定し、コマンド実行やログ出力を行います。pmieconfコマンドであらかじめ用意されたテンプレートをカスタマイズしてpmieの設定を作成することもできます。

以下はpmieconfが生成する設定の例です。2分おきに測定し、ネットワークインタフェースのどれか1つでも帯域利用率が85%を越えていれば利用率とインタフェースをログに出力します。1度出力を行うと10分間は警告の出力を抑制します。

delta = 2 min;
per_netif.util =
some_inst (
   
( 100 * network.interface.total.bytes   /
   
    network.interface.baudrate   )
      
    > 85
   
&& network.interface.baudrate   > 0
) -> syslog 10 min "High network interface utilization" " %v%util[%i]@%h";

PCPのアーカイブ

PCPはsarとおなじように定期的に測定したパフォーマンスメトリクスをアーカイブへ保存することができます。クライアントとして実装されたpmloggerがアーカイブを作成します。それぞれのメトリクス毎にアーカイブへ記録する頻度を設定でき、たとえばCPU使用率は30秒ごとに、ディスク使用率は10分ごとに記録するような設定が可能です。pmloggerもリモート接続が可能なので、測定対象のサーバ上でもデータ収集用のサーバでも実行できます。

sarのアーカイブでは残念ながらバージョンやアーキテクチャによる非互換がありますが、PCPのアーカイブはOSやアーキテクチャから独立したフォーマットが策定されています。さらにPCPのバージョンからも独立しており、ドキュメントによれば15年前に保存されたアーカイブであっても最新版のPCPで問題なく読み込むことができるとのことです。このような特徴があるため、複数のバージョンやOSが混在している環境のパフォーマンス監視にも活躍します。

クライアントライブラリはリアルタイムの情報収集とアーカイブ参照の両方に対応しているので、ほとんどのクライアントはリアルタイムの確認と過去データのリプレイのどちらにも対応しています。過去のデータも現在のデータと同じように確認できるため、現在の性能と過去の性能を比較するような作業が容易になります。

他プログラムとの連携

PCPでは各種言語のライブラリが整備されており、たとえばLinuxサーバやDockerの管理インタフェースとしてRHEL7.1から導入されたcockpitも性能情報はPCP経由で取得しているなど、他のプログラムからの利用が容易になっています。ベンチマークなどで高度な分析をおこないたい場合にも、アーカイブをPythonなどのプログラムから読み込むことで様々な活用が可能となります。

関連情報

  • man PCPIntro
お問い合わせ

問い合わせボタン

RHEL サポート

最近の更新
Red Hat Enterprise Linux 7.4 public betaがでました 2017年05月26日
Automation with Ansibleコース(DO407 :4日間)のご紹介 2017年04月26日
RHELで新しいgitやPython3を使うには? 2017年03月29日
AnsibleとRed Hat Identity Managementを併用すると便利 2017年02月28日
Red Hat Satellite 6でerrataを適用してみる 2016年11月28日
VMware環境上でのRed Hat Enterprise Linux 7.2以前から7.3へアップデート時の注意点と、その解説 2016年11月24日
RHEL4の延長サポートおよびRHEL5の通常サポート終了 2016年10月17日
Red Hat Enterprise Linuxの互換性維持 2016年08月31日
RED HAT FORUM 2016 Tokyo The power of participation -アイデアとテクノロジーが生むオープンイノベーションの破壊力- 2016年08月12日
Red Hat Network ClassicからRed Hat Subscription Managementへ移行のおねがい 2016年07月27日
ABRTで障害時の情報収集とレポートを自動化しよう 2016年06月03日
Red Hat Enterprise Linux 7、使ってますか? 2016年04月27日
Red Hat Developer Programに参加して開発者用サブスクリプションを入手しよう 2016年04月01日
Relax and Recoverでのシステム回復 2016年03月08日
Red Hat Insightsとは 2015年11月13日
Red Hat Enterprise Linuxを仮想化環境で動作させる時の注意点 2015年10月05日
RHEL7でpingをreniceしようとすると失敗する話 2015年08月31日
Red Hat Satellite使いはじめガイド 2015年08月20日
ELS? EUS? RHELの延長サポート製品について知ろう 2015年08月13日
Performance Co-Pilotでパフォーマンス測定を簡単にしよう 2015年08月06日