[U-Boot] [RFC V2 PATCH 0/3] Add cache for block devices
Eric Nelson
eric at nelint.com
Mon Mar 21 02:45:24 CET 2016
Here's a more full-featured implementation of a cache for block devices
that uses a small linked list of cache blocks.
Experimentation loading a 4.5 MiB kernel from the root directory of
a FAT filesystem shows that a single cache entry of a single block
is the only
Loading the same from the /boot directory of an ext4 filesystem
shows a benefit with 4 cache entries, though the single biggest
benefit is also with the first cache entry:
=> for n in 0 1 2 4 8 ; do
> blkc 1 $n ; blkc c ; blkc i ;
> load mmc 0:2 10008000 /boot/zImage ;
> done
changed to max of 0 entries of 1 blocks each
4955304 bytes read in 503 ms (9.4 MiB/s)
changed to max of 1 entries of 1 blocks each
4955304 bytes read in 284 ms (16.6 MiB/s)
changed to max of 2 entries of 1 blocks each
4955304 bytes read in 284 ms (16.6 MiB/s)
changed to max of 4 entries of 1 blocks each
4955304 bytes read in 255 ms (18.5 MiB/s)
changed to max of 8 entries of 1 blocks each
4955304 bytes read in 255 ms (18.5 MiB/s)
As mentioned earlier in this thread, the modification to the mmc
layer should probably be simpler and easier to apply to other
block subsystems.
Eric Nelson (3):
drivers: block: add block device cache
block: add Kconfig options for BLOCK_CACHE, CMD_BLOCK_CACHE
mmc: add support for block device cache
drivers/block/Kconfig | 19 ++++
drivers/block/Makefile | 1 +
drivers/block/cache_block.c | 240 ++++++++++++++++++++++++++++++++++++++++++++
drivers/mmc/mmc.c | 10 +-
drivers/mmc/mmc_write.c | 7 ++
include/part.h | 69 +++++++++++++
6 files changed, 345 insertions(+), 1 deletion(-)
create mode 100644 drivers/block/cache_block.c
--
2.6.2
More information about the U-Boot
mailing list