2

Recently I found a article.

And I noticed in the article that the I/O scheduler in scylla uses a easier traffic control for I/O which just tasks task_quota, iops and io_bandwidth into account.

To my kownledge, the cgroup, blkio also uses these three factor for I/O scheduler.

I am confused that, what is the difference between scylla I/O scheduler and cgroup blkio? Why scylla did not use cgroup blkio directlly?

4

1 回答 1

4

Linux control groups and the Linux blk layer do have a scheduler. The main issue is the granularity. In Linux, the granularity is process based. That's not good enough for Scylla which is a multi threaded application. More over, in Scylla we have many types of compute and IO producers, some are latency sensitive (Like read and write operations), some are background operations and can be executed later (like compaction, streaming and repair).

Linux cgroups and blkio cannot make the difference between those and only Scylla userspace which tags them can be the component who'll schedule and queue them.

More data on this blog: https://www.scylladb.com/2018/04/19/scylla-i-o-scheduler-3/

于 2019-06-23T08:43:32.997 回答