博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Clocksource tsc unstable
阅读量:6735 次
发布时间:2019-06-25

本文共 729 字,大约阅读时间需要 2 分钟。

内核在启动过程中会根据既定的优先级选择时钟源。优先级的排序根据时钟的精度与访问速度。

其中CPU中的TSC寄存器是精度最高(与CPU最高主频等同),访问速度最快(只需一条指令,一个时钟周期)的时钟源,因此内核优选TSC作为计时的时钟源。其它的时钟源,如HPET, ACPI-PM,PIT等则作为备选。
但是,TSC不同与HPET等时钟,它的频率不是预知的。因此,内核必须在初始化过程中,利用HPET,PIT等始终来校准TSC的频率。如果两次校准结果偏差较大,则认为TSC是不稳定的,则使用其它时钟源。并打印内核日志:Clocksource tsc unstable.
正常来说,TSC的频率很稳定且不受CPU调频的影响(如果CPU支持constant-tsc)。内核不应该侦测到它是unstable的。但是,计算机系统中存在一种名为SMI(System Management Interrupt)的中断,该中断不可被操作系统感知和屏蔽。如果内核校准TSC频率的计算过程quick_ pit_ calibrate ()被SMI中断干扰,就会导致计算结果偏差较大(超过1%),结果是tsc基准频率不准确。最后导致机器上的时间戳信息都不准确,可能偏慢或者偏快。
当内核认为TSC unstable时,切换到HPET等时钟,不会给你的系统带来过大的影响。当然,时钟精度或访问时钟的速度会受到影响。通过实验测试,访问HPET的时间开销为访问TSC时间开销的7倍左右。如果您的系统无法忍受这些,可以尝试以下解决方法: 在内核启动时,加入启动参数:tsc=reliable

转载于:https://www.cnblogs.com/muahao/p/6641264.html

你可能感兴趣的文章
Nuxt在SPA模式下的鉴权处理(1)
查看>>
函数Int3断点检测
查看>>
sqlserver 重建日志文件
查看>>
返回给定字符串中最长连续数字串
查看>>
SQL注入详解-4
查看>>
在ASP.NET MVC中对表进行通用的增删改
查看>>
实现“新手引导”效果
查看>>
SQL Server中各个系统表的作用
查看>>
这里有一些图标资源
查看>>
读心或成现实,OpenBCI要将脑波传感技术用于VR中
查看>>
三年“苏宁之夏”,锐捷无线用才华“闪耀”狂欢夜
查看>>
菜鸟学Linux 第045篇笔记 openSSH
查看>>
Win8Metro(C#)数字图像处理--2.5图像亮度调整
查看>>
php安装php-redis模块
查看>>
无线网络破解________破解wap密码..............
查看>>
Matlab实现求a到b被c整除的个数
查看>>
Page Object设计模式
查看>>
RMI 相关知识
查看>>
Spring中@Async用法总结
查看>>
Spring data 如何定义默认时间与日期
查看>>