KVMのtrace

[KVM]での処理時間を記録するためのKVMTraceという機能が、4月上旬に入った。
カーネルスペースvirt/kvm/kvm_trace.cとユーザスペースuser/kvm_trace.cが連携してイベントを収集する事が出来る。
仕組みとしては、キャラクタデバイス経由で、トレースの開始および中止を設定する。そして、Relay(旧Relayfs)でトレースデータをやり取りをする。
xentraceという[Xen]でのトレース機能があるが、それでのKVM版といった感じである。
違う点は、ざっと見たところ、TSCではなく、ナノ秒で処理時刻が取れることである。
もう少し、関連することとしては、日立の人が、VMとゲストをまとめてトレースをとる仕組みVESPERなどがある。
しかし、KVMMakefileなど、結構適当というかやっつけ気味に出来ている。KVMのコード自体かなりパッチを作成する余地がかなり広い。もし、腕に覚えがあって、何か作ってみたいという人は、作ってみたら如何だろうか?

kernel
http://git.kernel.org/?p=linux/kernel/git/avi/kvm.git;a=blob;f=virt/kvm/kvm_trace.c;h=41dcc845f78c34d65a9d13e72cc7023a8a14f142;hb=HEAD

user
http://git.kernel.org/?p=virt/kvm/kvm-userspace.git;a=blob;f=user/kvmtrace_format;h=10eb1fe1fa6700a29cdd20b6406f5fec6625b01b;hb=HEAD

VESPER
http://ols.fedoraproject.org/OLS/Reprints-2008/kim1-reprint.pdf