论文原址:https://www.cs.jhu.edu/~erfan/files/cts.pdf
cts 提出了一种优化长尾延迟的方法,通过改进 linux 内核默认的 cfs 调度器,引入线程调度机制
论文的一些要点:
- It has been proven that FCFS scheduling of threads leads to lower tail latency
- Experiments show that CFS policies lead to LCFS scheduling, aggravating tail latency
- CTS policies ensure FCFS thread scheduling, which yields lower tail latency.
- CTS enforces our policies while maintaining the key features of the Linux scheduler
- Experimental results show that CTS significantly outperforms the Linux scheduler
延迟敏感型的程序,通常有两种进程模型,一种是 thread-driven,另一种是 event-driven。前者很容易理解,起1个线程来服务一个请求,模型很简单。后者相对复杂一些,比如 libev,libevent 都是用来实现 event-driven 架构的基础库,通过 io 多路复用技术,将 io 线程和 worker 线程分离,io 线程专注数据转发,worker 线程专注业务逻辑处理
但是这个 io 线程很关键,如果数据 ready,但是得不到处理,会导致严重的长尾延迟。io 密集型的程序瓶颈不在 cpu,而是 io,CPU 上的时间片消耗是非常小的,远小于1ms,因而这种进程理论上应该优先获得响应