大量の小さなファイル シナリオにおける Yanrong YRCloudFile トレーニング アクセラレーション最適化戦略

序文

汎用の高性能分散ファイル ストレージ システムである YRCloudFile は、AI/自動運転、HPC、定量分析、視覚効果レンダリング、ビッグ データなどのシナリオで広く使用されています. 帯域幅が極端に大きい場合、大きなファイルには高い IOPS が必要になる場合があります、その他は多数の小さなファイルをサポートする必要があり、これらの要件には多くの設計上の決定と最適化が含まれます。

今日は、AI トレーニング シナリオで多数の小さなファイルのパフォーマンスを最適化する方法について説明します. トレーニング シナリオでのファイル アクセスは読み取り専用モードで開かれるため、この記事では最適化の部分に焦点を当てます読み取り専用の小さなファイル。

ファイルの読み取りと書き込みのプロセス

まず、ファイルを読み込むために必要な操作プロセスを簡単に理解しましょう。例として cat の小さなファイルを取り上げます: まず、ファイルを読み取る前に、lookup によってファイルが存在するかどうかを確認する必要があります. 存在を確認するには、open によってファイルを開き、read によってファイルの内容を読み取り、ファイルの内容を読み取った後、close でファイルを閉じます。YRCloudFile、NFS などのネットワーク ファイル システムの場合、inode を更新するための revalidate と stat があります。ルックアップは、ファイルシステムによってファイルが最初に開かれたときにのみ呼び出されることに注意してください。strace を使用して上記のプロセスを確認できます。

図1.jpg上図の操作 fadvise と mmap は cat 独自の操作なので、ここで深く理解する必要はありません。また、lookup と revalidate に関して、この 2 つの操作が上の図に表示されていないのは、これらがファイル システム内に隠され、システム コールによって公開されていないためです。

小さなファイルのメタデータのボトルネック

小さなファイル操作では、メタデータ操作が大きな割合を占め、70% ~ 80% に達することもありますが、実際のビジネスの読み取りと書き込みはそのごく一部に過ぎず、この時点でメタデータのパフォーマンスがパフォーマンスのボトルネックになります。

上記の議論を通じて、ファイルの読み取りに必要な操作は、ルックアップ、オープン、読み取り、クローズ、統計、再検証であり、各操作にはネットワークのオーバーヘッドが伴うことがわかりました。その中で、ルックアップはファイルシステムが最初にファイルを読み取るときにのみ呼び出され、ファイルを複数回読み取るオーバーヘッドは基本的に無視できます. 説明を簡単にするために、ルックアップについては以下では説明しません. オープン、クローズ、統計、および再検証はすべてメタデータ操作であり、呼び出しは 1 つだけですが、読み取りのみがビジネスで実際に必要なデータ操作であり、ファイルが大きくなればなるほど、より多くの呼び出しが行われます。ファイルが大きいほど読み取り回数が多くなり、データ操作の割合が高くなり、メタデータ操作の割合が低くなり、逆もまた同様であることが計算でわかります。次に、大きなファイルと小さなファイルを読み取るシナリオを詳しく見てみましょう。

まず、大きなファイルを読み取るシナリオについて説明しましょう。たとえば、100M ファイルを読み取り、毎回 1M データを読み取るには、100 回の読み取り呼び出しが必要です。対応する 4 つのメタデータ操作があります: open、close、stat、および revalidate です。操作の総数は 104 であるため、データ操作は 100/104 * 100% = 96%、メタデータ操作は 4/104 * 100% = 4% と計算できます。

1M ファイルの読み取りなど、小さなファイルを読み取るシナリオでは、毎回 1M データを読み取るために必要な読み取り呼び出しは 1 回だけです。対応するメタデータ操作には、open、close、stat、および revalidate の 4 つの操作もあります。操作の総数は 5 で、これも計算できます。データ操作の割合は 1/5 * 100% = 20% です。メタデータ操作は 4/5 * 100% = 80% を占めています。

上記の分析から、ファイルが小さいほどメタデータ操作の割合が高くなり、メタデータのパフォーマンスがボトルネックになり、操作のパフォーマンスが大幅に制限されることが明らかになりました。その最適化のために、ops を改善するためにメタデータ操作の割合を減らす必要があります。

技術的な解決策

上記の議論に基づいて、小さなファイルを扱う場合、メタデータのパフォーマンスに重大なボトルネックがあることがわかりました。これは、小さいファイルごとに、システムが対応するメタデータ情報 (開く、閉じる、統計、再検証など) を頻繁に読み取って処理する必要があるためです。これらの操作は、多くのネットワークおよびディスク リソースを占有します。これらの問題を最適化する必要があるためです。

首先,为了支撑对元数据访问路径的低延迟和高 ops 能力,焱融分布式文件存储 YRCloudFile 采用的 io 框架可提供百万级的 iops 能力。由于元数据需要保证 posix 语义,所以性能上无法和普通读写 io 一样,但同样可以提供数十万的交互能力。

其次,依赖客户端缓存机制,焱融分布式文件存储 YRCloudFile 提供了基于内存缓存的元数据管理技术,在保证语义的前提下,能安全的命中缓存,减少跨网络和磁盘访问开销。

再次,我们实现的 lazy size,lazy close,batch commit,metadata readhead 机制,能同时保证在文件系统语义的前提下,将部分逻辑 offload 到客户端,这样的好处是能够很好的降低元数据服务的压力,并且集群的元数据性能得到很大的提升,包括在延迟和 ops 等方面。

综上,焱融分布式文件存储 YRCloudFile 通过一系列技术操作优化小文件的元数据性能,包括基于内存缓存的元数据管理、轻量级 open、延迟 close 以及批量 close 等。这些技术的应用,可以显著提高焱融分布式文件存储 YRCloudFile 在处理小文件时的性能表现,从而更好地满足用户的需求。

优化前后性能对比

接下来,我们将在具体的 vdbench 测试中来看下焱融分布式文件存储 YRCloudFile 的优化效果。集群配置多副本模式,其中 3 组 mds,3 组 oss,mds 和 oss 均由 nvme ssd 构建。vdbench 脚本为:

hd=default,vdbench=/root/vdbench50406,shell=ssh,user=root
hd=hd01,system=10.16.11.141

fsd=fsd1_01,anchor=/mnt/yrfs/vdbench/4k-01/,depth=1,width=5,files=1000,size=4k,openflags=o_direct

fwd=fwd1_01,fsd=fsd2_01,host=hd01,operation=read,fileio=random,fileselect=random

rd=randr_4k,fwd=fwd5_*,xfersize=4k,threads=64,fwdrate=max,format=restart,elapsed=30,interval=1,pause=1m
复制代码

优化前

Miscellaneous statistics:
(These statistics do not include activity between the last reported interval and shutdown.)
READ_OPENS          Files opened for read activity:             540,793     95,986/sec
FILE_BUSY           File busy:                                   5,129         570/sec
FILE_CLOSES         Close requests:                             540,793     95,986/sec
复制代码

优化后

Miscellaneous statistics:
(These statistics do not include activity between the last reported interval and shutdown.)
READ_OPENS          Files opened for read activity:           4,589,603    653,742/sec
FILE_BUSY           File busy:                                   56,129      1,870/sec
FILE_CLOSES         Close requests:                           4,589,603    653,742/sec
复制代码

通过上述数据,可以看到焱融分布式文件存储 YRCloudFile 显著提高了在处理小文件时的性能表现,性能提高 6 倍以上,以上是基于大量的测试和评估所得出的结论。

写到最后

この記事では、読み取り専用の小さなファイル シナリオにおける Yanrong 分散ファイル ストレージ YRCloudFile の最適化について説明します。最初にファイルの基本的な読み取りと書き込みプロセスを確認し、小さなファイルに存在する問題を分析してから、AI トレーニング シナリオにおける読み取り専用の小さなファイルのパフォーマンスのボトルネックを解決する一連の最適化ソリューションを設計しました。Yanrong 分散ファイル ストレージ YRCloudFile の最適化テクノロジは、ビジネス アプリケーション、特に AI トレーニング シナリオで、より高速で効率的で信頼性の高いサービスを提供できるため、ユーザー エクスペリエンスと満足度が向上します。

おすすめ

転載: juejin.im/post/7215424831209455677