Scroll to navigation

proc_buddyinfo(5) File Formats Manual proc_buddyinfo(5)

ИМЯ

/proc/buddyinfo - memory fragmentation

ОПИСАНИЕ

/proc/buddyinfo
В этом файле содержится информация, которую можно использовать при диагностике проблем с фрагментацией памяти. Каждая строка начинается с идентификатора узла и имени зоны, которые вместе определяют область памяти. Далее следует количество доступных блоков (chunks) определённого порядка, в котором разделялись зоны. Размер в байтах порядка задаётся формулой:

(2^order) * PAGE_SIZE
    

Алгоритм двоичных близнецов (binary buddy allocator) внутри ядра разделит один блок на несколько меньшего размера (например, пополам) или объединит два рядом стоящих блока в один большего размера (например удвоенного), чтобы выполнить запрос выделения и подсчёта фрагментации памяти. Порядок совпадает с номером столбца, при начале отсчёта от нуля.
Пример для системы x86-64:
Node 0, zone     DMA     1    1    1    0    2    1    1    0    1    1    3
Node 0, zone   DMA32    65   47    4   81   52   28   13   10    5    1  404
Node 0, zone  Normal   216   55  189  101   84   38   37   27    5    3  587
В этом примере показан один узел, содержащий три зоны и 11 блоков разного размера. Если размер страницы равен 4 КБ, то первая зона с именем DMA (в x86 — первые 16 МБ памяти) содержит 1 блок по 4 КБ (порядок 0) и 3 блока по 4 МБ (порядок 10).
Если памяти сильно фрагментирована, то счётчики блоков высшего порядка будут равны нулю и выделение больших непрерывных областей будет завершаться с ошибкой.
Дополнительную информацию о зонах смотрите /proc/zoneinfo.

СМОТРИТЕ ТАКЖЕ

proc(5)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Darima Kogan <silverdk99@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.

2 мая 2024 г. Справочные страницы Linux 6.8