DPDK-TIMER LIBRARY 定时器

0x01 缘由

     在实践产品开发中,有一些超时任务需要利用到定时器、资源定时回收也需要定时器。如流表超时等。所以学习了下DPDK的定时器特点,以及简单实现。

0x02 DPDP定时器介绍

     DPDK 定时器库,为DPDK定时执行异步调用回调函数的定时服务。这个库有如下特点:
     定时器能定期执行(多个时间槽)或者执行一次(单个时间槽);
     定时器能够在一个逻辑核加载而在另一个逻辑核执行。 他已经通过rte_timer_reset()函数指定;
     定时器高度精确(依赖于 rte_timer_manage()的调用频率,该服务定时检测当前逻辑核的呼吸);
     如果应用程序不需要定时器,可以通过在编译时禁用定时器rte_timer_manage()来提高性能;
     这个定时器库使用使用高精度事件的rte_get_timer_cycles()函数,它利用 定时器(HPET)或CPU时间戳计数器(TSC)来提供可靠的时间参考。

0x03 定时器实现细节

     定时器按照每个核心进行跟踪,所有待核准的计时器都将被维护,按照跳跃表(SkipList)中的到期定时器进行排序。 所使用的跳远表有十级,
每个级别的条目中出现的概率为¼^级。 这意味着所有条目都是 存在于0级,每4个条目中有1个存在于1级,1个在16个中,2个等等 最多为9级。这意味着从核心的计时器列表中添加和删除条目可以是 在log(n)时间完成,最多4^10个条目,也就是每个lcore约有1,000,000个计时器。

0x04 使用介绍

     参考:http://blog.csdn.net/linzhaolover/article/details/9410529

0x05 知识点延伸

     跳跃表:跳跃列表是对有序的链表增加上附加的前进链接,增加是以随机化的方式进行的,所以在列表中的查找可以快速的跳过部分列表(因此得名)。
     原来有人已经讲得很清楚了:http://blog.csdn.net/ict2014/article/details/17394259

你可能感兴趣的:(DPDK学习,DPDK,Timer,定时器)