2011年1月19日

とある場所で行われた会話

某メーカー新入社員 : 『いったい僕は、誰にために仕事をしているんだろう』

評論家 : 『お客様のためさ。それがメーカーが追及すべき唯一のことだから』
経営学者 : 『上司のために仕事するんだ。組織として機能するために必要だ』
哲学者気取り : 『自分のためにやりなよ。幸せを追及しないと、人生は無意味だよ』

某メーカー新入社員 : 『あぁ…、いったい僕はどうすればいいんだ』

通りすがりの英国人 : 『Take it easy. Que sera sera』

USB3.0ホストチップ(xHCI)の調査

USB3.0ホスト(xHCI)のチップってどんなのが市場に出ているのだろう?
ってことで、調べてみた。(2010/01/18時点の情報)

ルネサスエレクトロニクス
μPD720200  : PCIe Gen2 x 1、2ポート、
μPD720200A  : μPD720200に対して消費電力低減

FLESCO LOGIC
FL1009 : PCIe Gen1 x 1、2ポート
FL1010 : PCIe Gen2 x 1、2ポート

VIA Labs
VL800 : 4ポート

チップだと、これだけ。IPだとどうなんだろう。
PLDA : ホスト、デバイス両方のIP
Arasan : 同じくホスト、デバイス両方のIP

なお、ルネサスエレクトロニクスもIPを持っているらしい。
個人でこんなこと調べてどうなるわけでもないけど、念のため。

2011年1月9日

OProfileで取得可能なイベント

先日OProfileを初めて触ったが、どのようなイベントを取得できるのか調べてみた。OProfileで取得できるイベント種別は利用しているCPUにより異なる。
詳細はOProfileのドキュメントに記載されている『Event type reference』に記載されている。また、opcontrol コマンドの --list-events オプションで確認可能(あるいは ophelp コマンドでも確認できる)。私の環境だと以下のようになった。



% opcontrol --list-events
oprofile: available events for CPU type "Intel Architectural Perfmon"

See Intel 64 and IA-32 Architectures Software Developer's Manual
Volume 3B (Document 253669) Chapter 18 for architectural perfmon events
This is a limited set of fallback events because oprofile doesn't know your CPU
CPU_CLK_UNHALTED: (counter: all)
        Clock cycles when not halted (min count: 6000)
INST_RETIRED: (counter: all)
        number of instructions retired (min count: 6000)
LLC_MISSES: (counter: all)
        Last level cache demand requests from this core that missed the LLC (min count: 6000)
        Unit masks (default 0x41)
        ----------
        0x41: No unit mask
LLC_REFS: (counter: all)
        Last level cache demand requests from this core (min count: 6000)
        Unit masks (default 0x4f)
        ----------
        0x4f: No unit mask
BR_INST_RETIRED: (counter: all)
        number of branch instructions retired (min count: 500)
BR_MISS_PRED_RETIRED: (counter: all)
        number of mispredicted branches retired (precise) (min count: 500)



私が使っているCPU(Intel Core i5-560M)の場合だと、他のCPUに比べて取得できるイベント種別が少ない模様。

2011年1月3日

OProfileを使ってみる

LinuxカーネルのプロファイラであるOProfileを使ってみることにする。
始めて利用するので、今回はセットアップと超簡単な使い方のみ試してみる。

今回試した環境は、

  • システムは Gentoo Linux。カーネルバージョンは 2.6.36-gentoo-r6(Linux-2.6.36にGentoo向けパッチが当たっている)
  • PCは、ThinkPad X201を利用。CPUはIntel Core i5-540M


まずは環境のセットアップ。OProfileを利用するためにはLinuxカーネルでのサポートと専用ユーザランドのインストールが必要。Linuxカーネルのサポートは、CONFIG_OPROFILECONFIG_HAVE_OPROFILE のサポートがあれば最低限OKらしい。続いてユーザランドのインストール。Portageを使ってインストールする


  $ emerge  dev-util/oprofile


インストールしたらOProfileで簡単なプロファイルを行ってみる。


  $ sudo opcontrol  --vmlinux=/usr/src/linux/vmlinux
  $ sudo opcontrol  --start
  # プロファイルをとる任意のプログラムを実行
  $ sudo opcontrol --stop


以上でプログラムのトレース取得は成功。
なお、opcontrolで各種処理を行うにはroot権限が必要な模様。そのため、sudoコマンドを用いて行っている。

続いてプロファイル結果の表示


  $ opreport    # 全体の結果を表示
  $ opreport  (プログラム名)    #  該当するプログラムのみ
  $ opreport  -l  (プログラム名)  # ??
  $ opreport  -c (プログラム名)  # ??



opreportでの各種コマンドラインオプションの詳細は今回は未確認。今日のところはこれで終了。もっと詳細を後日見ていきたいと思う。

参考ページ
OProfile : http://oprofile.sourceforge.net/news/
OProfile Documents : http://oprofile.sourceforge.net/docs/

備考
OProfileのサポートCPUを見るとCore-i5は十分なサポートされていないのか??この点も後日確認したいと思う。
またOProfileの実行に伴い、/root/.oprofile/ ディレクトリが作成されて設定が保持される。
さらに実行時の各種詳細情報は /var/lib/oprofile/ ディレクトリ配下に記憶さえる模様。