allocator: correct split and spill
allocator: find optimal split position