获取时间_Linux获取纳秒时间戳的正确方式

前几天尝试修改了Linux kernel把实时线程收到timer interrupt频率降低成了一天一次(Linux如何对一个核完全屏蔽timer interrupt?),在测试观察阶段我重点关注了获取系统时间戳的性能,发现clock_gettime延时比预期的高。

后来发现这个问题和改内核无关,是个Linux上普遍存在的问题:我在不同硬件配置和系统设置Linux服务器或PC上做了测试,发现clock_gettime延时经常高于100 ns,且十分不稳定(范围在20 ~ 1000 ns)。这对于需要记录时间戳的实时系统或一个用时间戳做性能测试的普通程序来说都不是一个好消息。

然后,我简单看了下Linux timekeeping和clock_gettime VDSO的实现,觉得在user space实现同样精确且和系统严格对时的纳秒级时间戳是可行的。于是尝试实现了下,发现效果符合预期:获取纳秒时间戳的延时可以稳定在10 ns左右(所有工作在8条连续的CPU指令内完成,且没有函数调用)。项目链接:https://github.com/MengRao/tscns,具体细节可以看README,欢迎大家试用并提出反馈。

最后插一句题外话,我为什么有空搞这些乱七八糟的东西?因为单身狗就是有时间呐。。。求妹子,坐标上海。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值