为什么 Scylla 没有将 cgroup blkio 用于 I/O 调度程序?
Why the Scylla did not use cgroup blkio for I/O scheduler?
最近我发现了一个article。
而且我在文章中注意到,scylla 中的 I/O 调度程序对 I/O 使用了更简单的流量控制,它只任务 task_quota
、iops
和 io_bandwidth
考虑在内。
据我所知,cgroup
、blkio
也将这三个因素用于 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/
最近我发现了一个article。
而且我在文章中注意到,scylla 中的 I/O 调度程序对 I/O 使用了更简单的流量控制,它只任务 task_quota
、iops
和 io_bandwidth
考虑在内。
据我所知,cgroup
、blkio
也将这三个因素用于 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/