VirtualBox имеет небольшую известную функцию WarpDrivePercentage. Это позволяет вам запускать виртуальную машину с большей или меньшей скоростью (с некоторыми оговорками). У нас есть тестовая среда, которая имитирует Set Top Boxes в KVM, и такая функция может потенциально позволить нам выполнить еще много тестов.
Жесткое решение:
Я не вижу встроенного параметра в документах KVM, но вы можете использовать системное время. Сначала проверьте, какие часы использует ваша установка KVM:
$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
Скорее всего, это kvm-clock. Если это так, у вас есть несколько вариантов. kvm-clock live обновляет свое время, используя следующую структуру:
struct pvclock_vcpu_time_info {
u32 version;
u32 pad0;
u64 tsc_timestamp;
u64 system_time;
u32 tsc_to_system_mul;
s8 tsc_shift;
u8 flags;
u8 pad[1];
} __attribute__((__packed__));
Вы можете написать обертку на хосте, чтобы перехватить это и выпустить ускоренную версию времени. Вы также можете перестроить kvm-clock самостоятельно, заменив pvclock_vcpu_time_info на пользовательскую логику, чтобы вывести время UTC с добавленной временной дельта, как libvirt делает в своей переменной смещения <clock offset="variable" adjustment="123456" />
Жесткое решение:
Продолжайте использовать virtualbox. Или xen имеет смещение переменной из "xen.independent_wallclock = 1", где вы можете настроить свое собственное время.
Самое простое решение:
Спросите, почему вам нужно ускорить это время? Я не могу придумать массу причин, которые понадобится для Set Top box. И это, скорее всего, будет легче обрабатывать в вашем коде с помощью фальшивой обертки времени, чем на уровне ОС. Вы испортили NTP, журналы и тонну других вещей, возившись со временем.
Жесткое решение:
Я не вижу встроенного параметра в документах KVM, но вы можете использовать системное время. Сначала проверьте, какие часы использует ваша установка KVM:
$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
Скорее всего, это kvm-clock. Если это так, у вас есть несколько вариантов. kvm-clock live обновляет свое время, используя следующую структуру:
struct pvclock_vcpu_time_info {
u32 version;
u32 pad0;
u64 tsc_timestamp;
u64 system_time;
u32 tsc_to_system_mul;
s8 tsc_shift;
u8 flags;
u8 pad[1];
} __attribute__((__packed__));
Вы можете написать обертку на хосте, чтобы перехватить это и выпустить ускоренную версию времени. Вы также можете перестроить kvm-clock самостоятельно, заменив pvclock_vcpu_time_info на пользовательскую логику, чтобы вывести время UTC с добавленной временной дельта, как libvirt делает в своей переменной смещения <clock offset="variable" adjustment="123456" />
Жесткое решение:
Продолжайте использовать virtualbox. Или xen имеет смещение переменной из "xen.independent_wallclock = 1", где вы можете настроить свое собственное время.
Самое простое решение:
Спросите, почему вам нужно ускорить это время? Я не могу придумать массу причин, которые понадобится для Set Top box. И это, скорее всего, будет легче обрабатывать в вашем коде с помощью фальшивой обертки времени, чем на уровне ОС. Вы испортили NTP, журналы и тонну других вещей, возившись со временем.