Ubuntu Server에서 Bcache를 사용하여 42TB RAID에서 캐시로 사용되는 512GB SSD가 있습니다.
성능을 테스트하기 위해 크고 작은 파일이 모두 포함된 게임을 전송했습니다. 파일을 서버로 전송할 때 속도가 70MB/s로 제한되고 하드 드라이브 배열에 직접 기록되는 것으로 나타났습니다.
서버에서 컴퓨터로 파일을 전송할 때 속도가 가끔 200MB/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.
드라이브와 SSD를 캐시로 지원하는 RAID를 구성했습니다. SSD를 RAID용 캐시로 성공적으로 등록하고 쓰기 저장 모드를 활성화했습니다.
캐시 드라이브가 활용되지 않는 것으로 나타났습니다.
활성화해야 하는 다른 설정이 있습니까? 아니면 이 캐시 드라이브의 기능을 테스트하는 다른 방법이 있습니까?
저는 아내의 연구를 위해 이 시스템을 설정하고 있으며 아내가 서버를 네트워크 드라이브로 사용할 수 있기를 바랍니다.
캐시를 다룰 때 적절한 속도를 경험할 수 있도록 캐시가 제대로 작동하기를 바랍니다.
답변1
sequential_cutoff
쓰기 속도를 고정하도록 구성된 설정입니다. 기본값 sequential_cutoff
은 4Mb입니다. 즉, 4Mb를 초과하는 모든 항목은 하드 드라이브에 직접 기록됩니다.
2048Mb와 4096Mb를 사용해 보았지만 실제 변화는 없었습니다. 0으로 변경하면 최대 200Mbps의 쓰기 속도가 가능해집니다.
이 서버가 어떤 데이터에 사용되는지 알게 되면 최적의 개수를 좁힐 수도 있습니다.
명령은
echo 0 > /sys/block/bcache0/bcache/sequential_cutoff