cgroup IO 控制與(新型)Linux AIO

cgroup IO 控制與(新型)Linux AIO

在 Linux v5.0 中,某些類型的非同步 IO 是否繞過 cgroup IO 控制器?

編輯:緩衝 write() 和 fsync() 分析起來可能相對複雜。我在這裡發現了一篇關於控制緩衝寫入的有趣文章:https://andrestc.com/post/cgroups-io/。如果這個問題看起來太複雜,也許最簡單的方法是先問有關io_uring.


新的 AIO 介麵io_uring包括 read()、write() 和 fsync() 的 AIO 等效項。當您將其用於「緩衝 IO」(普通可快取檔案 IO),且頁面快取無法立即滿足 IO 時,它會使用工作佇列非同步運作。

io_submit()最近還有原來的AIO系統調用獲得了支持IOCB_CMD_FSYNC。這個新指令使用工作佇列來呼叫 vfs_fsync()。 (戴夫欽納強烈暗示IOCB_CMD_FSYNC適用於正常的“緩衝 IO”,所以聽起來與io_uring) 非常相似。

IOCB_CMD_FSYNC使用內核預設工作隊列。 io_uring略有不同。每個都io_uring創建自己的並發管理工作隊列(CMWQ)。

我查看了ps -eo pid,user,args,cgroup|grep [[]我的系統。 cgroup 中唯一的核心線程恰好是[vhost-nnn].我發現核心明確地將這些 vhost_worker 執行緒放置在創建它們的使用者進程的 cgroup 中。看vhost_attach_cgroups_work()

相比之下,沒有提到cgroup's檔案系統/io_uring.c,也不在內核/工作隊列.c

結構文件不直接指向特定的cgroup。雖然它確實指出了一個結構索引節點CONFIG_CGROUP_WRITEBACK,如果設定的話則指向「關聯的cgroup wb」 。

相關內容