我有一个 512 GB SSD,用作 Ubuntu Server 上使用 Bcache 的 42 TB RAID 的缓存。
为了测试其性能,我传输了一个包含大文件和小文件的游戏。当将文件传输到服务器时,我注意到速度上限为 70 MB/s,并且似乎是直接写入硬盘阵列。
当我将文件从服务器传输到我的电脑时,速度偶尔会达到 200 MB/s,但经常会下降。
我正在利用 NFS-Kernel-Server 服务进行文件传输。
/sys/fs/bcache/UUID/cache0/priority_stats shows the cache as not being used at all:
Unused: 99%
Clean: 0%
Dirty: 0%
Metadata: 0%
Average: 0
Sectors per Q: 258144
Quantiles: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2]
LSblk shows that all the hard drives and ssds are set up as the bcache:
sda 8:0 0 14.6T 0 disk
└─md0 9:0 0 43.7T 0 raid0
└─bcache0 252:0 0 43.7T 0 disk /export/raid
/mnt/raid
sdb 8:16 0 14.6T 0 disk
└─md0 9:0 0 43.7T 0 raid0
└─bcache0 252:0 0 43.7T 0 disk /export/raid
/mnt/raid
sdc 8:32 0 14.6T 0 disk
└─md0 9:0 0 43.7T 0 raid0
└─bcache0 252:0 0 43.7T 0 disk /export/raid
/mnt/raid
nvme1n1 259:0 0 465.8G 0 disk
└─bcache0 252:0 0 43.7T 0 disk /export/raid
/mnt/raid
Webmin 指示传输过程中 CPU 使用率约为 30%,表明速度受到硬盘驱动器的限制。
我发现运行该命令tail /sys/block/bcache0/bcache/stats_total/*
会显示该特定驱动器的统计信息。
sudo tail /sys/block/bcache0/bcache/stats_total/*
==> /sys/block/bcache0/bcache/stats_total/bypassed <==
6.5G
==> /sys/block/bcache0/bcache/stats_total/cache_bypass_hits <==
36
==> /sys/block/bcache0/bcache/stats_total/cache_bypass_misses <==
14982
==> /sys/block/bcache0/bcache/stats_total/cache_hit_ratio <==
97
==> /sys/block/bcache0/bcache/stats_total/cache_hits <==
46057
==> /sys/block/bcache0/bcache/stats_total/cache_miss_collisions <==
0
==> /sys/block/bcache0/bcache/stats_total/cache_misses <==
1068
我已经遵循了这个指南:
https://www.kernel.org/doc/html/latest/admin-guide/bcache.html。
我已经配置了 RAID,其中支持驱动器和 SSD 作为缓存。我已成功将 SSD 注册为 RAID 的缓存并启用写回模式。
我注意到缓存驱动器没有被利用。
是否需要启用任何其他设置,或者是否有其他方法可以测试此缓存驱动器的功能?
我正在为我妻子的研究设置这个系统,我希望她能够将服务器作为网络驱动器工作。
我希望缓存能够正常运行,以便她在处理缓存时能够体验到不错的速度。
答案1
sequential_cutoff
是配置以修复写入速度的设置。默认情况下sequential_cutoff
为 4Mb,这意味着任何超过 4Mb 的内容都将直接写入硬盘。
我尝试了 2048Mb 和 4096Mb,没有任何实际变化。将其更改为 0 可使写入速度高达 200Mbps。
当我找出该服务器用于何种数据时,我可能会缩小最佳数量。
命令是
echo 0 > /sys/block/bcache0/bcache/sequential_cutoff