前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >tsc:Marking TSC unstable due to check_tsc_sync_source failed

tsc:Marking TSC unstable due to check_tsc_sync_source failed

作者头像
PedroQin
发布于 2019-12-18 03:23:15
发布于 2019-12-18 03:23:15
2.6K00
代码可运行
举报
文章被收录于专栏:WriteSimpleDemoWriteSimpleDemo
运行总次数:0
代码可运行

异常log分析总结 :tsc: Marking TSC unstable due to checktscsync_source failed

log前后文

/var/log/messages:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
......
Nov 16 22:21:14 localhost kernel: x86/cpu: Activated the Intel User Mode Instruction Prevention (UMIP) CPU feature
Nov 16 22:21:14 localhost kernel: #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 #35 #36 #37 #38 #39 #40 #41 #42 #43 #44 #45 #46 #47 OK
Nov 16 22:21:14 localhost kernel: x86/cpu: Activated the Intel User Mode Instruction Prevention (UMIP) CPU feature
Nov 16 22:21:14 localhost kernel: smpboot: Booting Node   1, Processors  #48
Nov 16 22:21:14 localhost kernel: TSC synchronization [CPU#0 -> CPU#48]:
Nov 16 22:21:14 localhost kernel: Measured 520 cycles TSC warp between CPUs, turning off TSC clock.
Nov 16 22:21:14 localhost kernel: tsc: Marking TSC unstable due to check_tsc_sync_source failed
Nov 16 22:21:14 localhost kernel: x86/cpu: Activated the Intel User Mode Instruction Prevention (UMIP) CPU feature
Nov 16 22:21:14 localhost kernel: ------------[ cut here ]------------
Nov 16 22:21:14 localhost kernel: WARNING: CPU: 49 PID: 0 at arch/x86/kernel/cpu/mcheck/mce.c:1486 mcheck_cpu_init+0x9e/0x490
Nov 16 22:21:14 localhost kernel: #49
Nov 16 22:21:14 localhost kernel: Modules linked in:
Nov 16 22:21:14 localhost kernel:
Nov 16 22:21:14 localhost kernel: CPU: 49 PID: 0 Comm: swapper/49 Tainted: G        W      ------------   3.10.0-957.el7.x86_64 #1
......
部分分析

TSCs are kind of notorious for going out of sync between CPUs. This is just saying the kernel isn't going to use the TSC. Later in the boot, it switches the clocksource to hpet, so things should be fine. There's really nothing to fix here.


First it isn't really an issue as the kernel is only letting you know that the Its first try to set TSC failed. It just resorts to another method. The message Is harmless and trivial about what level to print it at. Adding "clocksource=apcipm" near the beginning of "GRUBCMDLINELINUXDEFAULT=" just tells it directly to use an acpi based motherboards power management timer. if "clocksource=acpi_pm" fails for some reason try "clocksource=hpet"...(may work) or check here to see if there are other options:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat /sys/devices/system/clocksource/clocksource0/available_clocksouce
TSC/hpet/acpi_pm 介绍
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
[root@localhost ~]#
TSC

The Time Stamp Counter was once an excellent high-resolution, low-overhead way for a program to get CPU timing information. With the advent of multi-core/hyper-threaded CPUs, systems with multiple CPUs, and hibernating operating systems, the TSC cannot be relied upon to provide accurate results — unless great care is taken to correct the possible flaws: rate of tick and whether all cores (processors) have identical values in their time-keeping registers. There is no promise that the timestamp counters of multiple CPUs on a single motherboard will be synchronized. Therefore, a program can get reliable results only by limiting itself to run on one specific CPU. Even then, the CPU speed may change because of power-saving measures taken by the OS or BIOS, or the system may be hibernated and later resumed, resetting the TSC. In those latter cases, to stay relevant, the program must re-calibrate the counter periodically.

hpet

The High Precision Event Timer (HPET) is a hardware timer used in personal computers. It was developed jointly by Intel and Microsoft and has been incorporated in PC chipsets since circa 2005. Formerly referred to by Intel as a Multimedia Timer,the term HPET was selected to avoid confusion with the software multimedia timers introduced in the MultiMedia Extensions to Windows 3.0.

acpi_pm

The ACPI Power Management Timer (ACPI PMT) is yet another clock device included in almost all ACPI-based motherboards. Its clock signal has a fixed frequency of roughly 3.58 MHz. The device is actually a simple counter increased at each clock tick

参考链接

Bug 885524 - "tsc: Marking TSC unstable due to checktscsyncsource failed" [https://bugzilla.redhat.com/showbug.cgi?id=885524]

fast tsc calibration failed after upgrade to linux 3.6[https://bbs.archlinux.org/viewtopic.php?pid=1210044]

Time Stamp Counter[https://en.wikipedia.org/wiki/TimeStampCounter]

High Precision Event Timer[https://en.wikipedia.org/wiki/HighPrecisionEvent_Timer]

What is the acpi_pm linux clocksource used for, what hardware implements it?[http://stackoverflow.com/questions/7987671/what-is-the-acpi-pm-linux-clocksource-used-for-what-hardware-implements-it]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WriteSimpleDemo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实时操作系统
一般的linux都是GPOS(通用)内核。GPOS是不保证实时的,但是对于大多数应用程序来说是没有问题的。GPOS可以充分利用物理资源。但在实时性要求性比较高的场景需要使用实时内核,RT内核。RT的代价就是牺牲掉了资源利用率,使得相同的资源生产能力下降。
后端云
2018/10/24
2.4K1
实时操作系统
关于修改DragonOS的时间子系统的update_walltime的想法
目前DragonOS的时间子系统,更新墙上时间其实是直接在时钟中断里面,调用update walltime,并且手动指定delta值来更新的。这导致了没法利用上时间子系统的校时相关的功能。并且,时间源并不一定是有时钟事件的。因此我最近在尝试把dragonos移植到云服务器的过程中,发现kvm-clock是没有时钟中断的,并且配置acpi pm timer的中断的教程/文档,我看了很久看不明白(后来是发现Linux的acpi_sci_ioapic_setup这个函数设置了acpi中断,但是目前dragonos里面实现它,难度还是有的)。
灯珑LoGin
2024/05/15
1190
关于修改DragonOS的时间子系统的update_walltime的想法
干货 | 携程一次Redis迁移容器后Slowlog“异常”分析
李剑,携程技术保障中心系统研发部资深软件工程师,负责Redis和Mysql的容器化和服务化工作,以及维护容器宿主机的内核版本,喜欢深入分析系统疑难杂症。
携程技术
2019/04/22
6800
干货 | 携程一次Redis迁移容器后Slowlog“异常”分析
[virt][qemu]clocksource的管理和虚拟化
前言: kvm-clock,tsc,hpet,acpi_pm,pit,rtc。。。这些词看着都晕了@@ 虚拟化场景下,容作者在这里一一道来。 分析: 1,Linux clocksource 以Li
皮振伟
2018/04/09
5K2
[virt][qemu]clocksource的管理和虚拟化
时钟也能虚拟化吗
我们知道kvm有一个半虚拟化的时钟kvm-clock,但是现在只对Linux Guest支持,半虚拟化的时钟具有准确高效的有点,而使用TSC和RTC等时钟存在效率低高延迟的缺点,本文具体介绍一下虚拟化下的时钟原理。
虚拟化云计算
2018/04/08
3.8K0
时钟也能虚拟化吗
linux time和kvm time虚拟化综述
第一就是获取当前时间,就像人想知道时间时看墙上挂的时钟一样,简称clock,如time()/ftime()/gettimeofday()/data()等这些系统调用,都是软件主动获取时间。
惠伟
2021/06/24
3.1K0
KVM虚拟化linux系统模版制作步骤
在创建一个大小为16180M的lv,名字为root,挂载点为/,文件系统为ext4
力哥聊运维与云计算
2019/06/28
3.2K0
KVM虚拟化linux系统模版制作步骤
注意了!System.currentTimeMillis() 存在性能问题...
作者:LittleMagic 链接:https://www.jianshu.com/p/d2039190b1cb
Java技术栈
2020/12/08
1.9K0
注意了!System.currentTimeMillis() 存在性能问题...
CPU C-state & cpuidle driver[通俗易懂]
为了在CPU空闲时节约能源,可以命令CPU进入低功耗模式。C-state是intel CPU处于空闲时的一种状态,CPU有几种电源模式,它们统称为“c状态”或“c模式”
全栈程序员站长
2022/11/17
5.9K0
万字整理 | 深入理解Linux时间子系统
作者简介: 程磊,一线码农,在某手机公司担任系统开发工程师,日常喜欢研究内核基本原理。 一、时间概念解析 1.1 时间使用的需求 1.2 时间体系的要素 1.3 时间的表示维度 1.4 时钟与走时 1.5 时间需求之间的关系 二、时间子系统的硬件基础 2.1 时钟硬件类型 2.2 x86平台上的时钟 2.3 ARM平台上的时钟 三. 时间子系统的软件架构 3.1 系统时钟的设计 3.2 系统时钟的实现 3.3 动态tick与定时器 3.4 用户空间API的实现 四. 总结回顾 一、时间概念解析 我们住在空间
刘盼
2022/08/26
1.6K0
万字整理 | 深入理解Linux时间子系统
[virt][clock]steal time技术分析
前言: 在《clocksource的管理和虚拟化》中,大概分析了kvm clock,tsc,hpet等clock source。其中尤其是kvm clock计算尤其复杂。其目的就在于让Guest中的clock更加准确。但是问题还没有完,Guest只是在Host中的一个进程,还是会发生时钟跳变。下文具体分析。 分析: 1,analysis 当前Host的墙上时间是HWT1,此时Guest中的墙上时间GWT1,如果是同一个时区的话,此时HWT1和GWT1是相等的。 如果此时Host中发生了调度,Guest所
皮振伟
2018/04/09
2.6K0
[virt][clock]steal time技术分析
Linux时间子系统(下)
上一篇文章我们简单了解了一些关于时间的概念,以及Linux内核中的关于时间的基本理解。而本篇则会简单说明时钟硬件,以及Linux时间子系统相关的一些数据结构。
刘盼
2023/12/13
4700
Linux时间子系统(下)
guestfs这么强大你知道吗
libguestfs 是Redhat开源的一组工具集,主要用来访问和修改虚拟机的磁盘。其功能非常强大,我们常用的监控虚拟机磁盘使用率、P2V、V2V、备份克隆虚拟机、格式化重置虚拟机磁盘大小等功能libguestfs都能提供。甚至定制操作系统、操作windows虚拟机注册表这样的功能它也包含其中。
虚拟化云计算
2018/04/08
2.6K0
guestfs这么强大你知道吗
Linux调度系统全景指南(中篇)
| 导语本文主要是讲Linux的调度系统, 由于全部内容太多,分三部分来讲,本篇是中篇(主要讲抢占和时钟),上篇请看(CPU和中断):Linux调度系统全景指南(上篇),调度可以说是操作系统的灵魂,为了让CPU资源利用最大化,Linux设计了一套非常精细的调度系统,对大多数场景都进行了很多优化,系统扩展性强,我们可以根据业务模型和业务场景的特点,有针对性的去进行性能优化,在保证客户网络带宽前提下,隔离客户互相之间的干扰影响,提高CPU利用率,降低单位运算成本,提高市场竞争力。欢迎大家相互交流学习!
刘盼
2021/03/24
1.7K0
Linux调度系统全景指南(中篇)
kernel启动过程详解(梳理流程的工具和方法)
uboot 打印完 Starting kernel . . .,就完成了自己的使命,控制权便交给了 kernel 的第一条指令,也就是下面这个函数 init/main.c
全栈程序员站长
2022/07/29
1.4K0
Linux 系统性能评测基准系统配置及其原理
开发人员在高性能系统的性能调优过程中,经常会碰到各种背景的噪声干扰, 从而使得收集的数据不够精确。本文主要从CPU 以及Linux操作系统的角度来分析各种噪声的来源以及消除方法。最终的目标是搭建基准平台,在特定的cpu上实现”0”干扰。
Linux阅码场
2020/03/20
2K0
KVM基础
KVM (Kernel-based Virtual Machine) 是基于 虚拟化扩展指令集 (Intel VT or AMD-V) 在 linux x86 平台上的 完全虚拟化 解决方案
franket
2022/01/19
1.2K0
Linux启动引导参数grub
内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导参数说明。大多数参数是通过"__setup(... , ...)"函数设置的,少部分是通过"early_param(... , ...)"函数设置的,逗号前的部分就是引导参数的名称,后面的部分就是处理这些参数的函数名。
mingjie
2022/05/12
9.6K0
linux下10条查看系统和硬件信息的命
如果只想知道系统的名称,可以使用uname命令,而无需打印系统的相关的信息.或者使用uname -s命令将打印系统的内核名称.
小柒吃地瓜
2020/04/22
3K0
郭健: Linux时间子系统之ARM generic timer驱动代码分析
关注ARM平台上timer driver(clocksource chip driver和clockevent chip driver)的驱动工程师应该会注意到timer硬件的演化过程。在单核时代,各个SOC vendor厂商购买ARM core的IP,然后自己设计SOC上的peripherals,这里面就包括了timer的硬件。由于没有统一的标准,各个厂商的设计各不相同,这给驱动工程师带来了工作量。然而,如果仅仅是工作量的话就还好,实际上,不仅仅如此。linux的时间子系统要求硬件timer提供下面两种能力:一是free running的counter,此外需要能够在指定的counter值上产生中断的能力。有些硬件厂商会考虑到软件的需求(例如:PXA270的timer硬件),但是有些硬件厂商做的就不够,例如:S3C2451的timer硬件。我们在写PXA270的timer硬件驱动的时候是毫无压力的,而在写S3C2451的timer的驱动的时候,最大的愿望就是把三星的HW timer的设计人员拉出来打一顿。
Linux阅码场
2019/10/08
3.7K0
郭健: Linux时间子系统之ARM generic timer驱动代码分析
相关推荐
实时操作系统
更多 >
LV.0
这个人很懒,什么都没有留下~
作者相关精选
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文