I am on kernel version 4.4.0-62-generic. I cannot upgrade to kernel 4.9, as it did not play nice with CUDA-drivers: https://devtalk.nvidia.com/default/topic/974733/nvidia-linux-driver-367-57-and-up-do-not-install-on-kernel-4-9-0-rc2-and-higher/
Yes, I understand the cache needs repeated usage of blocks, but my question is basically how many? And if I can lower that number?
In our use case, you basically read a certain group of 100GB of data completely about 100 times. Then another user logs in, and reads a different group of data about 100 times. But after a couple of such users, I observe that only 20GB in total has been promoted to the cache. Even though the cache is 450GB big, and could easily fit all the data one user would need.
So, I come to the conclusion that I need a more aggressive policy.
I now have a reported hit rate of 19.0%, when there is so few data on the volume that 73% of the data would fit in the cache. I could probably solve this issue by making the caching policy more aggressive. I am looking for a way to do that.
Sincerely,
Jonas
Jonas
On 13 February 2017 at 13:55, Zdenek Kabelac <zdenek.kabelac@gmail.com> wrote:
Dne 13.2.2017 v 11:58 Jonas Degrave napsal(a):Hi
Hi,
We are a group of scientists, who work on reasonably sized datasets
(10-100GB). Because we had troubles managing our SSD's (everyone likes to have
their data on the SSD), I set up a caching system where the 500GB SSD caches
the 4TB HD. This way, everybody would have their data virtually on the SSD,
and only the first pass through the dataset would be slow. Afterwards, it
would be cached anyway, and the reads would be faster.
I used lvm-cache for this. Yet, it seems that the (only) smq-policy is very
reluctant in promoting data to the cache, whereas what we would need, is that
data is promoted basically upon the first read. Because if someone is using
the machine on certain data, they will most likely go over the dataset a
couple of hundred times in the following hours.
Right now, after a week of testing lvm-cache with the smq-policy, it looks
like this:
jdgrave@kat:~$ sudo ./lvmstats
start 0
end 7516192768
segment_type cache
md_block_size 8
md_utilization 14353/1179648
cache_block_size 128
cache_utilization 7208960/7208960
read_hits 19954892
read_misses 84623959
read_hit_ratio 19.08%
write_hits 672621
write_misses 7336700
write_hit_ratio 8.40%
demotions 151757
promotions 151757
dirty 0
features 1
jdgrave@kat:~$ sudo ./lvmcache-statistics.sh
------------------------------------------------------------ -------------
LVM [2.02.133(2)] cache report of found device /dev/VG/lv
------------------------------------------------------------ -------------
- Cache Usage: 100.0% - Metadata Usage: 1.2%
- Read Hit Rate: 19.0% - Write Hit Rate: 8.3%
- Demotions/Promotions/Dirty: 151757/151757/0
- Feature arguments in use: writeback
- Core arguments in use : migration_threshold 2048 smq 0
- Cache Policy: stochastic multiqueue (smq)
- Cache Metadata Mode: rw
- MetaData Operation Health: ok
The number of promotions has been very low, even though the read hit rate is
low as well. This is with a cache of 450GB, and currently only 614GB of data
on the cached device. A read hit rate of lower than 20%, when just randomly
caching would have achieved 73% is not what I would have hoped to get.
Is there a way to make the caching way more aggressive? Some settings I can tweak?
You've not reported kernel version use.
Please provide results kernel 4.9.
Also note - cache will NOT cache blocks which are well enough covered by 'page-cache' and it's also 'slow' moving case - so it needs couple repeated usage of blocks (without page-cache) to be promoted to cache.
Regards
Zdenek
_______________________________________________ linux-lvm mailing list linux-lvm@redhat.com https://www.redhat.com/mailman/listinfo/linux-lvm read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/