perfインストール
14502 ワード
最終的な解決策:
最新版カーネルのlinuxシステムをインストールします.
====================================
compiler-rtをコンパイルすると、
linux/perf_が見つかりませんevent.h:
解決策:
perfの使用の準備
perfをインストールするのは簡単です.2.6があれば.31以上のカーネルソースコードは、tools/perfディレクトリに入り、次の2つのコマンドを入力します.
Redhat Enterprise 4.3の静的コンパイルperf
http://blog.csdn.net/justlinux2010/article/details/15340261
perfmon 2は開発およびメンテナンスされなくなりました.
perfmon 2はLinuxカーネルを修正する必要があります.kernel interfaceとlibpfmにはそれぞれバージョン番号があります.perfmon2.xはkernel interfaceのバージョン番号を表します.perfmonはツールを指します.Linux 2.6.31以降、performance monitoringへの支援(Linux Performance Counter subsystem)があり、kernelを修正する必要はなくなりました.libpfm 4はLinux原生支援を利用して開発されたレターライブラリである.
pfmon & libpfm3
PEBSは、サンプリング上の誤差(10.3 Sampleng modules,5.Precise Event-Based Sampleng(PEBS))を回避するために使用されるPrecise Event-Based Samplengというフルネームである.PEBSを使用するには、perfmonバージョンのカーネルインタフェースが2.81以上であり、特定のカーネルモジュールをロードする必要があると判断する必要があります.
Uncoreは、単一コアではないsocket-levelのカウンタを表します.Umaskはイベントを修飾するために使用することができる(4.9 Using events with unit masks).
サンプリング
perf & libpfm4
概要
Linuxカーネルは
インストールと使用
showevtinfo
Umaskはいずれも
Modifは次のように使用できます.
PBES
その他
最新版カーネルのlinuxシステムをインストールします.
====================================
compiler-rtをコンパイルすると、
linux/perf_が見つかりませんevent.h:
解決策:
perfの使用の準備
perfをインストールするのは簡単です.2.6があれば.31以上のカーネルソースコードは、tools/perfディレクトリに入り、次の2つのコマンドを入力します.
make
make install
Redhat Enterprise 4.3の静的コンパイルperf
http://blog.csdn.net/justlinux2010/article/details/15340261
perfmon 2は開発およびメンテナンスされなくなりました.
perfmon 2はLinuxカーネルを修正する必要があります.kernel interfaceとlibpfmにはそれぞれバージョン番号があります.perfmon2.xはkernel interfaceのバージョン番号を表します.perfmonはツールを指します.Linux 2.6.31以降、performance monitoringへの支援(Linux Performance Counter subsystem)があり、kernelを修正する必要はなくなりました.libpfm 4はLinux原生支援を利用して開発されたレターライブラリである.
pfmon & libpfm3
pfmon
とlibpfm3
のご利用はこちらをご覧ください.# http://git.kernel.org/?p=linux/kernel/git/eranian/linux-2.6.git;a=summary
$ git clone git clone git://git.kernel.org/pub/scm/linux/kernel/git/eranian/linux-2.6.git
$ wget http://sourceforge.net/projects/perfmon2/files/libpfm/libpfm-3.10.tar.gz/download
$ tar xvf libpfm-3.10.tar.gz; cd libpfm-3.10
# examples_v$ perfmon
$ cd examples_v2.x
# libpfm
$ pfmon -I
pfmlib version: 3.9
kernel perfmon version: 2.9
# perfmon 2.9
$ ./self
sycall base 297
major version 2
minor version 9
# libpfm
$ pfmon -V
pfmon version 3.8 Date: Jul 17 2009
Copyright (C) 2001-2007 Hewlett-Packard Company
#
$ pfmon -l
#
$ pfmon -i UNC_QMC_NORMAL_READS
Name : UNC_QMC_NORMAL_READS
Code : 0x2c
Counters : [ 20 21 22 23 24 25 26 27 ]
Desc : QMC channel 0 normal read requests
Umask-00 : 0x01 : [CH0] : QMC channel 0 normal read requests
Umask-01 : 0x02 : [CH1] : QMC channel 1 normal read requests
Umask-02 : 0x04 : [CH2] : QMC channel 2 normal read requests
Umask-03 : 0x07 : [ANY] : QMC normal read requests
PEBS : No
Uncore : Yes
PEBSは、サンプリング上の誤差(10.3 Sampleng modules,5.Precise Event-Based Sampleng(PEBS))を回避するために使用されるPrecise Event-Based Samplengというフルネームである.PEBSを使用するには、perfmonバージョンのカーネルインタフェースが2.81以上であり、特定のカーネルモジュールをロードする必要があると判断する必要があります.
$ pfmon --smpl-module=pebs
Uncoreは、単一コアではないsocket-levelのカウンタを表します.Umaskはイベントを修飾するために使用することができる(4.9 Using events with unit masks).
$ pfmon --system-wide --cpu-list=1 -u -k -e UNC_QMC_NORMAL_READS:CH2 ls
サンプリング
pfmon
サンプリングの流れについては10を参照してください.Sampling with pfmon. pfmon
は、–short-smpl-period
と–long-smpl-periods
の2つのオプションを提供し、イベントが発生するたびにサンプリングされる回数を指定します.後者はサンプリング時のkernel bufferへのアクセスによる誤差を解消するための1)である.--short-smpl-period=500,000 --smpl-periods-random=1000000:1000000
pfmon
はサンプリングサイクルを調整するために使用され、seedカラムは–smpl-periods-random
2.2以降は使用されないことに注意する.2).調整後の範囲はmask+/-periodsです.perf & libpfm4
概要
Linuxカーネルは
perfmon
を提供し、Linux Performance Counter subsystemとも呼ばれ、そのヘッダは perf_events
である.その紹介については、Performance Counters for LinuxとThe future of perf eventsを参照してください./usr/include/linux/perf_event.h
はperf
に対応するツールであり、pfmon
から取り付けることができる.書類は/usr/src/linux/tools/perf
で探してください./usr/src/linux/tools/perf
コードを更新する必要があるかどうか、インストール時に注意してください.3)tools/perf
の開発に関する討論列を参照してください.http://thread.gmane.org/gmane.comp.linux.perfmon2.devel/1312/focus=1350 インストールと使用
# http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
# 2.6.31
$ uname -r
2.6.38-rc7-00051-gcbdbb4c-dirty
$ cd /usr/src/linux/tools/perf
$ sudo make NO_LIBPYTHON=1
$ sudo cp perf perf-archive /usr/local/bin
$ git clone git://perfmon2.git.sourceforge.net/gitroot/perfmon2/libpfm4
$ cd libpfm4; make
$ cd examples
# , 。-h
$ ./showevtinfo [-h]
#-----------------------------
IDX : 90177536
PMU name : ppc970 (PPC970)
Name : PM_LSU_REJECT_RELOAD_CDF
#-----------------------------
IDX : 106954771
PMU name : perf (perf_events generic PMU)
Name : PERF_COUNT_HW_CACHE_BPU
#
$ ./check_events PERF_COUNT_HW_CACHE_ITLB
perf_events
には、共通のイベント名のみがリストされます.サンプリングプラットフォーム固有のイベントが必要な場合は、perf list
を参照してください.Documentation/perf-list.txt
は、evt2raw
のためにイベントを符号化するために使用される.プラットフォーム上で提供されるイベントは、perf
によって問い合わせることができる.4) # X86
$ cd libpfm4/perf_examples
$ ./evt2raw inst_retired:any_p
r5300c0
$ perf stat -e `evt2raw inst_retired:any_p` /bin/ls
$ cd libpfm4/perf_examples
$ ./task_smpl -e PERF_COUNT_HW_CACHE_ITLB:period=100 ls
showevtinfo
において、libpfm4/perf_examples
およびperf_util.h
は、perf_util.c
にhelper functionを提供する.トレースポイントはFun with tracepointsを参照してくださいperf_evnets
cyclesというイベントを除いて,他のイベントのサンプリングに誤差がある5).perf
は、サンプリングされるイベントに修飾語を付け(perf
を参照)、PEBS(About Precise Event Based Sampling Performance Tuning Events)などのより正確なサンプリングに変更することができる.$ perf record -e branch-misses:p
showevtinfo
#-----------------------------
IDX : 23068780
PMU name : core (Intel Core)
Name : X87_OPS_RETIRED
Equiv : None
Flags : [precise]
Desc : FXCH instructions retired
Code : 0xc1
Umask-00 : 0x01 : PMU : [FXCH] : None : FXCH instructions retired
Umask-01 : 0xfe : PMU : [ANY] : [default] [precise] : Retired floating-point computational operations (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Umaskはいずれも
Documentation/perf-list.txt
の文字がなければ、[default]
の後にあるUmaskを付けなければならない.$ evt2raw -v X87_OPS_RETIRED
r53fec1 core::X87_OPS_RETIRED:ANY:e=0:i=0:c=0:u=1:k=1:precise=0
$ evt2raw -v X87_OPS_RETIRED:FXCH
r5301c1 core::X87_OPS_RETIRED:FXCH:e=0:i=0:c=0:u=1:k=1:precise=0
Modifは次のように使用できます.
$ ./perf_examples/evt2raw -v X87_OPS_RETIRED:precise=1:i=1
rd3fec1 core::X87_OPS_RETIRED:ANY:e=0:i=1:c=0:u=1:k=1:precise=1
PBES
Name
事件がPBESを支援しているかどうかは分からない.perf list
クエリーに変更します.# CPU PBES
$ dmesg | grep "Performance Events"
Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver.
その他
$ perf stat -e branches:pp ls
No permission to collect stats.
Consider tweaking /proc/sys/kernel/perf_event_paranoid.
showevtinfo
は、/proc/sys/kernel/perf_event_paranoid
を使用する一般的な使用者の権限6)を制御するために使用される.perf
のコメントを参照してください./*
* perf event paranoia level:
* -1 - not paranoid at all
* 0 - disallow raw tracepoint access for unpriv
* 1 - disallow cpu events for unpriv
* 2 - disallow kernel profiling for unpriv
*/
int sysctl_perf_event_paranoid __read_mostly = 1;