2012/1/8 KOSAKI Motohiro <kosaki.motohiro / gmail.com>:
>> Narihiro Nakamura <authornari / gmail.com> wrote:
>>> * A heap block address is aligned by 16KB to find fast a bitmap.
>>
>> Just wondering, why/how did you determine 16K alignment is optimal?
>> Normal page size in Linux is only 4K, so 16K seems large.
>

We defined the heap block size at following commit.
https://github.com/ruby/ruby/commit/4d93af26df1c322515e535d60cd5b0a66dcc222d
I've run benchmarks on different heap block size. Then, I chose 16KB
because it was fastest.
But, I probably should have chosen 4KB as you say.

> Moreover, posix_memalign() and memalign() sound bad choice. It need
> a few header bytes. then, some malloc implementations might allocate
> 32K instead of 16K.
>
> So, why can't we use mmap() directly or use "16K - a few bytes" length?
>

No special reason.
We should choose to use mmap() directly if it's efficient way.

-- 
Narihiro Nakamura (nari)