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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions