Skip to content

目标和参考资料 #1

@guonaihong

Description

@guonaihong

目标

  • 用go使用5级时间轮实现定时器
  • 如有可能效率追求fast fast fast

参考资料

论文

http://www.cs.columbia.edu/~nahum/w6998/papers/ton97-timing-wheels.pdf

参考项目

参考书本

  • 书名
    深入linux内核架构(Professional Linux Kernel Architecture)(第15章时间管理)
    tv1 0-255

  • 范围
    tv2 2的8次方-2的14次方-1
    tv3 2的14次方-2的20次方-1
    tv4 2的20次方-2的26次方-1
    tv5 2的26次方-2的32次方-1

  • 移动
    第一组的内容在最多256个时间周期之后就会耗尽,必须将后续各组的定时器依次前推,重新补足第一组。在第一组的索引位置恢复到初始位置0之后,会将第二组中一个数组项的所有定时器补充到第一组。这种做做法,解释了为什么各组选择了不同的时间间隔。因为第一组的各数组项可能有256个不同的到期时间,而第二组中一个数组项的数据就足以填充整个第一组的整个数组。该道理同样适用于后续各组。第三组的一个数组项的数据同样足以填充整修第二个组,第四组的一个数组项也足以填充整修第三组,而第五组的一个数组项也足以填充整个第四组。

后续各组的数组位置并非随机选择的,其中的索引项仍然发挥了作用。但索引项的值不再是每个时钟周期加1,而是第256的i-1次方

  • cascade函数用于从指定组取得定时器补充到前一组

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions