7

私が使用するシステムは ubuntu-12.10-desktop-amd64 です

perf をインストールします

apt-get install linux-tools linux-tools-common linux-tools-3.5.0-40

を使用するperf listと、期待どおりにすべてのイベントがリストされます。しかし、私が使用するperf statと、結果は異常なようです

perf stat ls

結果は次のとおりです。

 Performance counter stats for 'ls':

      3.988508 task-clock                #    0.678 CPUs utilized          
           172 context-switches          #    0.043 M/sec                  
             0 CPU-migrations            #    0.000 K/sec                  
           276 page-faults               #    0.069 M/sec                  
      <not supported> cycles                  
      <not supported> stalled-cycles-frontend 
      <not supported> stalled-cycles-backend  
      <not supported> instructions            
      <not supported> branches                
      <not supported> branch-misses           

   0.005883014 seconds time elapsed

これらのイベントがサポートされていないのはなぜですか? これらのイベントを有効にするために必要な操作はありますか?

4

1 に答える 1

3

Ubuntu を仮想化しましたが、ハードウェア カウンター (PMU/PMC MSR レジスタ) は仮想化されていません。Xen (またはその他の仮想化ソフトウェア) は、PMC レジスタの操作方法、ゲスト用のレジスタのエミュレート方法、および要求を実際のハードウェアに転送する方法を知っている必要があります。Xenで行われたかどうかはわかりません。しかし、Amazon AWS EC2 の場合、基本的なハードウェア イベントのみ (および専用インスタンスのみ) を実装するのに何年もかかりました。それらは 2017 年 5 月にのみ実行されました: http://www.brendangregg.com/blog/2017-05-04/the- pmcs-of-ec2.html「EC2 の PMC: IPC の測定」Brendan Gregg 著:

パフォーマンス モニタリング カウンター (PMC) は、AWS EC2 クラウドの専用ホスト タイプから公開されています。世界中のPMCオタクが喜ぶ!(私たち 6 人全員) ... この投稿では、EC2 で利用可能な専用ホスト専用の PMC (例: m4.16xl、i3.16xl) を要約し、IPC の測定を実演します。PMC は HPC (ハードウェア パフォーマンス カウンター) やその他の名前でも知られていることに注意してください。

また、Xen について、また Xen がまれに有効になる理由についても説明しています。

これはクラウドでもどのように可能ですか?

クラウド ゲストがどのようにして PMC を読み取ることができるのか疑問に思われるかもしれません。これは次のように機能します。PMC は、構成用の特権命令 RDMSR および WRMSR (これについては EC2 の MSR で説明しました)、および読み取り用の RDPMC を介して管理されます。特権命令は、ハイパーバイザーによって処理されるゲスト終了を引き起こします。その後、ハイパーバイザーは独自のコードを実行し、実際のハードウェアで許可されている場合は PMC を構成し、コンテキストがゲスト間で切り替わるたびにその状態を保存および復元できます。

メインストリームの Xen は、仮想パフォーマンス監視ユニット (vPMU) で数年前にサポートされました。これはvpmu=on、Xen ブート ラインで使用して構成されます。ただし、オンにすることはほとんどありません。なんで?

何百もの PMC があり、それらはすべて vpmu=on で公開されています。いくつかはセキュリティ上のリスクをもたらす可能性がありますか? PMC サイドチャネル攻撃を示す多くの論文が公開されています。これにより、既知のターゲット プログラムに入力を送信しながら特定の PMC を測定すると、最終的にターゲットの状態のビットが漏洩する可能性があります。これらは実際には起こりそうになく、そのような攻撃は PMC に限定されませんが (たとえば、タイミング攻撃もあります)、デフォルトですべての PMC を有効にしたくないという偏執的なセキュリティ ポリシーを理解できます。

したがって、解決策:

  • 仮想化されていない (ネイティブ、ホスト) Linux (Ubuntu またはその他) で perf を実行します。
  • 起動オプションを有効にして Xen を使用しvpmu=onます (この PC の仮想ゲストを信頼できないユーザーに提供しない場合のみ)
  • 仮想化された PMU で他の仮想化ソリューションを使用します。VirtualBox ページに従って、いくつかの基本的なイベントが Vmware で有効になっている可能性があります。一部は KVM によってゲスト用にエミュレートされます: https://stackoverflow.com/a/43460663

PS: oldperf listは何もチェックしませんでした。サポートされていない/実装されていないハードウェア イベントであっても、すべての既知のイベントを出力しただけです。また、CPU イベントの実際のセットは出力されませんでした。libpfm4 にはテーブルがあり、Intel 固有の名前を使用するために、github.com/andikleen/pmu-tools の Intel 固有のperf ラッパー ocperf.pyがあります。

于 2017-05-30T03:52:38.607 に答える