LinuxのZFSがキャッシュから読み取れないのはなぜですか?

LinuxのZFSがキャッシュから読み取れないのはなぜですか?

読み取り速度が約40MB /秒のシングルUSB接続4TB回転ディスクを含むテストzpoolを設定しました。

このディスクのキャッシュに設定された4つの〜300GB高速SATA2内部SSDがあります。このL2ARCで約900MB /秒を読み取ることができます。

ほとんどの場合、このプールは静的な400 GBのデータセットを読み取ります。

システムには200 GB以上の利用可能なメモリがあり、私たちの目的に応じて1500 MB /秒以上で動作すると考えられています。

Every 1.0s: zpool iostat -y -v 1 1 ; zpool status -v                                                las2: Tue Oct 16 20:20:07 2018

                                                      capacity     operations     bandwidth
pool                                                alloc   free   read  write   read  write
--------------------------------------------------  -----  -----  -----  -----  -----  -----
storage                                              417G  3.22T    239      2  29.7M   132K
  usb-Seagate_M3_Portable_NM12QHQF-0:0-part1         417G  3.22T    239      2  29.7M   132K
cache                                                   -      -      -      -      -      -
  ata-INTEL_SSDSC2BA400G3_BTTV41450D92400HGN-part3  52.8G   291G     11      0   927K   128K
  ata-INTEL_SSDSC2BA400G3_BTTV423000XA400HGN-part3  52.9G   291G     13      0  1.48M      0
  ata-INTEL_SSDSC2BA400G3_BTTV423406FG400HGN-part3  52.7G   291G      8      0   324K      0
  ata-INTEL_SSDSC2BA400G3_BTTV423406G6400HGN-part3  52.9G   291G      5      0   336K      0
--------------------------------------------------  -----  -----  -----  -----  -----  -----
  pool: storage
 state: ONLINE
  scan: scrub repaired 0B in 1h56m with 0 errors on Sun Oct 14 02:20:56 2018
config:

        NAME                                                STATE     READ WRITE CKSUM
        storage                                             ONLINE       0     0     0
          usb-Seagate_M3_Portable_NM12QHQF-0:0-part1        ONLINE       0     0     0
        cache
          ata-INTEL_SSDSC2BA400G3_BTTV41450D92400HGN-part3  ONLINE       0     0     0
          ata-INTEL_SSDSC2BA400G3_BTTV423000XA400HGN-part3  ONLINE       0     0     0
          ata-INTEL_SSDSC2BA400G3_BTTV423406FG400HGN-part3  ONLINE       0     0     0
          ata-INTEL_SSDSC2BA400G3_BTTV423406G6400HGN-part3  ONLINE       0     0     0

errors: No known data errors

AIUI、読み取りはシステムメモリのARCにキャッシュされます。特定のレベルの「フル」に達すると、このデータはL2ARC(1.1TB高速SSD)に移動されます。

このプールのほぼ一定のディレクトリの1つで実行すると、デフォルトの低速tar -c . | pv > /dev/nullHDDから読み取られる速度である約40 MB /秒が表示されます。

問題は私もそれを二度目に見たことです!時には80-100MB/秒まで上がりますが、時には10MB/秒に落ちる場合もあります。私は99%の読み取りがメモリまたは高速L2ARCから来ると予想しています。

何を提供しますか?このボックスには256GBのシステムメモリがあり、そのうち200GB以上が無料なので、RAM速度を確認したいと思います。これが失敗すると、数百GBのL2ARCが未使用のままになります。

私は何が間違っていましたか?このデータを非常に高速(> 1GB /秒)でARCで読み取れないのはなぜですか?これが不可能な場合は、L2ARC(> 500MB /秒)で読むことはどうですか?ほとんどの削除されたシステムで40〜80 MB /秒が表示されるのはなぜですか?

Ubuntu bionic 18.04.1 x86_64 system.

Linux las2 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

zfs-auto-snapshot/now 1.2.4-1 all [installed,local]
zfs-zed/now 0.7.5-1ubuntu16.4 amd64 [installed,local]
zfsutils-linux/now 0.7.5-1ubuntu16.4 amd64 [installed,local]

ベストアンサー1

これには2つの問題があります。

まず、データセットがメモリに収まらず、LRU(Least Recent Used)に基づいて削除されます。これは、データセット全体を実行して最初から始めた場合、探しているもののどれもARCに含まれないことを意味します。

2番目の問題は、L2ARCが思うように埋められないことです。 ARC からデータが削除されると埋められますが、塗りつぶし速度が制限されます。デフォルトの制限は8MB / Sで、2番目の読み取りにわずかな影響を与えます。この問題を解決するには、「l2arc_write_max」および「l2arc_write_boost」ZFSパラメータを確認する必要があると思います。

おすすめ記事