LINUX.ORG.RU

История изменений

Исправление kirk_johnson, (текущая версия) :

Все достаточно просто - SLAB запрашивает страницу памяти, и часть её отдает под объект кеша. Потом пихает в неё следующий объект кеша. И ещё. В это время освобождается первый элемент кеша, и эта часть страницы помечается как свободная. Допустим, у нас есть страница памяти, занятая объектами только на четверть. И где-то есть ещё страница памяти, в которой свободна только четверть. В таком случае аллокатор утрамбует все в одну страницу, а ещё одну страницу освободит.

P.S. Про дефграментацию наврал - тот патч так до сих пор и не приняли.

Исходная версия kirk_johnson, :

Все достаточно просто - SLAB запрашивает страницу памяти, и часть её отдает под объект кеша. Потом пихает в неё следующий объект кеша. И ещё. В это время освобождается первый элемент кеша, и эта часть страницы помечается как свободная. Допустим, у нас есть страница памяти, занятая объектами только на четверть. И где-то есть ещё страница памяти, в которой свободна только четверть. В таком случае аллокатор утрамбует все в одну страницу, а ещё одну страницу освободит.