111-Christopher-Dall_Arm-Timers-and-Fire:Arm架构计时器与半虚拟化时间
1. 引言
KVM/Arm目前提供基本的时间保持功能:
- 虚拟机可以读取计数器来测量时间的流逝
- 虚拟机可以编程和取消定时器
所有这些操作都无需陷入hypervisor,这大大提升了效率。
2. 当前缺失的功能
尽管基础功能已经具备,但仍存在一些重要缺失:
- 没有考虑虚拟机暂停或系统挂起的情况,导致客户操作系统发出警告
- 没有考虑被偷取的时间,当物理CPU过载时,客户进程会被饿死
- 迁移到具有不同计数器频率的新物理机器时,时间保持与软件期望不一致
3. Arm通用定时器架构背景
Arm通用定时器架构(也称为"ArchTimers"或"Architected Timers")提供了系统级的计时功能。
3.1 Armv8.0中的定时器
- 物理计数器
- 虚拟计数器
- 四个定时器:
- EL3物理定时器(用于安全世界 - 与KVM无关)
- EL2物理定时器(用于hypervisor)
- EL1物理定时器(用于操作系统)
- EL1虚拟定时器(用于操作系统)