linux 时间戳计数器,使用TSC(时间戳计数器)进行时间计算
我试图通过一个linux内核模块以非常高的精度测量linux内核中的一些代码所花费的时间。
为此,我尝试了rdtscl(),它给出了代码中使用的时钟节拍数,如下所示:unsigned long ini, end;
rdtscl(ini);
//some code...
rdtscl(end);
printk("time taken=%lu ticks",end-ini);
正如我提到的http://en.wikipedia.org/wiki/Time_Stamp_Counter表示tsc是自奔腾以来所有x86处理器上都存在的64位寄存器。所以,如果我有双核处理器,这个计数器会出现在两个内核中,还是只有一个,因为它只有一个处理器,但双核?
第二个问题是:我有英特尔至强i3处理器,它有4个处理器,每个处理器有2个内核。然后,测量时钟节拍,会给出单处理器的节拍还是全部4个处理器的节拍相加?
最佳答案:
如果你没有时钟信号,那么你的代码就有严重的问题。你是自己写的还是从不好的地方复制的?]
顺便说一句,现代英特尔(和AMD)处理器很可能有“恒定TSC”,所以一个暂停、休眠、运行较慢等的处理器仍将以与其他处理器相同的速度运行——它可能仍不同步,但这是另一回事。
尝试只运行一个从计数器中打印值的循环—只是RDTSC指令本身应该需要大约30-50个时钟周期,所以您应该看到它在移动。
编辑:这是我的RDTSC函数:void rdtscl(unsigned long long *ll)
{
unsigned int lo, hi;
__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
*ll = ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
}
作为返回值的函数:
unsigned long long rdtscl(void)
{
unsigned int lo, hi;
__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
}
我注意到您的代码没有传递无符号long的指针,这使我怀疑您实际上并没有将时间戳计数器传递回调用者,而是只保留它碰巧具有的任何值—这两个值很可能相同。
linux 时间戳计数器,使用TSC(时间戳计数器)进行时间计算相关推荐
- linux cfs时间,Linux调度的实现(CFS)——虚拟时间计算
公平调度(CFS)基本概念与性质 公平调度:每个进程能获得1/n的处理器时间,n指可运行的进程的数量: (允许每个进程运行一段时间,循环轮转,选择运行最少的进程作为下一个运行进程.) 每个进程都按照它 ...
- linux 时间戳计数器,使用TSC(时间戳计数器)计算时间
如果没有时钟滴答,那么你的代码就会出现严重问题.您是否编写了自己的rdtscl [或从某个不是很好的来源复制它?] 顺便说一句,现代英特尔(和AMD)处理器可能具有"恒定的TSC" ...
- 【Linux 内核 内存管理】Linux 内核堆内存管理 ③ ( CPU 计数器瓶颈 | per-CPU 计数器 | Linux 内核 percpu_counter 结构体源码 )
文章目录 一.CPU 计数器瓶颈 二.per-CPU 计数器及 percpu_counter 结构体源码 一.CPU 计数器瓶颈 如果 操作系统 中有 多个 CPU , 假设只有一个 CPU 计数器工 ...
- linux执行命令带时间戳,Linux查看History记录加时间戳的小技巧
Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如[root@servyou_web ~]# history | more ...
- linux shell取得秒级时间戳
什么是时间戳 在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数.这个整数就是时间戳.在我们写脚本的时候经常使用到一些时间统计的工作, ...
- hive linux时间戳转换,Hive 中 时间戳,字符串转换
13位时间戳装换为日期格式的字符串 select from_unixtime( cast(1597651229344/1000 as int),'yyyy-MM-dd HH:mm:ss') 时间字符串 ...
- linux输入命令怎么显示时间戳,linux时间戳查看:stat命令
1.关于时间戳 每一个文件都有三种时间(称为时间戳timestamps),对这三种时间,很多时候容易混淆不清,因此这里要说明下: Access time(atime):是指取用文件的时间,所谓取用,常 ...
- php mysql日期戳转时间戳_php日期转时间戳,指定日期转换成时间戳
写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储.处理方便,但 是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么 ...
- java filter加时间戳_java filter加时间戳
java filter加时间戳 [2021-01-31 18:31:52] 简介: java时间戳转php时间戳的方法:首先将java时间戳转成字符串,代码为[$utStr = $javaUt . ...
- mysql获取时间戳_mysql 获取当前时间戳
mysql 获取当前时间为select now() 运行结果: 2012-09-05 17:24:15 mysql 获取当前时间戳为select unix_timestamp(now()) 运行结果: ...
最新文章
- Linux -- ***检测系统(IDS)介绍及应用(1)
- 不同页面之间实现参数传递的几种方式
- 现代软件工程讲义 9 测试 QA 的角色和分工
- Gensee SDK RoleType详解
- 重新标注 ImageNet:多标签,全面提升模型性能
- Android OpenGL ES 应用(二) 纹理
- python ggplot为什么不能取代matplotlib_为什么geom_bar()不会像python ggplot中那样更改填充颜色?...
- 解决Android SDK Manager更新、下载速度慢
- LayaAir UI 组件 # HSlider,VSlider(水平/垂直滑动条)
- KDD18 DIN Deep Interest Network for Click-Through Rate Prediction
- TextMesh Pro不能显示中文的解决办法是创建字贴图,常用汉字3500+特殊字符
- matlab 函数pdf怎么用_怎么将Word转换成PDF?Word转PDF就得用这个工具
- 算法学习:LeetCode-592. 分数加减运算
- pdf如何转化成word文档?
- canvas实现5张图片合成一张图片
- 【果壳笔记】生物信息学——王秀杰老师部分
- mac蓝牙键盘工具分享——通过mac键盘给iPhone、iPad打字
- 【0基础入门Pytorch】Pytorch的简介与安装(Windows)
- git获取ssh密钥
- CVPR2019 Oral论文《Side Window Filtering》解读及算法 Python 实现