为什么 Scylla 没有将 cgroup blkio 用于 I/O 调度程序?

Why the Scylla did not use cgroup blkio for I/O scheduler?

最近我发现了一个article

而且我在文章中注意到,scylla 中的 I/O 调度程序对 I/O 使用了更简单的流量控制,它只任务 task_quotaiopsio_bandwidth考虑在内。

据我所知,cgroupblkio 也将这三个因素用于 I/O 调度程序。

我很困惑,scylla I/O scheduler 和 cgroup blkio 有什么区别?为什么scylla没有直接使用cgroup blkio?

Linux 控制组和 Linux blk 层确实有一个调度程序。主要问题是粒度。在 Linux 中,粒度是基于进程的。这对于多线程应用程序 Scylla 来说还不够好。此外,在 Scylla 中,我们有多种类型的计算和 IO 生产者,有些对延迟敏感(如读取和写入操作),有些是后台操作,可以稍后执行(如压缩、流式处理和修复)。

Linux cgroups 和 blkio 无法区分它们,只有标记它们的 Scylla 用户空间才能成为安排和排队它们的组件。

此博客的更多数据:https://www.scylladb.com/2018/04/19/scylla-i-o-scheduler-3/