[Tarantool-patches] [PATCH small 0/2] Aligned lsregion

Aleksandr Lyapunov alyapunov at tarantool.org
Sat May 16 22:09:32 MSK 2020


On 5/16/20 2:22 AM, Vladislav Shpilevoy wrote:
>
>> lsregion will allocate aligned addresses as long as you request only aligned sizes,
>> up to sizeof(uintptr_t) (see lslab_sizeof()).
>> This property is not documented (maybe it should be!). It is also similar to mempool
>> property, see mempool_create description.
> Yeah, here are 3 problems:
> - lsregion is used not only for tuples, but for bps tree extents too. We can't
>    rely on their alignment being the same. Sanitizer revealed, that both extents
>    and tuples are not aligned;
Since you decided to implement _aligned_alloc anyway, it's not very 
important, but
I want to find the truth. It could help us one day.
Extents' sizes are also (very) aligned, all you need is to align tuple 
sizes, as I proposed.
Try it and you will see: if you align sizes (up to 8) - you'll get 
aligned addresses.
> - sanitizer revealed, that mempool_alloc returns unaligned addresses too. I am
>    going to look into that after lsregion;
I checked the code and I confirm that if mempool item size is aligned, 
the addresses
will be also aligned. Could you suggest me how to get those sanitizer 
results?
I also see that small_alloc aligns all allocations with 8 bytes.
> - slab first position can be aligned not enough. So we can't assume anything
>    about first address in a slab. And therefore about all the other addresses
>    too.
Yes, that position is aligned with 8 bytes now. Are there any cases when 
we need bigger
align factor?
>
>> I like one-line change more.
>>
>> If you still want _reserve and _aligned_alloc method for further purposes, please
>> read my by-commit comments.
> I want lsregion be consistent with other allocators, and provide basic
> API for aligned allocations. Like region does.
Ok, that's a great idea, doesn't it earn a special ticket on github?


More information about the Tarantool-patches mailing list