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