Understanding memory fragmentation in Linux kernel