nanosleep纳秒级延迟

简介:
//函数原型 int nanosleep(struct timespec *req, struct timespec *rem)
//参数列表:
//  req:要求的睡眠时间
//  rem:剩余的睡眠时间
//返回值:
//  0:成功;-1,失败,errno保存错误代码

//目的:纳秒级别的延迟
int nano_delay(long delay)
{
    struct timespec req, rem;
    long nano_delay = delay;
    int ret = 0;
    while(nano_delay > 0)
    {
            rem.tv_sec = 0;
            rem.tv_nsec = 0;
            req.tv_sec = 0;
            req.tv_nsec = nano_delay;
            if(ret = (nanosleep(&req, &rem) == -1))
            {
                printf("nanosleep failed.\n");                
            }
            nano_delay = rem.tv_nsec;
    };
    return ret;
}

//测试,纳秒级延迟的误差率
int main()
{
    int ret = 0;
    long delay = 0;
    struct timespec start, end, interv;
    for(delay = 1000; delay < 1000*1000; delay+=1000)
    {   
        curr_time(&start);
        nano_delay(delay);
        curr_time(&end);
        diff(&start, &end, &interv);
        printf("delay = %ld, real delay = %ld, error = %g.\n", delay, interv.tv_sec * 1000000000 + interv.tv_nsec, (float)(interv.tv_sec * 1000000000 + interv.tv_nsec - delay)/delay );
    }

}

//测试结果:
//  Duo CPU e8200
//  Ubuntu 12.10 Kernel 3.4
//  

目录
相关文章
|
消息中间件 存储 监控
Skywalking on the way-千亿级的数据储能、毫秒级的查询耗时
Skywalking on the way-千亿级的数据储能、毫秒级的查询耗时
697 0
Skywalking on the way-千亿级的数据储能、毫秒级的查询耗时
|
6月前
|
网络协议 网络安全 区块链
常见网络延迟测量方法
常见网络延迟测量方法
425 0
|
11月前
|
弹性计算 负载均衡 前端开发
如何设计一个百万级TPS分布式系统架构?
如何设计一个百万级TPS分布式系统架构?
233 2
|
存储 NoSQL Linux
如何有效降低产品级内存数据库快照尾延迟
本文讲解内存键值对数据库在使用 fork 拍摄快照时引起的请求尾延迟激增问题如何解决的实践方案。
如何有效降低产品级内存数据库快照尾延迟
|
SQL 存储 关系型数据库
延迟优化|学习笔记
快速学习延迟优化
109 0
延迟优化|学习笔记
|
存储 缓存 数据库
百万QPS系统的缓存实践
标题有些吸引眼球了,但并不浮夸,甚至还会远远超过百万,现在的平均响应时间在1ms内,0.08ms左右 如此高的QPS,如此低的AVG,为什么会有如此效果,关键点可能就在多级缓存上 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流
651 0
百万QPS系统的缓存实践
|
监控 Java 测试技术
如何快速调度 PTS 的百万并发能力
压测是通过模拟用户行为对业务系统发起请求,测算出系统的承载能力,并对系统做一次全面的体检,压测后可根据压测表现优化系统瓶颈,防止出现线上故障。
如何快速调度 PTS 的百万并发能力
|
消息中间件 存储 负载均衡
多数据中心的百万级消息服务实战
多数据中心的百万级消息服务实战
249 0
多数据中心的百万级消息服务实战
|
缓存 关系型数据库 大数据
百亿级性能
使用关系型数据库来做大数据,第一步必然是索引! 单表超过1000万数据,任何查询都必须走索引!否则数据库一定跟你说ByeBye!
328 0
|
存储 SQL 关系型数据库
百万级活跃用户、十亿级数据,揭秘PolarDB-X如何提升小打卡性能和稳定性
通过PolarDB-X+RDS MySQL的分布式数据库解决方案支持客户核心业务圈子打卡日记,采用PolarDB-X的水平拆分给客户提供海量数据存储能力,利用平滑扩容能力提供计算和存储的平滑扩展,可支持到百亿级数据存储和读写。
733 0
百万级活跃用户、十亿级数据,揭秘PolarDB-X如何提升小打卡性能和稳定性