From: Hou Tao <houtao1@xxxxxxxxxx> > htab_map_mem_usage() is introduced to calculate hashmap memory usage. In > this helper, some small memory allocations are ignore, as their size is > quite small compared with the total size. The inner_map_meta in > hash_of_map is also ignored. > > The result for hashtab as follows, > > - before this change > 1: hash name count_map flags 0x1 <<<< no prealloc, fully set > key 16B value 24B max_entries 1048576 memlock 41943040B > 2: hash name count_map flags 0x1 <<<< no prealloc, none set > key 16B value 24B max_entries 1048576 memlock 41943040B > 3: hash name count_map flags 0x0 <<<< prealloc > key 16B value 24B max_entries 1048576 memlock 41943040B > > The memlock is always a fixed size whatever it is preallocated or > not, and whatever the count of allocated elements is. > > - after this change > 1: hash name count_map flags 0x1 <<<< non prealloc, fully set > key 16B value 24B max_entries 1048576 memlock 117441536B > 2: hash name count_map flags 0x1 <<<< non prealloc, non set > key 16B value 24B max_entries 1048576 memlock 16778240B > 3: hash name count_map flags 0x0 <<<< prealloc > key 16B value 24B max_entries 1048576 memlock 109056000B > > The memlock now is hashtab actually allocated. > > The result for percpu hash map as follows, > - before this change > 4: percpu_hash name count_map flags 0x0 <<<< prealloc > key 16B value 24B max_entries 1048576 memlock 822083584B > 5: percpu_hash name count_map flags 0x1 <<<< no prealloc > key 16B value 24B max_entries 1048576 memlock 822083584B > > - after this change > 4: percpu_hash name count_map flags 0x0 > key 16B value 24B max_entries 1048576 memlock 897582080B > 5: percpu_hash name count_map flags 0x1 > key 16B value 24B max_entries 1048576 memlock 922748736B > > At worst, the difference can be 10x, for example, > - before this change > 6: hash name count_map flags 0x0 > key 4B value 4B max_entries 1048576 memlock 8388608B > > - after this change > 6: hash name count_map flags 0x0 > key 4B value 4B max_entries 1048576 memlock 83889408B > > Signed-off-by: Yafang Shao <laoar.shao@xxxxxxxxx> > Acked-by: Hou Tao <houtao1@xxxxxxxxxx>