linux ã§ã‚µãƒ³ãƒ—リングベースã®ãƒ—ãƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’å–ã‚‹å ´åˆã¯ã€æ•°å¹´å‰ã¾ã§ã¯ oprofile ãŒå®šç•ªã§ã—ãŸãŒã€æœ€è¿‘㯠perf ãŒä¸»æµã§ã™ã€‚oprofile よりも perf ã®ã»ã†ãŒé«˜æ©Ÿèƒ½ã§ã€ã‹ã¤ç°¡å˜ã«åˆ©ç”¨ã§ãã¾ã™ã€‚
以下ã€æœ¬ã‚¨ãƒ³ãƒˆãƒªã§ã¯ã€perfコマンドã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã€perfコマンドã®è‡ªå‰ãƒ‘ッケージã®ä½œæˆæ–¹æ³•ã€ã«ã¤ã„ã¦æ‰‹é †ã‚’ã¾ã¨ã‚ã¾ã™ã€‚
perfコマンドã®å…·ä½“çš„ãªä½¿ã„æ–¹ç‰ã¯ã€åˆ¥ã‚¨ãƒ³ãƒˆãƒªã«æ›¸ãã®ã§ã€ãã¡ã‚‰ã‚’ã”覧ãã ã•ã„。
インストール方法
大抵ã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ューションã§ã¯ã€ã™ã§ã«ãƒ‘ッケージãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã™
debian ãªã‚‰
$ sudo apt-get install linux-perf
ã¾ãŸã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’指定ã—ã¦ï¼ˆãŸã¨ãˆã°ã€€linux kernel 5.3ç³»ã®å ´åˆï¼‰
$ sudo apt-get install linux-perf-5.3
ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ãã¾ã™
$ yum install perf
ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã‚‹çˆã§ã™ï¼ˆæ‰‹å…ƒã«redhatãŒç„¡ã„ã®ã§ã€ã†ã‚覚ãˆã§ã™ï¼‰
自å‰ã§ã€ãƒ‘ッケージを作æˆã™ã‚‹æ–¹æ³•
perf ã¯ã‚«ãƒ¼ãƒãƒ«ã¨é€£æºã—ã¦å‹•ä½œã™ã‚‹ãŸã‚〠カーãƒãƒ«ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ perf ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’åˆã‚ã›ã¦ãŠãå¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ãã®ãŸã‚カーãƒãƒ«ã‚’自å‰ãƒ“ルドã—ã¦ã„ã‚‹å ´åˆã¯ã€ ディストリビューション標準㮠perf パッケージãŒåˆ©ç”¨å‡ºæ¥ã¾ã›ã‚“。ãã“ã§ã€ perf ã®ãƒ‘ッケージを自å‰ãƒ“ルドã—ã¦ã¿ãŸã®ã§ã€æ‰‹é †ã‚’メモã—ã¾ã™ã€‚作æ¥ã—ãŸç’°å¢ƒã¯ debian ã§ã™ã€‚
å…ˆãšã€subversion 㧠パッケージã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’å–ã£ã¦ãã¾ã™ã€‚
$ svn co svn://svn.debian.org/kernel/dists/trunk/linux-tools
次ã«ã‚«ãƒ¼ãƒãƒ«ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’ダウンãƒãƒ¼ãƒ‰ã€‚今回ã¯3.15.3を使ã„ã¾ã—ãŸ
$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.3.tar.xz
å…ˆã»ã©subversionã§æŒã£ã¦ããŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®ã‚るディレクトリã«ç§»å‹•ã—ã¦
$ cd linux-tools
changelog ファイルを編集ã—ã¾ã™ã€‚debian ã®ãƒ‘ッケージã¯ã€åŸºæœ¬çš„ã«changelogã‹ã‚‰ãƒ‘ッケージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’決ã‚ã‚‹ã®ã§
changelog ã®å…ˆé エントリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’3.15ã«ä¿®æ£ã—ã¾ã™
$ vi debian/changelog
次ã«ã€å°‚用ã®ã‚¹ã‚¯ãƒªãƒ—トã§ã€ãƒ‘ッケージã®ã²ãªå½¢ã‹ã‚‰ 3.15用㮠linux-tools ã®ãƒ‘ッケージを生æˆã—ã¾ã™
$ ./debian/bin/genorig.py ../linux-3.15.3.tar.xz $ cd - $ tar xfJ orig/linux-tools_3.15.orig.tar.xz
以上ã®ä½œæ¥ã§ã€ linux-tools-3.15 ã¨è¨€ã†åå‰ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒå‡ºæ¥ä¸ŠãŒã‚Šã¾ã™ã€‚
ã•ã‚‰ã«ã€linux-tools-3.15/debian/control ファイルを自動生æˆã—ã¾ã™
$ cd linux-tools-3.15 $ cp -a ../linux-tools/debian . $ ./debian/bin/gencontrol.py
最後㫠changelog を微調整ã—ã¾ã™ã€‚
$ dch -i
後ã¯ã€ *.deb をビルドã™ã‚‹ã ã‘ã§ã™ã€‚
ã¾ãšä¾å˜é–¢ä¿‚を確èªã—ã¦ã€ä¸è¶³ãƒ‘ッケージãŒã‚ã‚Œã°ã€apt-get install ã§è¿½åŠ インストールã—ã¾ã™
$ dpkg-checkbuilddeps
次ã«ãƒ“ルド。念ã®ç‚ºä¸€åº¦ clean ã—ã¦ä½™è¨ˆãªãƒ•ã‚¡ã‚¤ãƒ«ã‚’消ã—ã¦ã‹ã‚‰ã€ãƒ“ルドã—ã¾ã™
$ make -f debian/rules clean $ dpkg-buildpackage -us -uc -rfakeroot
実際ã«ãƒ“ルドã—ã¦ã¿ã‚‹ã¨ã€ linux-3.15.3/drivers/staging/usbip/uapi/usbip.h  ãŒç„¡ã„ã¨ã„ã†ãƒ“ルドエラーãŒå‡ºã¾ã—ãŸã€‚ã“ã®ã‚ˆã†ãªå ´åˆã¯ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’ä¿®æ£ã—ã¦
$ dpkg-source --commit
ã§ãƒ‘ッãƒã‚’作æˆã—ã¾ã™
å†åº¦ãƒ“ルドã™ã‚‹ã¨
$ dpkg-buildpackage -us -uc -rfakeroot
ã‚ã§ãŸã〠linux-tools-3.15_3.15-1.1_amd64.deb ãŒå‡ºæ¥ä¸ŠãŒã‚Šã¾ã—ãŸã€‚
ã‚ã¨ã¯debコマンドã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã€ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã¯å®Œäº†ã§ã™
$ sudo dpkg -i linux-tools-3.15_3.15-1.1_amd64.deb
動作確èª
ã¨ã‚Šã‚ãˆãš /bin/ls ã®ãƒ—ãƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’å–ã£ã¦ã¿ã¾ã™
$ perf stat /bin/ls
ã“ã‚Œã§ã€ç°¡å˜ãªçµ±è¨ˆæƒ…å ±ãŒå¾—られã¾ã™ã€‚
より詳ã—ã„perfコマンドã®ä½¿ã„æ–¹ã¯ã€åˆ¥ã‚¨ãƒ³ãƒˆãƒª http://d.hatena.ne.jp/pyopyopyo/20140817/p1 ã«ã¾ã¨ã‚ã¾ã™ã€‚