Lines Matching +full:d +full:- +full:cache +full:- +full:size
2 A block layer cache (bcache)
6 nice if you could use them as cache... Hence bcache.
10 - http://bcache.evilpiepirate.org
11 - http://evilpiepirate.org/git/linux-bcache.git
12 - http://evilpiepirate.org/git/bcache-tools.git
14 It's designed around the performance characteristics of SSDs - it only allocates
16 extents (which can be anywhere from a single sector to the bucket size). It's
22 great lengths to protect your data - it reliably handles unclean shutdown. (It
26 Writeback caching can use most of the cache for buffering writes - writing
33 average is above the cutoff it will skip all IO from that task - instead of
35 thus entirely bypass the cache.
38 from disk or invalidating cache entries. For unrecoverable errors (meta data
40 in the cache it first disables writeback caching and waits for all dirty data
44 You'll need make-bcache from the bcache-tools repository. Both the cache device
47 make-bcache -B /dev/sdb
48 make-bcache -C /dev/sdc
50 make-bcache has the ability to format multiple devices at the same time - if
51 you format your backing devices and cache device at the same time, you won't
54 make-bcache -B /dev/sda /dev/sdb -C /dev/sdc
56 bcache-tools now ships udev rules, and bcache devices are known to the kernel
64 device, it'll be running in passthrough mode until you attach it to a cache.
66 slow devices as bcache backing devices without a cache, and you can choose to add
76 /dev/bcache/by-uuid/<uuid>
77 /dev/bcache/by-label/<label>
85 You can also control them through /sys/fs//bcache/<cset-uuid>/ .
87 Cache devices are managed as sets; multiple caches per set isn't supported yet
89 cache set shows up as /sys/fs/bcache/<UUID>
92 ---------
94 After your cache device and backing device are registered, the backing device
95 must be attached to your cache set to enable caching. Attaching a backing
96 device to a cache set is done thusly, with the UUID of the cache set in
99 echo <CSET-UUID> > /sys/block/bcache0/bcache/attach
102 your bcache devices. If a backing device has data in a cache somewhere, the
103 /dev/bcache<N> device won't be created until the cache shows up - particularly
106 If you're booting up and your cache device is gone and never coming back, you
115 The backing device will still use that cache set if it shows up in the future,
117 cache, don't expect the filesystem to be recoverable - you will have massive
121 --------------
123 Bcache tries to transparently handle IO errors to/from the cache device without
125 configurable, and defaults to 0) it shuts down the cache device and switches all
128 - For reads from the cache, if they error we just retry the read from the
131 - For writethrough writes, if the write to the cache errors we just switch to
132 invalidating the data at that lba in the cache (i.e. the same thing we do for
133 a write that bypasses the cache)
135 - For writeback writes, we currently pass that error back up to the
136 filesystem/userspace. This could be improved - we could retry it as a write
137 that skips the cache so we don't have to error the write.
139 - When we detach, we first try to flush any dirty data (if we were running in
145 --------------
150 to force it to run without the cache::
157 start your bcache without its cache, like so::
164 B) Bcache does not find its cache::
166 host:/sys/block/md5/bcache# echo 0226553a-37cf-41d5-b3ce-8b1e944543a8 > attach
168 [ 1933.478179] bcache: __cached_dev_store() Can't attach 0226553a-37cf-41d5-b3ce-8b1e944543a8
169 [ 1933.478179] : cache set not found
172 or disappeared and came back, and needs to be (re-)registered::
180 Please report it to the bcache development list: linux-bcache@vger.kernel.org
186 D) Recovering data without bcache:
190 of the backing device created with --offset 8K, or any value defined by
191 --data-offset when you originally formatted bcache with `make-bcache`.
195 losetup -o 8192 /dev/loop0 /dev/your_bcache_backing_dev
199 If your cache is in writethrough mode, then you can safely discard the
200 cache device without loosing data.
203 E) Wiping a cache device
207 host:~# wipefs -a /dev/sdh2
209 they were: c6 85 73 f6 4e 1a 45 ca 82 65 f5 7f 48 ba 6d 81
211 After you boot back with bcache enabled, you recreate the cache and attach it::
213 host:~# make-bcache -C /dev/sdh2
214 UUID: 7be7e175-8f4c-4f99-94b2-9c904d227045
215 Set UUID: 5bc072a8-ab17-446d-9744-e247949913c1
224 [ 650.549228] bcache: register_cache() registered cache device sdh2
226 start backing device with missing cache::
230 attach new cache::
232 host:/sys/block/md5/bcache# echo 5bc072a8-ab17-446d-9744-e247949913c1 > attach
233 … bcache: bch_cached_dev_attach() Caching md5 as bcache0 on set 5bc072a8-ab17-446d-9744-e247949913c1
241 host:~# wipefs -a /dev/nvme0n1p4
247 host:/sys/fs/bcache/b7ba27a1-2398-4649-8ae3-0959f57ba128# ls -l cache0
248 …lrwxrwxrwx 1 root root 0 Feb 25 18:33 cache0 -> ../../../devices/pci0000:00/0000:00:1d.0/0000:70:0…
249 host:/sys/fs/bcache/b7ba27a1-2398-4649-8ae3-0959f57ba128# echo 1 > stop
250 …kernel: [ 917.041908] bcache: cache_set_free() Cache set b7ba27a1-2398-4649-8ae3-0959f57ba128 unr…
254 host:~# wipefs -a /dev/nvme0n1p4
255 …16 bytes were erased at offset 0x00001018 (bcache): c6 85 73 f6 4e 1a 45 ca 82 65 f5 7f 48 ba 6d 81
258 G) dm-crypt and bcache
268 fdisk run and re-register a changed partition table, which won't work
287 bcache: cache_set_free() Cache set 5bc072a8-ab17-446d-9744-e247949913c1 unregistered
295 host:/sys/fs/bcache# ls -l */{cache?,bdev?}
296 …xrwx 1 root root 0 Mar 5 09:39 0226553a-37cf-41d5-b3ce-8b1e944543a8/bdev1 -> ../../../devices/vir…
297 …xrwx 1 root root 0 Mar 5 09:39 0226553a-37cf-41d5-b3ce-8b1e944543a8/cache0 -> ../../../devices/vi…
298 …lrwxrwxrwx 1 root root 0 Mar 5 09:39 5bc072a8-ab17-446d-9744-e247949913c1/cache0 -> ../../../devi…
301 and stop the cache::
303 host:/sys/fs/bcache/5bc072a8-ab17-446d-9744-e247949913c1# echo 1 > stop
311 ---------------------------
317 - Backing device alignment
319 The default metadata size in bcache is 8k. If your backing device is
321 width using `make-bcache --data-offset`. If you intend to expand your
323 raid stripe size to get the disk multiples that you would like.
325 For example: If you have a 64k stripe size, then the following offset
331 volume to the following data-spindle counts without re-aligning::
335 - Bad write performance
344 - Bad performance, or traffic not going to the SSD that you'd expect
346 By default, bcache doesn't cache everything. It tries to skip sequential IO -
349 accessed data out of your cache.
351 But if you want to benchmark reads from cache, and you start out with fio
352 writing an 8 gigabyte test file - so you want to disable that::
360 - Traffic's still going to the spindle/still getting cache misses
362 In the real world, SSDs don't always keep up with disks - particularly with
367 To avoid that bcache tracks latency to the cache device, and gradually
373 # echo 0 > /sys/fs/bcache/<cache set>/congested_read_threshold_us
374 # echo 0 > /sys/fs/bcache/<cache set>/congested_write_threshold_us
378 - Still getting cache misses, of the same data
381 the way cache coherency is handled for cache misses. If a btree node is full,
382 a cache miss won't be able to insert a key for the new data and the data
383 won't be written to the cache.
389 benchmarking, if you're trying to warm the cache by reading a bunch of data
390 and there's no other traffic - that can be a problem.
392 Solution: warm the cache by doing writes, or use the testing branch (there's
396 Sysfs - backing device
397 ----------------------
400 (if attached) /sys/fs/bcache/<cset-uuid>/bdev*
403 Echo the UUID of a cache set to this file to enable caching.
413 Write to this file to detach from a cache set. If there is dirty data in the
414 cache, it will be flushed first.
417 Amount of dirty data for this backing device in the cache. Continuously
418 updated unlike the cache set's version, but may be slightly off.
424 Size of readahead that should be performed. Defaults to 0. If set to e.g.
425 1M, it will round cache miss reads up to that size, but without overlapping
426 existing cache entries.
433 A sequential IO will bypass the cache once it passes this threshold; the
442 maximum acceptable sequential size for any single request.
447 no cache: Has never been attached to a cache set.
449 clean: Part of a cache set, and there is no cached dirty data.
451 dirty: Part of a cache set, and there is cached dirty data.
454 dirty data cached but the cache set was unavailable; whatever data was on the
462 When dirty data is written to the cache and it previously did not contain
467 If nonzero, bcache tries to keep around this percentage of the cache dirty by
472 Rate in sectors per second - if writeback_percent is nonzero, background
478 still be added to the cache until it is mostly full; only meant for
481 Sysfs - backing device stats
486 aggregated in the cache set directory as well.
489 Amount of IO (both reads and writes) that has bypassed the cache
496 Hits and misses for IO that is intended to skip the cache are still counted,
500 Counts instances where data was going to be inserted into the cache from a
501 cache miss, but raced with a write and data was already present (usually 0
502 since the synchronization for cache misses was rewritten)
507 Sysfs - cache set
510 Available at /sys/fs/bcache/<cset-uuid>
519 Block size of the cache devices.
522 Amount of memory currently used by the btree cache
525 Size of buckets
527 cache<0..n>
528 Symlink to each of the cache devices comprising this cache set.
531 Percentage of cache device which doesn't contain dirty data, and could
537 Clears the statistics associated with this cache
540 Amount of dirty data is in the cache (updated when garbage collection runs).
543 Echoing a size to this file (in human readable units, k/M/G) creates a thinly
544 provisioned volume backed by the cache set.
547 These determines how many errors we accept before disabling the cache.
549 reaches io_error_limit dirty data is written out and the cache is disabled.
552 Journal writes will delay for up to this many milliseconds, unless a cache
560 Write to this file to shut down the cache set - waits until all attached
567 Detaches all backing devices and closes the cache devices; if dirty data is
570 Sysfs - cache set internal
590 Longest chain in the btree node cache's hash table
593 Counts instances where while data was being read from the cache, the bucket
594 was reused and invalidated - i.e. where the pointer was stale after the read
600 Sysfs - Cache device
606 Minimum granularity of writes - should match hardware sector size.
612 Size of buckets
623 Size of the freelist as a percentage of nbuckets. Can be written to to
625 artificially reduce the size of the cache at runtime. Mostly for testing
626 purposes (i.e. testing how different size caches affect your hit rate), but
638 Total buckets in this cache
641 Statistics about how recently data in the cache has been accessed.
642 This can reveal your working set size. Unused is the percentage of
643 the cache that doesn't contain any data. Metadata is bcache's
644 metadata overhead. Average is the average priority of cache buckets.
648 Sum of all data that has been written to the cache; comparison with