高效能儲存SIG月度動態:ublk完成POC、dsms-storage在Anolis OS上成功適配

OpenAnolis小助手發表於2023-02-06


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

01 本月 SIG 整體進展

儘管 SIG 成員在 1 月都經歷了新冠感染,但在本月仍然合入 anolis 主線 PR 23 個,包含多個主要元件的特性增強,效能最佳化,以及 bugfix 等。感謝所有 SIG 成員的辛勤付出,祝大家新年快樂!

ANCK 5.10 支援 ublk 程式碼已基本完成適配,同步測試中;另外在分散式儲存專案中完成 POC,從 POC 資料來看,效果很不錯,比之前的 tcmu 方案有很大程度的最佳化。該特性支援預計將在 ANCK 5.10-14 版本正式釋出。

erofs 容器映象 page cache 共享特性程式碼已傳送到社群,需要進一步跟進並根據社群的 review 意見修改,並最終合入社群主線。

ANCK 4.19/5.10 fuse 回合 killpriv_v2 特性,極大地提升了 small write 效能(70% ~ 120%)。

DSMS 第一階段適配工作已基本完成,dsms-storage 已可以在 Anolis OS 上正常執行。

浪潮資訊 cuishiwei 同學在測試多個 nvme 盤併發建立和刪除分割槽時發現可能導致當機,報告到社群並在社群主線修復後,積極提交 PR 在 ANCK 4.19/5.10 兩個版本完成修復。感謝 cuishiwei 同學的貢獻。

02 專案具體進展

1、Anolis OS

erofs:fix potential NULL in error path(PR1022)

ext4:fix bug_on ext4_mb_use_inode_pa(PR1055),fix check to prevent false positive report of incorrect used inodes(PR1056),fix bug for rename with RENAME_WHITEOUT(PR1064),stable fixes(PR1091)

xfs:Speed up file fsyncs by reducing iolock cycling(PR1024),validate inode fork size against fork format(PR1067)

block:unhash blkdev part inode when the part is deleted(PR1081/PR1082)

fuse:support FUSE_HANDLE_KILLPRIV_V2(PR1084/PR1085),simply use flags instead for fuse passthrough(PR1088)

dax:fsdax COW bug fixes(PR1033),mark the iomap argument to dax_iomap_sector as const(PR1086)

io_uring:Improve IOCB_NOWAIT O_DIRECT reads(PR1034),fix referencing uninitialized io_uring_ctx(PR1040),fix CQ waiting timeout handling(PR1070),add IO_WQ_WORK_MM for uring_cmd(PR1077)

liburing:add IORING_SETUP_SQE128 and uring-cmd support(PR3),Add missing fields for uring_cmd in struct io_uring_sqe(PR4)

miscs:fix documentation for unprivileged_userns_clone sysctl(PR1073/PR1074),stable fixes (dm/md/nfs)(PR1089)

2、容器映象加速

容器映象 page cache sharing 特性在社群持續迭代,增加對 readahead 的支援。以 tensorflow 映象為例,在建立同一映象的多個例項時,該特效能節省 ~97% 的(容器映象)記憶體佔用;tensorflow 小版本之間能節省 ~20% 的(容器映象)記憶體佔用。

ANCK fscache daemonless 特性已實現 RFC 版本,支援 fscache daemon 的退出和重新拉起,持續迭代中。

3、使用者態儲存

ANCK 5.10 支援 ublk 程式碼已基本完成適配,40+ 補丁,待提交 PR review。

分散式儲存專案的 POC 進展順利,POC 基於 6.1 核心 ublk 適配,單個 IO 時延明顯低於 tcmu 版本,IOPS 也有大幅度提升。

ebpf + io_uring 零複製特性原計劃春節前發出 RFC,但因存在一些未解決的問題有些延遲;預計 2 月上旬發出 RFC 系列補丁到社群。

4、io_uring

最佳化 nowait O_DIRECT 讀效能。

回合 uring-cmd 特性後結合 ublk 進行測試,過程中發現一些 io hang 等問題,確認為 uring-cmd 回合引入的問題,目前已經修復。

開始分析 asio 中 io_uring 的程式碼流程,目前已討論出一些最佳化點,預計 2 月底會有一個階段性的進展。

5、DSMS

在解決包缺失問題後,適配工作進展比較順利,目前第一階段的適配已基本完成,dsms-storage 已經可以在 Anolis OS 上正常跑起來;下一步將進行視覺化相關開發工作。

當前選定 ceph 版本為 15.2.15。

相關工作計劃:

03 SIG 下一步計劃

1、推動容器映象 page cache 共享特性合入上游主線並回合到 ANCK。

2、erofs-utils 支援多執行緒解壓,最佳化 ISO 映象安裝效能。

3、ANCK 5.10 支援 ublk 測試和分散式儲存場景適配。

4、ebpf + io_uring 零複製方案社群 RFC 和討論推進。

5、io_uring + async_simple 協程最佳化。

6、dsms 視覺化管理平臺開發。

附錄:SIG 專案一覽

  • io_uring

  • virtiofs

  • 容器映象加速

  • 資料庫最佳化

  • 使用者態儲存

  • DSMS

詳情內容見高效能儲存技術 SIG(參考連結可移步龍蜥公眾號(OpenAnolis龍蜥)2023年2月3日相同推送檢視。),歡迎各位感興趣的開發者加入共建。


—— 完 ——


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

相關文章