CNA物理节点开启节能功能导致VRM01虚拟机时间无法与NTP时钟源(CNA01)同步

发布时间:  2014-12-27 浏览次数:  348 下载次数:  0
问题描述
VRM01虚拟机时间无法与NTP时钟源(CNA01)同步,其它节点同步成功。
告警信息
VRM01虚拟机与NTP时钟源心跳异常。
处理过程
1、现场在该节点强制时间同步无效,通过VRM虚拟机NTP日志(ntpdetect.log)发现如下图所示,每2分钟NTP的Offset增加704,即虚拟机的系
统时间出现偏移,偏移量超过ntp设置的阈值(60000ms),故ntp服务同步时间失败。

2、使用“adjtimex -c”命令查看虚拟机系统时间与硬件时间的偏移量,如下图所示。

备注:图中第一列为硬件时间(CMOS time),采样间隔为10秒钟。第二列为系统时间与硬件时间的差值(单位为秒)。

假设系统时间没有出现偏移(偏快或偏慢),那么每隔10秒采样的系统时间与硬件时间的差值应该是个比较稳定的值。而上图中,第二列的值在单调递减,说明系统时间跑的比硬件时间慢,即系统时间偏慢了。系统时间每10秒的偏移量为0.05秒。由此可以确认该虚拟机的系统时间确实出现了较大的偏移。
3、首先在VRM01虚拟机内部执行命令“cat /sys/devices/system/clocksource/clocksource0/current_clocksource”查看当前虚拟机系统时间使用的时钟源,确认使用的时钟源为TSC。
TSC时钟源频率是依赖于CPU的主频。使用命令“cat /proc/cpuinfo”查看虚拟机内部的cpu信息。从下图结果可以发现系统获取到的CPU主频为2139.707MHz,而该CPU的标准主频为2130MHz,之间相差了9MHz,说明该CPU的主频存在较大偏差,见下图所示。操作系统启动时会读取一次CPU的主频,然后会将该主频记录为TSC时钟源的频率。每次CPU发来的时钟中断计数都会按照该频率转换为时间。如果系统启动时获取的CPU主频,与实际运行时CPU的主频存在偏差,那么就会出现TSC时钟偏移的情况。

4、CPU运行空闲时降低CPU的功率,会引起CPU的主频会发生波动,该现象很有可能VRM虚拟机所在CNA物理节点节能功导致,查看VRM虚拟机所在CNA节点的BIOS选项,发现在CPU高级选项中,开启了“C-STATE”选项。下图以华为V2服务器BIOS设置为例所示。

根因
CNA物理节点开启了节能功能,CPU运行空闲时降低CPU的功率,引起CPU的主频会发生波动,TSC时钟源频率依赖于CPU的主频。
解决方案
关闭VRM虚拟机所在CNA节点上的所有虚拟机,然后重启节点,进入BIOS中选项,将“C-STATE”选项置为Disable。
华为服务器的BIOS中CPU的节能选项的名称为“C-STATE”。其他厂商的服务器BIOS中该选项名称可能不是“C-STATE”,建议查看一下选项的功能描述,如果描述内容大概为在物理CPU运行空闲时降低CPU的功率,那么该选项就是CPU的节能选项。建议将该选项关闭。然后再观察VRM虚拟机是否还存在系统时间偏移。
下图为联想服务器BIOS中CPU节能选项的描述:

建议与总结
CNA物理节点关闭节能功能。

END