MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

吉岡 弘隆 - よしおか ひろたか

日本OSS推進フォーラム ステアリングコミッティ委員
OSDL Board of Directorsを歴任
カーネル読書会主宰

2000年6月、ミラクル・リナックスの創業に参加。
95年~98年、米国OracleにてOracle RDBMSの開発をおこなっていた。
98年にNetscapeのソースコード公開(Mozilla)に衝撃をうけ、オープンソースの世界に飛びこみ、ついには会社も立ち上げてしまう。
2008年6月取締役CTOを退任し一プログラマとなった。

ミラクル関連リンク

なかのひと

サイト検索

2009年12月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

« OSC2006 Fall/Tokyo | メイン | Rubyの本読書会(会社編) »

BINARY HACKS

高林さんに献本(Binary Hacks)をいただく。本日到着しました。ありがとうございました。

昨年12月にあったBinary 2.0カンファレンスをきっかけにできあがった書籍である。素晴しい。わたしも高林さんのブログでBinary 2.0カンファレンスを知り、早速申し込んだ口であるが、無理矢理すべりこむため(だって、あっと言う間に満員で登録締切になってしまったから)、持ネタのCache Pollution Aware Patchを5分でプレゼンをした。

Binary 2.0で発表。
ライトニングトーク
Binary 2.0

先日、Gree主催のオープンソーステクノロジ勉強会で鵜飼さんの「プログラムが main()にたどりつくまで」を聞いたのだが、その宴会で高林さんからBINARY HACKSを送りますよ〜というありがたいお言葉。

さて、第6章プロファイラ・デバッガHackである。#87〜#89の例が残念ながらショボイ。人工的すぎてリアリティがない。やはり、rubyのキャッシュミスを測定するくらいの実アプリを意識した例になっていたらと思う。(おしい)

もちろんだからと言って本書の価値がそこなわれているわけではない。

#89でoprofileを有効にする場合のカーネルの設定でCONFIG_PROFILINGおよびCONFIG_OPROFILEをオンにしておくというのがあるが、コールグラフを計測するには、それに加え、Kernel HackingのCONFIG_FRAME_POINTERをオンにしておく必要があると思う。このフラグをオンにしていないのがデフォルトなので、結構はまるところである。

キャッシュミスを検出する(337ページ)でeventとしてBSQ_CACHE_REFERENCEを、マスクとして0x10fをあたえている。BSQ_CACHE_REFERENCEというのは、Pentium 4ないしXeonのイベントなので、PentiumIII以前や最近のCoreプロセッサでは当然違うイベントになるし、それらの情報については、IA-32 Intel Architecture Software Developer's Manual Volume 3B, System Programming Guide, Appendix Aの表を見よという情報がないと、わけがわからないと思う。#91「ハードウェアのデバッグ機能を使う」では上記のリファレンスが載っているので#89は若干不親切な気がする。

イベントマスクの0x10fなのであるが、当該マニュアルを見ると
Bit
0: RD_2ndL_HITS
1: RD_2ndL_HITE
2: RD_2ndL_HITM
3: RD_3rdL_HITS
4: RD_3rdL_HITE
5: RD_3rdL_HITM
8: RD_2ndL_MISS
9: RD_3rdL_MISS
10: WR_2ndL_MISS
となっているので、0x10fはRD_2ndL_MISS/RD_3rdL_HITS/RD_2ndL_HITM/RD_2ndL_HITE/RD_2ndL_HITSがオンだという事を示している。ということはL2キャッシュミス(RD_2ndL_MISS)だけではなく、L3キャッシュヒット(RD_3rdL_HITS)およびL2キャッシュヒット(RD_2ndL_HITM/RD_2ndL_HITE/RD_2ndL_HITS)も同時に計測しているような気がする。(いかがだろうか?)

#94「プロセッサのメモリオーダリングに注意」の例のプログラムだが、これはメモリオーダリングの例ではなくてアトミックな交換(xchg)が出来ていない例なのではないだろうか?

アプリケーションレベルでメモリオーダリングに注意しなければいけない例というのはあまり思いつかなかったのでもし適切な例があればご教示いただきたいところである。

以上重箱の隅をつつきまくったが、つつきたくなるほど素晴しい本である。通勤電車の行き帰り、没頭して乗り過す危険性が高い本でもある。この第二版の企画があったらぜひcrashダンプの読み方、kprobe/djprobeやsystemtapなどの話も追記してほしいところである。

高林さんのブログ
Binary Hacks が届きました/いやなブログ

小飼弾さんのブログ
Binary Hacks/404 Blog Not Found

Rubyのプロファイリングをするお話などは下記を参考。

コードを読むな、理解しろ
Rubyのプロファイリング

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/6627956

このページへのトラックバック一覧 BINARY HACKS:

» BINARY HACKS 献本していただきました トラックバック ホワット・ア・ワンダフル・ワールド (この素晴らしき世界,等価変換な日々)
愛し合う〜 2 人〜 い〜つのぉ 時もぉ 隣どおし あなたと あたし 錯乱坊 ♪ どうも,大塚です (めざましテレビ) Binary Hacks --- ハッカー秘伝のテクニック100選 いやいや,導師 (本職 : 釣りキチ三平) には微妙に心配... [続きを読む]

» Binary Hacks献本していただきました トラックバック 革命の日々!
いやあ、こんな素晴らしい本をタダでいただけるなんて素晴らしいですね。 ありがとうございます > 高林様、オラ入りー様   なにかhyoshiokさんの所では、若干厳しめのレビューをされてるみたい。 おもしろいか... [続きを読む]

コメント

プロファイラのところ書いたものです。不親切ということと、 BSQ_CACHE_REFERENCE が間違ってる、というのは正しいご指摘のように思います。追試をしてみて、正誤表に入れてもらうようお願いしようかと思います。
経緯としては、最初に http://people.redhat.com/wcohen/OProfileTutorial.txt あたりで見て、このフラグとかは後で調べよう…と思ってたのですが空白期間があったのですっかり忘れてたというような感じで、全く申し訳ないことです。

あと、個人的にはツールの紹介だけ、という感じの文章の場合は、無味乾燥とした例の方が好みだったりします。基本は示した、後は自分で考えられるよね、というような。もちろん講演とかですとリアルな例の方が面白いですけど。

shinh さん、コメントありがとうございます。なるほど、参考にした文書がもとから間違っていたのですね。

oprofileの日本語の文書がほとんどないのでBINARY HACKSは、非常にいい紹介記事になると思います。

キャッシュミスとか簡単に測定できますし、いろいろ便利な技を今後もご紹介ください。どうもありがとうございました。

>>CONFIG_FRAME_POINTER
そうか、それが原因だったのかぁ〜

oprofile-beginnerさん、コメントありがとうございます。

お役に立ちましたか?call graphの分析をして何かがわかりましたか?ぜひ、発表してください。

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.