linux指令cpu运行频率,linux – 使用RDTSC获取cpu周期 – 为什么RDTSC的值总是增加?...-程序员宅基地

技术标签: linux指令cpu运行频率  

只要您的线程保持在同一个CPU内核上,RDTSC指令将不断返回增加的数字,直到它包围.对于2GHz的CPU,这发生在292年之后,所以不是一个真正的问题.你可能不会看到它发生.如果您期望这么长时间,请确保您的计算机每50年重启一次.

RDTSC的问题是,您不能保证它在同一个时间点从老年多核CPU的所有核心开始,并且不保证它在同一时间点上在老年多CPU板上的所有CPU上启动.

现代系统通常没有这样的问题,但也可以通过设置一个线程的亲和力使其只在一个CPU上运行,从而在老系统上解决问题.这对于应用程序的性能来说不是很好,所以一般不应该这样做,但是对于测量蜱,这很好.

(另一个“问题”是许多人使用RDTSC来测量时间,这不是它所做的,但你写道,你想要CPU周期,所以这样很好,如果你使用RDTSC来衡量时间,你可能会有惊喜节电或超音波,或任何频繁变化的技术被称为踢.实际上,clock_gettime系统调用在Linux下令人惊讶.)

我只会在asm语句里面写入rdtsc,这对我来说很好,比一些晦涩的十六进制代码更可读.假设它是正确的十六进制代码(并且由于它不会崩溃并返回越来越多的数字,所以似乎是这样),你的代码是好的.

如果要测量一段代码所需的刻度数,则需要一个刻度差,只需减去不断增加的计数器的两个值.像uint64_t t0 = rdtsc(); … uint64_t t1 = rdtsc() – t0;

请注意,如果需要从周围的代码中隔离出非常精确的测量值,则需要在调用rdtsc之前(或使用只在较新的处理器上支持的rdtscp)来序列化,即停止流水线.可以在每个特权级别使用的一个序列化指令是cpuid.

在回应评论中的进一步问题时:

当您打开计算机时,TSC从零开始(并且BIOS会将所有CPU上的所有计数器重新设置为相同的值,尽管几年前的某些BIOS不能可靠地执行).

因此,从您的程序的角度来看,计数器开始“过去一些未知的时间”,并且随着CPU看到的每个时钟脉冲都会增加.因此,如果现在执行返回该计数器的指令,并且之后的任何时间在不同的进程中,它将返回一个更大的值(除非CPU被暂停或关闭).相同程序的不同运行得到更大的数字,因为计数器不断增长.总是.

现在,clock_gettime(CLOCK_PROCESS_CPUTIME_ID)是另一回事.这是操作系统给予该过程的CPU时间.当你的进程开始时,它从零开始.一个新的过程也从零开始.因此,彼此之间运行的两个进程将获得非常相似或相同的数字,而不是不断增长.

clock_gettime(CLOCK_MONOTONIC_RAW)更接近于RDTSC的工作原理(在一些较旧的系统上实现).它返回一个增加的值.如今,这通常是一个HPET.但是,这真的是时候了,而不是勾选.如果您的计算机进入低功率状态(例如以1/2正常频率运行),它仍将以相同的速度前进.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42527401/article/details/116634324

智能推荐

java dto是什么_java项目中VO和DTO以及Entity,各自是在什么情况下应用的-程序员宅基地

文章浏览阅读7.7k次,点赞7次,收藏21次。j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维。POJO(plain old java object):普通的java对象,有别于特殊的java对象(含继承约束等)和EJB。POJO一般只有一系列的属性和相应的get、set方法。PO(persistant object):持久化对象,有别于POJO,必须对应数据库中的实体。一个PO对应数据库的一..._java dto是什么

Springboot自动装配及启动流程_springboot自动装载是在哪一步开始的-程序员宅基地

文章浏览阅读350次。Springboot自动装配及启动流程1.从SpringApplication.run()开始执行,首先会构造new SpringApplication(primarySources)实例,进行初始化设置1.1 根据传入的启动主类名赋值primarySources,判断web应用类型webApplicationType1.2 通过getSpringFactoriesInstances(ApplicationContextInitializer.class)方法从META-INF/spring.fact_springboot自动装载是在哪一步开始的

《CCNP TSHOOT 300-135认证考试指南》——6.8节三层EtherChannel故障检测与排除-程序员宅基地

文章浏览阅读213次。本节书摘来自异步社区《CCNP TSHOOT 300-135认证考试指南》一书中的第6章,第6.8节三层EtherChannel故障检测与排除,作者 【加】Raymond Lacoste , 【美】Kevin Wallace,更多章节内容可以访问云栖社区“异步社区”公众号查看6.8 三层EtherChannel故障检测与排除CCNP TSHOOT 3..._eth-port-channel-3-compat_check_failure:port channel lfc-pfc compat chec

ROLAP与大数据-程序员宅基地

文章浏览阅读248次。OLAP大数据相关的场景比较多,常见的有:ETL(数据提取、转换、加载)、实时流式(监控报警、风控等)、机器学习(推荐引擎、用户画像等)、非结构化分析(视频、图片、语音、文本等)、海量大数据在线存储(HBase)、搜索及我们本文讲的OLAP。 其中OLAP(在线联机分析)在很多企业占住分析类的大部分。按照一般的理论又分为,M-OLAP,R-OLAP,H..._rolap包括有维表和

在modelarts上离线安装一些大的whl安装包(下载keras github预训练模型)_keras的whl文件-程序员宅基地

文章浏览阅读761次。我们这里以(320.4 MB) 的 tensorflow_gpu-2.3.0 为例子首先!pip install tensorflow-gpu==2.3.0 -i https://pypi.doubanio.com/simple安装完成后,基本上 whl 也就在 缓存文件夹里了本来 按照 这篇 通过 sudo find 就可以找到,但 华为云里 sudo 需要密码,find 的方法就不行了,那还有没有其他方法呢?还真有。通过下面 三步可以找回。一,先卸载 TF2.3!.._keras的whl文件

Winform Timer控件时间间隔-程序员宅基地

文章浏览阅读769次。2019独角兽企业重金招聘Python工程师标准>>> ..._winform计时器控件间隔1分钟

随便推点

【NLP】一文汇总自然语言处理主要研究方向-程序员宅基地

文章浏览阅读1.1w次,点赞18次,收藏133次。NLP专栏已经发了相当数目的文章,从基础的机器学习到最新的预训练语言模型;从简单的文本分类到复杂的信息抽取、聊天机器人。今天我们做一个回顾和总结,聊聊我们从事的自然语言处理研究或者工作,..._nlp方向

Java 环境变量配置后,成功运行java命令,无法执行javac命令的一种可能处理方式。_javac.exe无法执行-程序员宅基地

文章浏览阅读2.1k次。处理java命令运行成功,但是javac命令执行失败的一种方法尝试_javac.exe无法执行

html中什么是框架,什么是css框架-程序员宅基地

文章浏览阅读1.1k次。css框架对于一个小项目等页面来说很臃肿,框架中可能有大部分你用不到的代码。那么你对css框架了解多少呢?下面就让学习啦小编来给你科普一下什么是css框架。css框架的特征1.抽象出常用的css样式,高再可用性,高移植性2.有固有的定义,详细的文档及开发特点3.高兼容性,可以兼容流行的浏览器4.以css为主,但不一定全部是css,可能有一些js(或者其他)脚本用于兼容浏览器css框架的开发顺序a)..._html+css框架是什么

angular基础11【表单】_angular 表单-程序员宅基地

文章浏览阅读930次。在 Angular 中,表单有两种类型,分别为模板驱动和模型驱动。_angular 表单

visual assist x 2406 和 2435,2443 原版安装下载,只要一分_visual ass 2476-程序员宅基地

文章浏览阅读4.5k次,点赞9次,收藏8次。下载地址:https://download.csdn.net/download/zdhsoft/19816256可以用everything找到VA_X.dll,替换就可以了,已经在vs2019下面通过,非飘云版。资源分,只要1分,不是动态调分了_visual ass 2476

android ota 服务器搭建,构建 OTA 软件包  |  Android 开源项目  |  Android Open Source Project...-程序员宅基地

文章浏览阅读1.2k次。您可以使用 build/make/tools/releasetools 中提供的 ota_from_target_files 工具,针对使用 A/B 系统更新或非 A/B 系统更新的设备构建完整 OTA 软件包和增量 OTA 软件包。该工具将 Android 构建系统生成的 target-files.zip 文件作为输入文件。注意:请勿使用或修改(或允许应用使用或修改)/data/ota_pack..._/data/ota_package/