On Tue, May 24, 2022 at 01:14:18PM -0700, Eric Wheeler wrote: > Adriano was getting 1.5ms sync-write ioping's to an NVMe through bcache > (instead of the expected ~70us), so perhaps the NVMe flushes were killing > performance if every write was also forcing an erase cycle. This sounds very typical of a low end consumer grade NVMe SSD, yes. > The suggestion was to disable flushes in bcache as a troubleshooting step > to see if that solved the problem, but with the warning that it could be > unsafe. If you want to disable the cache (despite this being unsafe!) you can do this for every block device: echo "write through" > /sys/block/XXX/queue/write_cache > Questions: > > 1. If a user knows their disks have a non-volatile cache then is it safe > to drop flushes? It is, but in that case the disk will not advertise a write cache, and the flushes will not make it past the submit_bio and never reach the driver. > 3. Since the block layer wont send flushes when the hardware reports that > the cache is non-volatile, then how do you query the device to make > sure it is reporting correctly? For NVMe you can get VWC as: > nvme id-ctrl -H /dev/nvme0 |grep -A1 vwc > > ...but how do you query a block device (like a RAID LUN) to make sure > it is reporting a non-volatile cache correctly? cat /sys/block/XXX/queue/write_cache