diff options
| author | Mel Gorman <mel@csn.ul.ie> | 2010-03-05 16:42:15 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-06 14:26:26 -0500 |
| commit | a1b57ac061b0e348c9a878f8fa3a93a67fe6af42 (patch) | |
| tree | 8e904d9f3c3aae08f0bc8128eef81078653f611d /Documentation/filesystems | |
| parent | 72f0ba0252e7177965255ed2c663be126b6b5f91 (diff) | |
mm: document /proc/pagetypeinfo
Add documentation for /proc/pagetypeinfo.
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Reviewed-by: Christoph Lameter <cl@linux-foundation.org>
Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Documentation/filesystems')
| -rw-r--r-- | Documentation/filesystems/proc.txt | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index b5c5fc657a88..96a44dd95e03 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
| @@ -438,6 +438,7 @@ Table 1-5: Kernel info in /proc | |||
| 438 | modules List of loaded modules | 438 | modules List of loaded modules |
| 439 | mounts Mounted filesystems | 439 | mounts Mounted filesystems |
| 440 | net Networking info (see text) | 440 | net Networking info (see text) |
| 441 | pagetypeinfo Additional page allocator information (see text) (2.5) | ||
| 441 | partitions Table of partitions known to the system | 442 | partitions Table of partitions known to the system |
| 442 | pci Deprecated info of PCI bus (new way -> /proc/bus/pci/, | 443 | pci Deprecated info of PCI bus (new way -> /proc/bus/pci/, |
| 443 | decoupled by lspci (2.4) | 444 | decoupled by lspci (2.4) |
| @@ -592,7 +593,7 @@ Node 0, zone DMA 0 4 5 4 4 3 ... | |||
| 592 | Node 0, zone Normal 1 0 0 1 101 8 ... | 593 | Node 0, zone Normal 1 0 0 1 101 8 ... |
| 593 | Node 0, zone HighMem 2 0 0 1 1 0 ... | 594 | Node 0, zone HighMem 2 0 0 1 1 0 ... |
| 594 | 595 | ||
| 595 | Memory fragmentation is a problem under some workloads, and buddyinfo is a | 596 | External fragmentation is a problem under some workloads, and buddyinfo is a |
| 596 | useful tool for helping diagnose these problems. Buddyinfo will give you a | 597 | useful tool for helping diagnose these problems. Buddyinfo will give you a |
| 597 | clue as to how big an area you can safely allocate, or why a previous | 598 | clue as to how big an area you can safely allocate, or why a previous |
| 598 | allocation failed. | 599 | allocation failed. |
| @@ -602,6 +603,48 @@ available. In this case, there are 0 chunks of 2^0*PAGE_SIZE available in | |||
| 602 | ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE | 603 | ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE |
| 603 | available in ZONE_NORMAL, etc... | 604 | available in ZONE_NORMAL, etc... |
| 604 | 605 | ||
| 606 | More information relevant to external fragmentation can be found in | ||
| 607 | pagetypeinfo. | ||
| 608 | |||
| 609 | > cat /proc/pagetypeinfo | ||
| 610 | Page block order: 9 | ||
| 611 | Pages per block: 512 | ||
| 612 | |||
| 613 | Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10 | ||
| 614 | Node 0, zone DMA, type Unmovable 0 0 0 1 1 1 1 1 1 1 0 | ||
| 615 | Node 0, zone DMA, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0 | ||
| 616 | Node 0, zone DMA, type Movable 1 1 2 1 2 1 1 0 1 0 2 | ||
| 617 | Node 0, zone DMA, type Reserve 0 0 0 0 0 0 0 0 0 1 0 | ||
| 618 | Node 0, zone DMA, type Isolate 0 0 0 0 0 0 0 0 0 0 0 | ||
| 619 | Node 0, zone DMA32, type Unmovable 103 54 77 1 1 1 11 8 7 1 9 | ||
| 620 | Node 0, zone DMA32, type Reclaimable 0 0 2 1 0 0 0 0 1 0 0 | ||
| 621 | Node 0, zone DMA32, type Movable 169 152 113 91 77 54 39 13 6 1 452 | ||
| 622 | Node 0, zone DMA32, type Reserve 1 2 2 2 2 0 1 1 1 1 0 | ||
| 623 | Node 0, zone DMA32, type Isolate 0 0 0 0 0 0 0 0 0 0 0 | ||
| 624 | |||
| 625 | Number of blocks type Unmovable Reclaimable Movable Reserve Isolate | ||
| 626 | Node 0, zone DMA 2 0 5 1 0 | ||
| 627 | Node 0, zone DMA32 41 6 967 2 0 | ||
| 628 | |||
| 629 | Fragmentation avoidance in the kernel works by grouping pages of different | ||
| 630 | migrate types into the same contiguous regions of memory called page blocks. | ||
| 631 | A page block is typically the size of the default hugepage size e.g. 2MB on | ||
| 632 | X86-64. By keeping pages grouped based on their ability to move, the kernel | ||
| 633 | can reclaim pages within a page block to satisfy a high-order allocation. | ||
| 634 | |||
| 635 | The pagetypinfo begins with information on the size of a page block. It | ||
| 636 | then gives the same type of information as buddyinfo except broken down | ||
| 637 | by migrate-type and finishes with details on how many page blocks of each | ||
| 638 | type exist. | ||
| 639 | |||
| 640 | If min_free_kbytes has been tuned correctly (recommendations made by hugeadm | ||
| 641 | from libhugetlbfs http://sourceforge.net/projects/libhugetlbfs/), one can | ||
| 642 | make an estimate of the likely number of huge pages that can be allocated | ||
| 643 | at a given point in time. All the "Movable" blocks should be allocatable | ||
| 644 | unless memory has been mlock()'d. Some of the Reclaimable blocks should | ||
| 645 | also be allocatable although a lot of filesystem metadata may have to be | ||
| 646 | reclaimed to achieve this. | ||
| 647 | |||
| 605 | .............................................................................. | 648 | .............................................................................. |
| 606 | 649 | ||
| 607 | meminfo: | 650 | meminfo: |
