キャッシュの最適化

キャッシュの最適化

3つのHDDと1つのSSDがあり、すべてのドライブをbcacheに正常にマウントしました。

pavs@VAS:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       132G   35G   90G  28% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            3.9G  8.0K  3.9G   1% /dev
tmpfs           786M  2.3M  784M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.9G  152K  3.9G   1% /run/shm
none            100M   52K  100M   1% /run/user
/dev/bcache1    2.7T  2.1T  508G  81% /var/www/html/directlink/FTP1
/dev/bcache2    1.8T  614G  1.2T  36% /var/www/html/directlink/FTP2
/dev/bcache0    1.8T  188G  1.6T  11% /var/www/html/directlink/FTP3
/dev/sdf1       367G  284G   65G  82% /media/pavs/e93284df-e52e-4a5d-a9e1-323a388b332f

キャッシュされるドライブはオペレーティングシステムドライブではありません。大容量ファイルの多いハードドライブ3台、平均ファイルサイズ範囲は600MB~2GB、最小ファイルサイズは500MB、最大ファイルサイズは10GBです。

これらのファイルは、Apache Web サーバーから継続的にダウンロードされます。しかし、頻繁にアクセスするファイルでも、IOの速度はわずかにまたはまったく改善されませんでした。 bcacheがどのタイプのキャッシュ式を使用しているのか、最大キャッシュパフォーマンスのために調整できるのかわかりません。理想的には、頻繁にアクセスするファイルがそのファイルに対する要求がないまで少なくとも1日間キャッシュされていることを確認したいと思います。このレベルのきめ細かいキャッシュ調整が可能かどうかはわかりません。読み取りパフォーマンスにのみ興味があり、SSDドライブの最大利用率を確認したいと思います。


編集:によるとこれ。 bcache は順次キャッシュを「阻害」します。これは、私が正しく理解した場合、ほとんどのファイルが大容量シーケンシャルファイルであるために問題になります。デフォルトのシーケンシャルカットオフは4.0Mなので、ファイルがキャッシュされない可能性があるため(わかりません)、各バックアップドライブに対して以下を実行してカットオフを無効にしました。

echo 0 > /sys/block/bcache0/bcache/sequential_cutoff

さて、実際にパフォーマンスが向上するのを待つ必要があります。


bcache統計に従うと、3つのドライブがすべてキャッシュされます。

キャッシュ0

pavs@VAS:~$ tail /sys/block/bcache0/bcache/stats_total/*
==> /sys/block/bcache0/bcache/stats_total/bypassed <== 
461G

==> /sys/block/bcache0/bcache/stats_total/cache_bypass_hits <== 
9565207

==> /sys/block/bcache0/bcache/stats_total/cache_bypass_misses <== 
0

==> /sys/block/bcache0/bcache/stats_total/cache_hit_ratio <== 
63

==> /sys/block/bcache0/bcache/stats_total/cache_hits <== 
3003399

==> /sys/block/bcache0/bcache/stats_total/cache_miss_collisions <== 
659

==> /sys/block/bcache0/bcache/stats_total/cache_misses <== 
1698297

==> /sys/block/bcache0/bcache/stats_total/cache_readaheads <== 
0

キャッシュ1

pavs@VAS:~$ tail /sys/block/bcache1/bcache/stats_total/*
==> /sys/block/bcache1/bcache/stats_total/bypassed <==
396G

==> /sys/block/bcache1/bcache/stats_total/cache_bypass_hits <==
9466833

==> /sys/block/bcache1/bcache/stats_total/cache_bypass_misses <==
0

==> /sys/block/bcache1/bcache/stats_total/cache_hit_ratio <==
24

==> /sys/block/bcache1/bcache/stats_total/cache_hits <==
749032

==> /sys/block/bcache1/bcache/stats_total/cache_miss_collisions <==
624

==> /sys/block/bcache1/bcache/stats_total/cache_misses <==
2358913

==> /sys/block/bcache1/bcache/stats_total/cache_readaheads <==
0

キャッシュ2

pavs@VAS:~$ tail /sys/block/bcache2/bcache/stats_total/*
==> /sys/block/bcache2/bcache/stats_total/bypassed <==
480G

==> /sys/block/bcache2/bcache/stats_total/cache_bypass_hits <==
9202709

==> /sys/block/bcache2/bcache/stats_total/cache_bypass_misses <==
0

==> /sys/block/bcache2/bcache/stats_total/cache_hit_ratio <==
58

==> /sys/block/bcache2/bcache/stats_total/cache_hits <==
4821439

==> /sys/block/bcache2/bcache/stats_total/cache_miss_collisions <==
1098

==> /sys/block/bcache2/bcache/stats_total/cache_misses <==
3392411

==> /sys/block/bcache2/bcache/stats_total/cache_readaheads <==
0

ベストアンサー1

congested_read_threshold_uscongested_write_threshold_usbcacheドキュメントを設定し、同じ問題を解決しました。

  • トラフィックはまだスピンドルに移動します。/キャッシュミスが発生し続けます。

    実際の世界では、SSDが常にディスク速度に追いつくわけではありません。特に遅いSSD、1つのSSDでキャッシュされた多くのディスク、またはほとんどの順次IOの場合はさらにそうです。そのため、SSDにボトルネックが発生し、すべてが遅くなるのを防ぎたいと思います。

    bcacheがキャッシュデバイスの待ち時間を追跡し、待ち時間がしきい値を超えたときにトラフィックを徐々に調整しないようにします(順次バイパスを減らしてこれを実行します)。

    必要に応じて、しきい値を0に設定してこの機能を無効にできます。

    # echo 0 > /sys/fs/bcache/<cache set>/congested_read_threshold_us

    # echo 0 > /sys/fs/bcache/<cache set>/congested_write_threshold_us

    読み取りのデフォルト時間は2000us(2ミリ秒)、書き込みのデフォルト時間は20000です。

これで、すべてのディスクIOがマイSSD(sde)に転送されます。

Device:    wrqm/s     r/s     w/s    rkB/s    wkB/s await svctm  %util
sdb          0.00    0.00    0.30     0.00     0.00  0.00  0.00   0.00
sdd          0.00    0.10    0.30     0.80     0.00  3.00  3.00   0.12
sdc          0.00    2.20    0.30    26.00     0.00  1.76  1.76   0.44
sda          0.00    0.20    0.20     0.80     0.00  8.00 13.00   0.52
sde        293.20   81.70  232.70  1129.20 58220.00 21.05  3.18 100.00
md1          0.00    2.50    0.30    27.60     0.00  0.00  0.00   0.00
md0          0.00    0.00    0.00     0.00     0.00  0.00  0.00   0.00
bcache0      0.00   83.00  402.40  1156.80 28994.80 31.70  2.06  99.92

おすすめ記事