TSC_scaling简介

当guest software读取TSC的值时, 加上TSC_offset.

VMM可以利用TSC offsetting feature, 提供给guest software错觉, 让它觉得自己运行在当前TSC之前或之后的时间.

利用TSC offset, guest software可以感知到某个TSC值与实际硬件的TSC有一个offset, 但该TSC值与实际硬件TSC的频率一样. 对于在虚拟机创建之前的时间统计需求,有TSC offsetting机制就够了.但是,如果VMM将虚拟机在不同的platform上迁移,且不同paltform上的TSC的频率还不一样,很显然TSC offsetting机制无法保证迁移前后的TSC稳定性和有效性.

通过TSC Scaling机制, VMM可以调整guest software感知到的TSC rate.

当TSC Scaling和TSC offseting 机制同时支持时,guest software读取的TSC值 = 硬件TSC值 * tsc_multiplier + tsc_offset.

如果同时拥有TSC Scaling和TSC offsetting两项feature, VMM将虚拟机在不同的platform上迁移,且不同platform上的TSC频率不一样,就可以在新platform上配置tsc_offset和tsc_scaling,让guest software觉得,根本没有发生过迁移,tsc依然以之前的频率前进,且没有发生回退等错误现象.

posted @ 2021-02-24 11:06  EwanHai  阅读(546)  评论(0编辑  收藏  举报