by shigemk2

当面は技術的なことしか書かない

kvm-clockに時間を尋ねるのは間違っているだろうか まとめ #kernelvm

  • BitVisorでマイグレーション
  • kvm-clockに翻弄された

  • Sysbenchを走らす

  • 対象は物理マシン、BitVisor、KVM
  • KVMよりもBitVisorのほうが速いという期待

  • あれ、でもKVMのほうがなんでおそいのか

  • EPT? BitVisorでも使っているけど
  • キャッシュミス? でも違う

prefやstraceで調べてみる

  • VMExit回数やブロックサイズによらずほぼ同じ

→??????

  • なぜclock_gettime()が多くなるのか Sysbenchは1イベントごとの時間を測定
  • メモリテストの1イベント
  • memory-block-sizeを小さくしてみる→イベントの数は増えるし、時間を測定する回数が増える

  • まさか時間取得が遅い?

  • システムコールがおかしい?

→KVMだけ時間取得の処理が遅い…

ブログ記事から調べてみると、そのままだし、BitVisorがとりわけ速いわけでもなく、KVMもたいして時間が変わらなかった…

  • kvm-clockで泣いた

なぜkvm-clockは遅いのか?

  • 時間の取得を共有メモリでやりとり
  • HostがWrite時にメモリロック
  • GuestからのReadをブロック

まとめ

  • kvm-clockに時間を尋ねるのは間違っているだろうか→頻繁に尋ねるのは間違っている
  • 頻繁にclocksourceを読むときはtscに変えよう
  • kvm-clockが一番優先度が高い