内核在启动过程中会根据既定的优先级选择时钟源。优先级的排序根据时钟的精度与访问速度。
其中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

Clocksource tsc unstable相关推荐

  1. tsc HPET kvm-clock

    Clocksource tsc unstable 1.查看时钟源无tsc选项 cat /sys/devices/system/clocksource/clocksource0/available_cl ...

  2. 时钟源为什么会影响性能

    前几天帮同事看问题时,意外的发现了时钟源影响性能的 case, 比较典型,记录一下.网上也有人遇到过,参考虾皮的[Go] Time.Now函数CPU使用率异常[1] 和 Two frequently ...

  3. NMI watchdog: BUG: soft lockup - CPU#2 stuck for 23s!

    <NMI watchdog: BUG: soft lockup> <kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 2 ...

  4. 搭建《深入Linux内核架构》的Linux环境

    搭建<深入Linux内核架构>的Linux环境 阅读目录(Content) 作者 软件 概述 正文 一.安装GCC 二.编译Linux内核 三.制作跟文件系统 四.运行qemu 五.启动l ...

  5. gettimeofday飞快的根因:vdso

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权. 内核版本 5.4.119 引言 众 ...

  6. Linux内核深入理解定时器和时间管理(2):clocksource 框架

    Linux内核深入理解定时器和时间管理 clocksource 框架 rtoax 2021年3月 在原文基础上,增加5.10.13内核源码相关内容. 全局部变量 ------------------- ...

  7. Linux内核深入理解定时器和时间管理(6):x86_64 相关的时钟源(kvm-clock,tsc,acpi_pm,hpet)

    Linux内核深入理解定时器和时间管理 x86_64 相关的时钟源(kvm-clock,tsc,acpi_pm,hpet) rtoax 2021年3月 在原文基础上,增加5.10.13内核源码相关内容 ...

  8. 慢慢欣赏linux qemu编译和启动

    安装和启动qemu编译 rlk@ubuntu:rlk_basic$ cp runninglinuxkernel_4.0 runninglinuxkernel_4.0_x86 -R cp: cannot ...

  9. Linux源码研究-用户管理员手册-内核命令行参数

    下面的列表是__setup(), core_param()和module_param()宏实现的内核参数,内核从命令-开始解析参数,如果参数不被识别,也不包含".",参数会被用来启 ...

最新文章

  1. Debian 6.0 安装过程 及中文乱码
  2. 一阶系统单位阶跃响应的特点_第八讲 系统的时域响应
  3. left join 不重复_R语言ETL工程:连接(join)
  4. 【转】Android BroadcastReceiver介绍
  5. jtoken判断是否包含键_Redis列表键(linkedlist/ziplist)的介绍
  6. uboot mkimage使用详解
  7. Linux下部署ASP.NET服务连接oracle遇到的问题记录
  8. 关于企业应用SAP成本管理模式与方法的一些思考
  9. H5 FormData 表单数据对象详解 与 Json 对象相互转换
  10. EXCEL数组公式,群里求助的问题,按条件查最大值,中位数等, 可用数组公式解决
  11. Barrett reduction算法
  12. PRTR论文代码解读
  13. matlab筛选excel数据统计,MATLAB读取Excel筛选符合条件的数据进行求均值等处理 程序......
  14. python value iteration算法玩倒立摆(inverted pendulum)
  15. 耳部穴位取穴 耳朵对应身体各部位反射图
  16. C语言:字母金字塔(输入一个大写字母,输出从A到这个字母的金字塔
  17. java8(三)Stream API
  18. SpringBoot + Excel 读写技术与实际问题解决
  19. C++中cout的格式使用
  20. amcap测试软件,AMCap摄像头测试软件使用说明

热门文章

  1. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java酒店客房管理系统z97wo
  2. linux内核 邻居子系统
  3. 名帖146 行书《兰亭八柱帖》第四册:柳公权书兰亭诗
  4. 最新PHP大气女性护肤化妆品商城系统源码+积分功能/帝国CMS内核
  5. 博图取消所有fc加密_求助博图V13 SP1模拟时报警问题
  6. python中的datetime函数_Python datetime函数常见用法总结
  7. 日历设计那点事,你知道多少?
  8. Linux窗口化命令
  9. 使用Konva操纵HTML5画布:第3部分,复杂的形状和精灵
  10. react项目搭建(基础学习笔记)