高效能儲存SIG月度動態:ANCK ublk完成POC測試,EROFS最佳化xattr後設資料開銷

OpenAnolis小助手發表於2023-04-17


高效能儲存技術 SIG(Special Interest Group)目標:高效能儲存技術興趣組致力於儲存棧效能挖掘,當前主要聚焦核心 io_uring 技術最佳化非同步 IO 效能,使用持久化記憶體提升業務單成本效能,容器場景儲存技術最佳化等課題。期望透過社群平臺,打造標準的高效能儲存技術軟體棧,推動軟硬體協同發展。

01 本月 SIG 整體進展

本月合入 Anolis 主線 PR 26 個,包含多個重要元件的更新。erofs 支援精簡的 long xattr name prefixes,最佳化 overlayfs 場景 xattr 後設資料開銷。ANCK 5.10 ublk 已完成 POC 測試,相比 tcmu 時延最佳化 1 倍。io_uring asio 協程最佳化方案已經確定,預計效能最佳化 10%。DSMS 管理平臺的開發基本完成,dsms-storage 適配 Anolis 23 進行中。感謝中興的同學提交了多個 bugfix。

02 專案具體進展

1、Anolis OS

ext4:修復 ext4_xattr_delete_inode hang(PR1362)

xfs:xfs_qm 清理(PR1326),修復 xfs_sysfs_init 記憶體洩露(PR1332/PR1334),移除 xfs_rename 中不正確的 ASSERT(PR1351),修復 force shutdown UAF(PR1376)

fuse:修復 fuse flush/resend 介面 bug(PR1302)nfs:修復 RECLAIM_COMPLETE EACCES 問題(PR1324/PR1325),修復 slot 分配失敗的記憶體洩露(PR1346/PR1347),修復遍歷 grace_list 缺少鎖保護問題(PR1350),修復引數解析空指標(PR1370),處理 CREATE_SESSION NFS4ERR_NOSPC(PR1368/PR1360)misc:修復 hugetlbfs_parse_param 空指標(PR1352),修復 configfs_create_dir 記憶體洩露(PR1357),修復 nbd_start_device_ioctl hang(PR1356),修復 rbd_sysfs_init() 記憶體洩露(PR1372/PR1373),修復 md_cluster unlock_all_bitmaps 野指標(PR1367),修復 nvme_alloc_admin_tags 空指標(PR1405)vfio:Clear the caps->buf to NULL after free(PR1422/1427),修復 drbd_create_device UAF(PR1251)VFS:修復 ltp/openat04(PR1489)

2、容器映象加速

erofs 檔案系統支援精簡的 long xattr name prefixes,用於解決儲存 overlayfs xattr 後設資料(例如 composefs 模式)重複 name 的額外開銷, 更多背景可參考:

erofs-utils 支援從 tarball 生成索引直接掛載,最新補丁正在測試中:

3、使用者態儲存

截止目前,上游社群一共提出了三種 ublk 零複製方案:

我們也在調研一種基於 io_uring register 模式的零複製的方案,預計後續將發出 RFC 補丁到上游社群。

ublk 在 ANCK 5.10 上已經完成回合,並在分散式儲存專案進行了 POC 測試,結果顯示 ublk 的單 I/O 時延能最佳化到 tcmu 的一半,有很大的優勢。

ACNK 5.10 和之前基於 6.1 主線上測試 ublk 的效能資料很接近,表明 ANCK 5.10 的 ublk 已經基本可用,後續將隨 5.10.134-014 版本釋出。

4、io_uring

對 io_uring echo server 測試框架進行最佳化,對每個 IO 請求引入工作負載從而模擬真實的業務環境,io_uring 的效能開始穩定的比 epoll 提高 10% 左右,原因是 io_uring 的提交 batch 有一定程度的提高。在進行 IO 請求的工作負載處理時,網路可能繼續有請求到來,從而可以在一次 io_uring_enter 中提交多個請求,提高 batch。

我們調整了 io_uring asio 協程的實現方案,透過基於 io_uring 的 mulit-shot recv 和 provid-buffer 機制,採用 completion models 模式來實現非同步程式設計。

此方案的好處是在網路中斷中直接觸發 io_uring recv 操作,縮短的整個 IO 鏈路。而傳統 Readiness 程式設計模型需要先等待 IO 事件,然後再發起 IO 操作。目前 POC 程式碼完成 60% 左右。

5、DSMS

dsms-engine 開發進行中,主要是部署部分功能,B 版本測試同步進行中。由於 Anolis 23 上的 ceph 版本為 17.x,dsms-storage 倉庫目前以來 15.x。經過 SIG 例會討論,決定放到 dsms 子倉庫中來維護。

03 SIG 下一步計劃

erofs Linux v6.4 合入視窗準備,erofs-utils 支援 tarball 模式合入主線,deflate 壓縮演算法支援等。

ublk 分散式儲存專案業務適配。

io_uring asio 最佳化方案實現和 POC 測試。

DSMS 繼續適配 Anolis 23。

附錄:SIG 專案一覽

  • io_uring

  • virtiofs

  • 容器映象加速

  • 資料庫最佳化

  • 使用者態儲存

  • DSMS

詳情內容見 ,歡迎各位感興趣的開發者加入共建。

—— 完 ——


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2946186/,如需轉載,請註明出處,否則將追究法律責任。

相關文章