Понимание часов QEMU - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь понять часы QEMU. Доступно несколько эталонных часов. Наиболее важными из них являются:

  • QEMU_CLOCK_REALTIME, который на самом деле является оберткой для специфичной для ОС функции c, такой как QueryPerformanceCounter () или clock_gettime (), с последующим преобразованием в ns-единицы
  • QEMU_CLOCK_VIRTUAL запускается только во время эмуляции. В режиме icount значение виртуальных часов вычисляется на основе количества выполненных инструкций.

Похоже, что QEMU_CLOCK_VIRTUAL используется по умолчанию.

Поэтому мне интересно, синхронизируется ли QEMU_CLOCK_VIRTUAL с часы реального времени? Другими словами, как виртуальные наносекунды, полученные из счетчика команд, соотносятся с реальными наносекундами, чтобы пользователь мог воспринимать скорость эмулируемого HW как оригинальную?

Может кто-нибудь дать мне подсказку? Заранее спасибо!

1 Ответ

1 голос
/ 02 мая 2020

Другими словами, как виртуальные наносекунды, полученные из счетчика команд, связаны с реальными наносекундами

Виртуальное время связано со счетчиком команд, только когда QEMU работает с опцией -icount. В этом случае он не соответствует реальному времени, и его скорость продвижения зависит от того, насколько быстро ЦП хоста выполняет гостевые инструкции.

Когда -icount не указано, виртуальное время тикает синхронно с реальным временем. Если вы попытаетесь измерить время для гостевых инструкций изнутри гостя, результат может быть нереальным c.

...