.\" Copyright (C) 1994, 1995, Daniel Quinlan .\" Copyright (C) 2002-2008, 2017, Michael Kerrisk .\" Copyright (C) 2023, Alejandro Colomar .\" .\" SPDX-License-Identifier: GPL-3.0-or-later .\" .TH proc_buddyinfo 5 (date) "Linux man-pages (unreleased)" .SH NAME /proc/buddyinfo \- memory fragmentation .SH DESCRIPTION .TP .I /proc/buddyinfo This file contains information which is used for diagnosing memory fragmentation issues. Each line starts with the identification of the node and the name of the zone which together identify a memory region. This is then followed by the count of available chunks of a certain order in which these zones are split. The size in bytes of a certain order is given by the formula: .IP .in +4n .EX (2\[ha]order)\ *\ PAGE_SIZE .EE .in .IP The binary buddy allocator algorithm inside the kernel will split one chunk into two chunks of a smaller order (thus with half the size) or combine two contiguous chunks into one larger chunk of a higher order (thus with double the size) to satisfy allocation requests and to counter memory fragmentation. The order matches the column number, when starting to count at zero. .IP For example on an x86-64 system: .RS -12 .EX 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 .EE .RE .IP In this example, there is one node containing three zones and there are 11 different chunk sizes. If the page size is 4 kilobytes, then the first zone called .I DMA (on x86 the first 16 megabyte of memory) has 1 chunk of 4 kilobytes (order 0) available and has 3 chunks of 4 megabytes (order 10) available. .IP If the memory is heavily fragmented, the counters for higher order chunks will be zero and allocation of large contiguous areas will fail. .IP Further information about the zones can be found in .IR /proc/zoneinfo . .SH SEE ALSO .BR proc (5)