Open tigerblue77 opened 2 years ago
The problem you're running into here is that each physical thread needs to have an least one slab available.
The size of your volume is 12GB, which it only enough space to create one 8GB slab. So you can one have one physical zone. If you want to use 8GB slabs, two physical threads would require at least 17GB, four physical threads would requires 33 GB, etc. (In addition to the slab space, we require some space for metadata, so using exactly 16GB would probably not be enough to create two slabs.)
The number of physical threads can be changed after formatting, so you can decide whether you want to create the VDO with a larger physical size, or start with just one thread.
Thank you very much for this clear explanation ! I didn't find it in any documentation I read, is there any documentation link you can share ?
Also, I'm trying to get the maximum performance out of VDO, what could you advise me ?
About threads, my reasoning was to say: by default, this setting has 1 thread, this one has 2 and this one has 4; so I'll take the number of vCPUs in my system and distribute them according to the same weighting. What do you think of this choice? I also had the idea to simply put the total number of vCPUs for each of these parameters but I was afraid to overload the system
The number of physical threads can be changed after formatting, so you can decide whether you want to create the VDO with a larger physical size, or start with just one thread.
So I suppose that I will have to change my metadata profile and then... How do I apply the updated profile ? Will I need a reboot or another annoying thing like that?
About threads, my reasoning was to say: by default, this setting has 1 thread, this one has 2 and this one has 4; so I'll take the number of vCPUs in my system and distribute them according to the same weighting. What do you think of this choice? I also had the idea to simply put the total number of vCPUs for each of these parameters but I was afraid to overload the system
This a very reasonable choice. The optimal settings depend a lot on the characteristics of your hardware and the data access pattern of the volume, so I can't make too many recommendations. The most CPU-intensive work (hashing) happen on the CPU threads, so it's good to have several of those. For physical threads specifically, you should have enough to keep the underlying storage busy. However, if there are too many, they will compete for shared resources and can reduce performance. The effect is likely to be modest in either case, though.
Also, using vdo_write_policy="async" will likely perform better if you don't need the volume to be synchronous. And vdo_use_deduplication=1 should be set so you can actually get deduplication of writes.
The number of physical threads can be changed after formatting, so you can decide whether you want to create the VDO with a larger physical size, or start with just one thread.
So I suppose that I will have to change my metadata profile and then... How do I apply the updated profile ? Will I need a reboot or another annoying thing like that?
You would need to shut the volume down entirely and restart it with the new setting. Also I am not sure lvm has tools yet to allow you to modify this so applying the new setting might be challenging. For now it might be better to create test volumes to try various configurations until you find one that seems to work well.
Hello there,
I'm encountering a problem with the following LVM VDO metadata profile:
FYI, on my system:
When I run
lvcreate
using the previous metadata profile:I get the following error:
I did some tests and found that the problem comes from these lines :
and
Here are the results of my different tests:
I feel that I'm doing something wrong but don't really know what 😅 thanks per advance !
PS: I need 8GB slabs to make my VDO volume ready for 64TB total volume. I choosed 8GB even if 32GB are advised on RedHat documentation because this volume will never need to be expanded more than 64TB.