io - Why the Scylla did not use cgroup blkio for I/O scheduler?
问题描述
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?
解决方案
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/
推荐阅读
- azure-pipelines - 如何从 Azure Pipelines 表达式访问机密值?
- javascript - 将 javascript 循环转换为异步和函数式
- amazon-web-services - 在同一个 AWS EC2 实例上提供多个 Python 应用程序
- java - 在 Java 中迭代 2 个地图
- python - 无法使用 Windows Ubuntu 应用程序连接到 Docker
- r - 使用数据表将一个函数应用于具有参数值向量的多列
- python - 字典的性能优化更改
- algorithm - n^0.000001 和 log(n) 等的大 O 复杂度比较
- angular - 类型“{}”上不存在角度 8 地图
- python-3.x - 我如何为 MIPS64 平台编译 Python 3.8.2