linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* alloc_pages_exact() triggering memory fragmentation on nommu?
@ 2016-09-01 13:02 Nikita Yushchenko
  2016-09-02 10:10 ` Nikita Yushchenko
  0 siblings, 1 reply; 2+ messages in thread
From: Nikita Yushchenko @ 2016-09-01 13:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexey Maximov

Hi

I'm trying to analyze a system based on NoMMU linux that
badly suffers from memory fragmentation - up to inability
to execute whatever.

Below is a log of /proc/buddyinfo dumped periodically over
system lifetime, that demonstrates how fragmentation progresses.

What catched my eye here is: time to time, something does an
order-7 allocation. But symmetric free almost never happens.
Despite of system being almost idle, no long-running processes
are added, no processes increase in size, only 'ps' and 'cat'
commands to gather logs are periodically executed.

I'm having a guess that this cab be caused by use of
alloc_pages_exact() for NoMMU private anonymous mappings.

This routine causes "tail" of allocation to be returned back
to allocator... and inserted at top of free list. Later, when
whatever in the system makes a trivial order-0 allocation, these
just-freed tails immediately get used (because free pages are
inserted at end of free lists... and new pages are allocated
from either beginning or end of free list, depending on 'cold'
parameter).  At a glance, this should have a net effect of much
increased probability of "tail" of large allocation get used
as a small allocation, and thus inability to rebuild a large free
block at time when large allocation is freed.

Is there any protection against this effect in the allocator
of current kernels? (kernel of system in question is somewhat
outdated)

If not, maybe one can be implemented? I.e. by moving "tails" from
alloc_pages_exact() to a different free list to be used only when
no other pages are available?

WBR,
Nikita Yushchenko


Node 0, zone      DMA      2      1      6     10     26     54     60      3      1      2      0      2      0      1 
Node 0, zone      DMA      5      5      6     12     28     56     62      3      0      2      0      2      0      1 
Node 0, zone      DMA      2      3      6     14     30     59     64      1      1      1      0      2      0      1 
Node 0, zone      DMA      0      2      8     17     32     61     66      0      0      1      0      2      0      1 
Node 0, zone      DMA      2      0      8     17     32     61     66      0      0      1      0      2      0      1 
Node 0, zone      DMA      3      3      7     22     36     66     70      1      0      1      1      1      0      1 
Node 0, zone      DMA      1      2      7     22     36     66     70      1      0      1      1      1      0      1 
Node 0, zone      DMA      2      2      8     23     37     67     71      2      1      2      0      1      0      1 
Node 0, zone      DMA      2      2      8     23     37     67     71      2      1      2      0      1      0      1 
Node 0, zone      DMA      3      3      9     24     38     68     72      1      1      2      0      1      0      1 
Node 0, zone      DMA      3      3      9     24     38     68     72      1      1      2      0      1      0      1 
Node 0, zone      DMA      1      3      9     24     38     68     72      1      1      2      0      1      0      1 
Node 0, zone      DMA      3      3     10     25     39     69     73      2      0      2      0      1      0      1 
Node 0, zone      DMA      2      3     10     25     39     69     73      2      0      2      0      1      0      1 
Node 0, zone      DMA      3      3     11     26     40     70     74      1      0      2      0      1      0      1 
Node 0, zone      DMA      2      3     11     26     40     70     74      1      0      2      0      1      0      1 
Node 0, zone      DMA      3      2     11     26     40     70     74      1      0      2      0      1      0      1 
Node 0, zone      DMA      1      2     11     26     40     70     74      1      0      2      0      1      0      1 
Node 0, zone      DMA      1      2     11     26     40     70     74      1      0      2      0      1      0      1 
Node 0, zone      DMA      3      2     12     27     41     71     75      0      0      2      0      1      0      1 
Node 0, zone      DMA      1      2     12     27     41     71     75      0      0      2      0      1      0      1 
Node 0, zone      DMA      2      3     11     27     41     71     75      0      0      2      0      1      0      1 
Node 0, zone      DMA      1      3     11     27     41     71     75      0      0      2      0      1      0      1 
Node 0, zone      DMA      2      2     11     27     41     71     75      0      0      2      0      1      0      1 
Node 0, zone      DMA      2      2     12     28     42     72     76      1      1      1      0      1      0      1 
Node 0, zone      DMA      2      3     14     30     44     74     78      1      0      1      0      1      0      1 
Node 0, zone      DMA      2      3     13     29     43     73     77      2      0      1      0      1      0      1 
Node 0, zone      DMA      2      4     14     30     44     74     78      3      1      2      1      0      0      1 
Node 0, zone      DMA      1      2     13     29     43     73     77      2      0      1      0      1      0      1 
Node 0, zone      DMA      1      0     15     32     44     74     78      1      1      2      1      0      0      1 
Node 0, zone      DMA      2      4     14     30     44     74     78      1      0      1      0      1      0      1 
Node 0, zone      DMA      1      2     15     33     45     75     79      0      1      2      1      0      0      1 
Node 0, zone      DMA      0      2     15     33     45     75     79      0      1      2      1      0      0      1 
Node 0, zone      DMA      0      0     15     33     45     75     79      0      1      2      1      0      0      1 
Node 0, zone      DMA      1      1     16     34     46     76     80      1      0      2      1      0      0      1 
Node 0, zone      DMA      0      1     16     34     46     76     80      1      0      2      1      0      0      1 
Node 0, zone      DMA      1      0     16     34     46     76     80      1      0      2      1      0      0      1 
Node 0, zone      DMA      0      1     17     35     47     77     81      0      0      2      1      0      0      1 
Node 0, zone      DMA      4      2     15     32     46     76     80      1      1      2      1      0      0      1 
Node 0, zone      DMA      6      3     14     33     47     77     81      0      1      2      1      0      0      1 
Node 0, zone      DMA      3      3     14     33     47     77     81      0      1      2      1      0      0      1 
Node 0, zone      DMA      3      3     14     33     47     77     81      0      1      2      1      0      0      1 
Node 0, zone      DMA      2      4     15     34     48     78     82      1      0      2      1      0      0      1 
Node 0, zone      DMA      3      4     15     34     48     78     82      1      0      2      1      0      0      1 
Node 0, zone      DMA      2      4     15     34     48     78     82      1      0      2      1      0      0      1 
Node 0, zone      DMA      2      3     15     35     49     79     83      2      1      1      1      0      0      1 
Node 0, zone      DMA      2      3     15     35     49     79     83      2      1      1      1      0      0      1 
Node 0, zone      DMA      3      4     15     36     50     80     84      1      1      1      1      0      0      1 
Node 0, zone      DMA      2      4     14     35     49     79     83      2      1      1      1      0      0      1 
Node 0, zone      DMA      3      5     15     36     50     80     84      3      0      1      1      0      0      1 
Node 0, zone      DMA      2      4     15     36     50     80     84      3      0      1      1      0      0      1 
Node 0, zone      DMA      2      4     15     36     50     80     84      3      0      1      1      0      0      1 
Node 0, zone      DMA      2      3     15     36     50     80     84      3      0      1      1      0      0      1 
Node 0, zone      DMA      1      3     15     36     50     80     84      3      0      1      1      0      0      1 
Node 0, zone      DMA      2      4     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      1      4     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      3      2     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      3      2     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      2      2     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      2      2     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      1      2     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      1      1     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      2      0     16     37     51     81     85      2      0      1      1      0      0      1 
Node 0, zone      DMA      0      1     17     38     52     82     86      1      0      1      1      0      0      1 
Node 0, zone      DMA      1      0     17     38     52     82     86      1      0      1      1      0      0      1 
Node 0, zone      DMA      1      0     17     38     52     82     86      1      0      1      1      0      0      1 
Node 0, zone      DMA      0      1     18     39     53     83     87      0      0      1      1      0      0      1 
Node 0, zone      DMA      1      1     18     39     53     83     87      0      0      1      1      0      0      1 
Node 0, zone      DMA      0      0     21     43     55     85     89      0      0      2      0      0      0      1 
Node 0, zone      DMA      1      0     22     44     56     86     90      1      1      1      0      0      0      1 
Node 0, zone      DMA      2      1     23     45     57     87     91      0      1      1      0      0      0      1 
Node 0, zone      DMA      0      1     23     45     57     87     91      0      1      1      0      0      0      1 
Node 0, zone      DMA      1      2     22     45     57     87     91      0      1      1      0      0      0      1 
Node 0, zone      DMA      0      0     21     44     56     86     90      1      1      1      0      0      0      1 
Node 0, zone      DMA      5      3     22     43     57     87     91      2      1      1      0      0      0      1 
Node 0, zone      DMA      3      3     22     43     57     87     91      2      1      1      0      0      0      1 
Node 0, zone      DMA      4      2     22     43     57     87     91      2      1      1      0      0      0      1 
Node 0, zone      DMA      3      2     22     43     57     87     91      2      1      1      0      0      0      1 
Node 0, zone      DMA      3      3     23     44     58     88     92      1      1      1      0      0      0      1 
Node 0, zone      DMA      3      3     23     44     58     88     92      1      1      1      0      0      0      1 
Node 0, zone      DMA      4      3     22     44     58     88     92      1      1      1      0      0      0      1 
Node 0, zone      DMA      4      3     22     44     58     88     92      1      1      1      0      0      0      1 
Node 0, zone      DMA      1      0     24     47     59     89     93      0      0      1      0      0      0      1 
Node 0, zone      DMA      1      1     25     48     60     90     94      1      1      0      0      0      0      1 
Node 0, zone      DMA      1      1     25     48     60     90     94      1      1      0      0      0      0      1 
Node 0, zone      DMA      4      2     23     45     59     89     93      2      0      1      0      0      0      1 
Node 0, zone      DMA      4      2     23     45     59     89     93      2      0      1      0      0      0      1 
Node 0, zone      DMA      3      2     23     45     59     89     93      2      0      1      0      0      0      1 
Node 0, zone      DMA      1      2     23     45     59     89     93      2      0      1      0      0      0      1 
Node 0, zone      DMA      3      3     25     47     61     91     95      2      1      0      0      0      0      1 
Node 0, zone      DMA      3      2     25     47     61     91     95      2      1      0      0      0      0      1 
Node 0, zone      DMA      2      2     25     47     61     91     95      2      1      0      0      0      0      1 
Node 0, zone      DMA      3      3     26     49     63     93     97      2      0      0      0      0      0      1 
Node 0, zone      DMA      3      3     26     49     63     93     97      2      0      0      0      0      0      1 
Node 0, zone      DMA      3      3     26     49     63     93     97      2      0      0      0      0      0      1 
Node 0, zone      DMA      3      3     26     49     63     93     97      2      0      0      0      0      0      1 
Node 0, zone      DMA      2      3     26     49     63     93     97      2      0      0      0      0      0      1 
Node 0, zone      DMA      3      2     26     49     63     93     97      2      0      0      0      0      0      1 
Node 0, zone      DMA      2      2     26     49     63     93     97      2      0      0      0      0      0      1 
Node 0, zone      DMA      2      2     27     50     64     94     98      1      0      0      0      0      0      1 
Node 0, zone      DMA      2      2     27     50     64     94     98      1      0      0      0      0      0      1 
Node 0, zone      DMA      2      3     28     51     65     95     99      2      1      1      1      1      1      0 
Node 0, zone      DMA      1      3     28     51     65     95     99      2      1      1      1      1      1      0 
Node 0, zone      DMA      0      3     28     51     65     95     99      2      1      1      1      1      1      0 
Node 0, zone      DMA      2      3     29     52     66     96    100      1      1      1      1      1      1      0 
Node 0, zone      DMA      2      3     29     52     66     96    100      1      1      1      1      1      1      0 
Node 0, zone      DMA      3      3     30     53     67     97    101      2      0      1      1      1      1      0 
Node 0, zone      DMA      1      4     33     54     69     99    103      1      0      1      1      1      1      0 
Node 0, zone      DMA      1      4     35     56     70    100    104      1      1      0      1      1      1      0 
Node 0, zone      DMA      2      3     35     56     70    100    104      1      1      0      1      1      1      0 
Node 0, zone      DMA      1      3     35     56     70    100    104      1      1      0      1      1      1      0 
Node 0, zone      DMA      2      4     36     57     71    101    105      2      0      0      1      1      1      0 
Node 0, zone      DMA      1      4     36     57     71    101    105      2      0      0      1      1      1      0 
Node 0, zone      DMA      2      3     36     57     71    101    105      2      0      0      1      1      1      0 
Node 0, zone      DMA      1      3     36     57     71    101    105      2      0      0      1      1      1      0 
Node 0, zone      DMA      3      3     36     58     72    102    106      1      0      0      1      1      1      0 
Node 0, zone      DMA      2      2     37     58     72    102    106      1      0      0      1      1      1      0 
Node 0, zone      DMA      3      1     38     60     74    104    108      1      1      1      0      1      1      0 
Node 0, zone      DMA      3      2     38     60     74    104    108      1      1      1      0      1      1      0 
Node 0, zone      DMA      3      2     38     60     74    104    108      1      1      1      0      1      1      0 
Node 0, zone      DMA      3      3     40     62     76    106    110      1      0      1      0      1      1      0 
Node 0, zone      DMA      3      3     39     61     75    105    109      2      0      1      0      1      1      0 
Node 0, zone      DMA      3      2     38     61     75    105    109      2      0      1      0      1      1      0 
Node 0, zone      DMA      2      2     39     61     75    105    109      2      0      1      0      1      1      0 
Node 0, zone      DMA      1      2     39     61     75    105    109      2      0      1      0      1      1      0 
Node 0, zone      DMA      3      2     40     62     76    106    110      1      0      1      0      1      1      0 
Node 0, zone      DMA      1      2     40     62     76    106    110      1      0      1      0      1      1      0 
Node 0, zone      DMA      2      3     38     62     76    106    110      1      0      1      0      1      1      0 
Node 0, zone      DMA      1      3     39     62     76    106    110      1      0      1      0      1      1      0 
Node 0, zone      DMA      1      4     40     63     77    107    111      2      1      0      0      1      1      0 
Node 0, zone      DMA      2      3     40     63     77    107    111      2      1      0      0      1      1      0 
Node 0, zone      DMA      2      2     40     63     77    107    111      2      1      0      0      1      1      0 
Node 0, zone      DMA      3      3     41     64     78    108    112      1      1      0      0      1      1      0 
Node 0, zone      DMA      2      3     41     64     78    108    112      1      1      0      0      1      1      0 
Node 0, zone      DMA      2      4     42     65     79    109    113      2      0      0      0      1      1      0 
Node 0, zone      DMA      2      4     42     65     79    109    113      2      0      0      0      1      1      0 
Node 0, zone      DMA      0      1     44     68     80    110    114      1      1      1      1      0      1      0 
Node 0, zone      DMA      1      0     44     68     80    110    114      1      1      1      1      0      1      0 
Node 0, zone      DMA      1      2     45     69     81    111    115      0      1      1      1      0      1      0 
Node 0, zone      DMA      3      2     44     68     81    111    115      1      1      1      1      0      1      0 
Node 0, zone      DMA      0      1     45     69     81    111    115      0      1      1      1      0      1      0 
Node 0, zone      DMA      1      0     45     68     81    111    115      0      1      1      1      0      1      0 
Node 0, zone      DMA      2      1     44     71     83    113    117      0      0      1      1      0      1      0 
Node 0, zone      DMA      2      1     46     71     84    114    118      1      1      0      1      0      1      0 
Node 0, zone      DMA      1      2     45     73     85    115    119      0      1      0      1      0      1      0 
Node 0, zone      DMA      0      1     45     73     85    115    119      0      1      0      1      0      1      0 
Node 0, zone      DMA      4      2     43     70     84    114    118      1      0      1      1      0      1      0 
Node 0, zone      DMA      3      2     43     70     84    114    118      1      0      1      1      0      1      0 
Node 0, zone      DMA      3      3     44     71     85    115    119      2      1      0      1      0      1      0 
Node 0, zone      DMA      3      3     44     71     85    115    119      2      1      0      1      0      1      0 
Node 0, zone      DMA      3      2     44     71     85    115    119      2      1      0      1      0      1      0 
Node 0, zone      DMA      3      2     44     71     85    115    119      2      1      0      1      0      1      0 
Node 0, zone      DMA      2      2     44     71     85    115    119      2      1      0      1      0      1      0 
Node 0, zone      DMA      4      2     45     73     87    117    121      2      0      0      1      0      1      0 
Node 0, zone      DMA      4      2     45     73     87    117    121      2      0      0      1      0      1      0 
Node 0, zone      DMA      4      3     46     74     88    118    122      1      0      0      1      0      1      0 
Node 0, zone      DMA      2      3     46     74     88    118    122      1      0      0      1      0      1      0 
Node 0, zone      DMA      3      2     46     74     88    118    122      1      0      0      1      0      1      0 
Node 0, zone      DMA      2      2     46     74     88    118    122      1      0      0      1      0      1      0 
Node 0, zone      DMA      2      2     46     74     88    118    122      1      0      0      1      0      1      0 
Node 0, zone      DMA      2      3     47     75     89    119    123      2      1      1      0      0      1      0 
Node 0, zone      DMA      1      3     47     75     89    119    123      2      1      1      0      0      1      0 
Node 0, zone      DMA      2      4     48     76     90    120    124      1      1      1      0      0      1      0 
Node 0, zone      DMA      1      4     48     76     90    120    124      1      1      1      0      0      1      0 
Node 0, zone      DMA      1      3     49     77     91    121    125      0      1      1      0      0      1      0 
Node 0, zone      DMA      2      4     50     78     92    122    126      1      2      0      0      0      1      0 
Node 0, zone      DMA      0      3     49     77     91    121    125      0      1      1      0      0      1      0 
Node 0, zone      DMA      3      4     49     78     92    122    126      1      0      1      0      0      1      0 
Node 0, zone      DMA      2      3     50     78     92    122    126      1      0      1      0      0      1      0 
Node 0, zone      DMA      1      3     50     78     92    122    126      1      0      1      0      0      1      0 
Node 0, zone      DMA      1      3     50     78     92    122    126      1      0      1      0      0      1      0 
Node 0, zone      DMA      2      2     50     78     92    122    126      1      0      1      0      0      1      0 
Node 0, zone      DMA      2      3     51     79     93    123    127      2      1      0      0      0      1      0 
Node 0, zone      DMA      2      3     51     79     93    123    127      2      1      0      0      0      1      0 
Node 0, zone      DMA      2      4     52     80     94    124    128      1      1      0      0      0      1      0 
Node 0, zone      DMA      2      3     52     80     94    124    128      1      1      0      0      0      1      0 
Node 0, zone      DMA      4      3     53     81     95    125    129      2      0      0      0      0      1      0 
Node 0, zone      DMA      3      3     53     81     95    125    129      2      0      0      0      0      1      0 
Node 0, zone      DMA      3      3     53     81     95    125    129      2      0      0      0      0      1      0 
Node 0, zone      DMA      3      2     53     81     95    125    129      2      0      0      0      0      1      0 
Node 0, zone      DMA      1      2     53     81     95    125    129      2      0      0      0      0      1      0 
Node 0, zone      DMA      2      3     54     82     96    126    130      1      0      0      0      0      1      0 
Node 0, zone      DMA      0      3     54     82     96    126    130      1      0      0      0      0      1      0 
Node 0, zone      DMA      1      3     55     83     97    127    131      0      0      0      0      0      1      0 
Node 0, zone      DMA      1      3     55     83     97    127    131      0      0      0      0      0      1      0 
Node 0, zone      DMA      2      2     55     83     97    127    131      0      0      0      0      0      1      0 
Node 0, zone      DMA      3      3     56     84     98    128    132      1      1      1      1      1      0      0 
Node 0, zone      DMA      2      3     56     84     98    128    132      1      1      1      1      1      0      0 
Node 0, zone      DMA      2      4     57     85     99    129    133      2      0      1      1      1      0      0 
Node 0, zone      DMA      2      4     57     85     99    129    133      2      0      1      1      1      0      0 
Node 0, zone      DMA      2      3     57     85     99    129    133      2      0      1      1      1      0      0 
Node 0, zone      DMA      1      3     57     85     99    129    133      2      0      1      1      1      0      0 
Node 0, zone      DMA      1      3     57     85     99    129    133      2      0      1      1      1      0      0 
Node 0, zone      DMA      3      3     58     86    100    130    134      1      0      1      1      1      0      0 
Node 0, zone      DMA      3      3     58     86    100    130    134      1      0      1      1      1      0      0 
Node 0, zone      DMA      2      2     58     86    100    130    134      1      0      1      1      1      0      0 
Node 0, zone      DMA      2      1     58     86    100    130    134      1      0      1      1      1      0      0 
Node 0, zone      DMA      1      0     61     90    102    132    136      1      0      0      1      1      0      0 
Node 0, zone      DMA      2      1     62     91    103    133    137      0      0      0      1      1      0      0 
Node 0, zone      DMA      2      0     62     91    103    133    137      0      0      0      1      1      0      0 
Node 0, zone      DMA      3      2     61     91    103    133    137      0      0      0      1      1      0      0 
Node 0, zone      DMA      1      1     59     90    102    132    136      1      0      0      1      1      0      0 
Node 0, zone      DMA      1      0     61     91    103    133    137      0      0      0      1      1      0      0 
Node 0, zone      DMA      1      0     63     92    104    134    138      1      1      1      0      1      0      0 
Node 0, zone      DMA      0      1     64     93    105    135    139      0      1      1      0      1      0      0 
Node 0, zone      DMA      1      0     64     93    105    135    139      0      1      1      0      1      0      0 
Node 0, zone      DMA      1      0     64     93    105    135    139      0      1      1      0      1      0      0 
Node 0, zone      DMA      4      3     63     91    105    135    139      0      0      0      1      1      0      0 
Node 0, zone      DMA      3      3     63     91    105    135    139      0      0      0      1      1      0      0 
Node 0, zone      DMA      2      4     64     92    106    136    140      1      1      1      0      1      0      0 
Node 0, zone      DMA      1      4     64     92    106    136    140      1      1      1      0      1      0      0 
Node 0, zone      DMA      3      3     64     93    107    137    141      0      1      1      0      1      0      0 
Node 0, zone      DMA      2      3     64     93    107    137    141      0      1      1      0      1      0      0 
Node 0, zone      DMA      1      3     64     93    107    137    141      0      1      1      0      1      0      0 
Node 0, zone      DMA      2      4     65     94    108    138    142      1      0      1      0      1      0      0 
Node 0, zone      DMA      2      3     65     94    108    138    142      1      0      1      0      1      0      0 
Node 0, zone      DMA      3      2     65     94    108    138    142      1      0      1      0      1      0      0 
Node 0, zone      DMA      2      2     65     94    108    138    142      1      0      1      0      1      0      0 
Node 0, zone      DMA      3      3     66     95    109    139    143      2      1      0      0      1      0      0 
Node 0, zone      DMA      3      3     66     95    109    139    143      2      1      0      0      1      0      0 
Node 0, zone      DMA      1      3     66     95    109    139    143      2      1      0      0      1      0      0 
Node 0, zone      DMA      3      3     67     96    110    140    144      1      1      0      0      1      0      0 
Node 0, zone      DMA      2      3     67     96    110    140    144      1      1      0      0      1      0      0 
Node 0, zone      DMA      2      4     69     98    112    142    146      1      0      0      0      1      0      0 
Node 0, zone      DMA      2      4     68     97    111    141    145      2      0      0      0      1      0      0 
Node 0, zone      DMA      2      3     68     97    111    141    145      2      0      0      0      1      0      0 
Node 0, zone      DMA      3      2     68     98    112    142    146      1      0      0      0      1      0      0 
Node 0, zone      DMA      2      2     68     98    112    142    146      1      0      0      0      1      0      0 
Node 0, zone      DMA      2      3     70    100    114    144    148      1      1      1      1      0      0      0 
Node 0, zone      DMA      3      2     69     99    113    143    147      2      1      1      1      0      0      0 
Node 0, zone      DMA      4      3     70    100    114    144    148      1      1      1      1      0      0      0 
Node 0, zone      DMA      4      4     71    101    115    145    149      2      2      0      1      0      0      0 
Node 0, zone      DMA      3      4     71    101    115    145    149      2      2      0      1      0      0      0 
Node 0, zone      DMA      1      4     71    101    115    145    149      2      2      0      1      0      0      0 
Node 0, zone      DMA      2      3     71    101    115    145    149      2      2      0      1      0      0      0 
Node 0, zone      DMA      2      4     72    102    116    146    150      1      2      0      1      0      0      0 
Node 0, zone      DMA      1      4     73    103    117    147    151      0      2      0      1      0      0      0 
Node 0, zone      DMA      3      2     72    102    116    146    150      1      2      0      1      0      0      0 
Node 0, zone      DMA      3      2     73    103    117    147    151      2      1      0      1      0      0      0 
Node 0, zone      DMA      1      2     72    102    116    146    150      1      2      0      1      0      0      0 
Node 0, zone      DMA      2      3     73    103    117    147    151      2      1      0      1      0      0      0 
Node 0, zone      DMA      1      3     73    103    117    147    151      2      1      0      1      0      0      0 
Node 0, zone      DMA      3      3     74    104    118    148    152      1      1      0      1      0      0      0 
Node 0, zone      DMA      3      3     74    104    118    148    152      1      1      0      1      0      0      0 
Node 0, zone      DMA      3      2     74    104    118    148    152      1      1      0      1      0      0      0 
Node 0, zone      DMA      2      2     74    104    118    148    152      1      1      0      1      0      0      0 
Node 0, zone      DMA      2      2     74    104    118    148    152      1      1      0      1      0      0      0 
Node 0, zone      DMA      2      3     75    105    119    149    153      2      0      0      1      0      0      0 
Node 0, zone      DMA      1      3     76    106    120    150    154      1      0      0      1      0      0      0 
Node 0, zone      DMA      3      3     76    106    120    150    154      1      0      0      1      0      0      0 
Node 0, zone      DMA      2      3     76    106    120    150    154      1      0      0      1      0      0      0 
Node 0, zone      DMA      3      2     76    106    120    150    154      1      0      0      1      0      0      0 
Node 0, zone      DMA      2      2     76    106    120    150    154      1      0      0      1      0      0      0 
Node 0, zone      DMA      1      2     76    106    120    150    154      1      0      0      1      0      0      0 
Node 0, zone      DMA      2      3     77    107    121    151    155      2      1      1      0      0      0      0 
Node 0, zone      DMA      1      3     77    107    121    151    155      2      1      1      0      0      0      0 
Node 0, zone      DMA      2      4     78    108    122    152    156      1      1      1      0      0      0      0 
Node 0, zone      DMA      1      4     78    108    122    152    156      1      1      1      0      0      0      0 
Node 0, zone      DMA      1      0     80    110    123    153    157      0      0      1      0      0      0      0 
Node 0, zone      DMA      1      0     80    112    124    154    158      1      1      0      0      0      0      0 
Node 0, zone      DMA      2      1     81    113    125    155    159      0      1      0      0      0      0      0 
Node 0, zone      DMA     78     59    129    138    141    157    160      1      0      0      0      0      0      0 
Node 0, zone      DMA     66     57    126    139    140    156    159      0      1      0      0      0      0      0 
Node 0, zone      DMA     64     57    126    139    140    156    159      0      1      0      0      0      0      0 
Node 0, zone      DMA     63     57    126    139    140    156    159      0      1      0      0      0      0      0 
Node 0, zone      DMA     62     57    126    139    140    156    159      0      1      0      0      0      0      0 
Node 0, zone      DMA     60     57    124    138    139    155    158      1      1      0      0      0      0      0 
Node 0, zone      DMA     59     58    124    138    139    155    158      1      1      0      0      0      0      0 
Node 0, zone      DMA     57     57    125    139    140    156    159      0      1      0      0      0      0      0 
Node 0, zone      DMA     57     57    126    139    140    156    159      0      1      0      0      0      0      0 
Node 0, zone      DMA     55     57    126    139    140    156    159      0      1      0      0      0      0      0 
Node 0, zone      DMA     55     57    124    138    139    155    158      1      1      0      0      0      0      0 
Node 0, zone      DMA     55     59    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     55     60    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     54     59    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     51     59    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     51     59    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     47     59    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     47     59    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     46     60    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     44     59    124    136    139    155    158      1      0      1      0      0      0      0 
Node 0, zone      DMA     44     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     43     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     42     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     41     60    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     40     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     39     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     38     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     36     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     34     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     34     60    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     32     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     31     59    124    137    140    156    159      0      0      1      0      0      0      0 
Node 0, zone      DMA     31     59    125    138    141    157    160      1      1      0      0      0      0      0 
Node 0, zone      DMA     17     60    125    138    141    157    160      1      1      0      0      0      0      0 
Node 0, zone      DMA     24     96    127    158    144    160    160      1      0      0      0      0      0      0 
Node 0, zone      DMA      2     84    128    158    144    160    160      1      0      0      0      0      0      0 
Node 0, zone      DMA      0     95    128    157    144    158    161      1      0      0      0      0      0      0 
Node 0, zone      DMA      2     91    128    157    144    158    161      1      0      0      0      0      0      0 
Node 0, zone      DMA      7     95    128    155    144    158    161      3      0      0      0      0      0      0 
Node 0, zone      DMA     15     91    129    157    144    158    161      1      0      0      0      0      0      0 
Node 0, zone      DMA      3     88    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      2     89    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      3     87    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      2     88    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      2     87    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      3     86    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      3     86    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      4     84    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      3     85    128    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      2     84    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      3     83    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      4     82    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      4     81    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      4     81    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      3     80    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      2     80    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      3     79    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      2     79    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      1     79    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      3     77    127    154    143    157    160      2      1      0      0      0      0      0 
Node 0, zone      DMA      2     78    127    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      6     84    127    156    145    159    162      0      1      0      0      0      0      0 
Node 0, zone      DMA     22     83    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      4     83    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      3     80    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      1     82    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      2     76    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      2     71    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      4     67    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      4     63    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      3     60    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA     17     78    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA     20     82    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      1     80    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA     29     78    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      0     76    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      1     67    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      9     82    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      2     75    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      1     70    127    156    145    159    162      2      0      0      0      0      0      0 
Node 0, zone      DMA      0     79    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      1     71    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      3     61    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      2     59    126    155    144    158    161      1      1      0      0      0      0      0 
Node 0, zone      DMA      7     78    126    156    145    159    162      0      1      0      0      0      0      0 
Node 0, zone      DMA      1     70    126    156    145    159    162      0      1      0      0      0      0      0 
Node 0, zone      DMA     13     80    125    155    145    159    162      0      1      0      0      0      0      0 
Node 0, zone      DMA      1     75    125    155    145    159    162      0      1      0      0      0      0      0 
Node 0, zone      DMA      2     71    125    155    145    159    162      0      1      0      0      0      0      0 
Node 0, zone      DMA     15     82    125    155    145    159    162      0      1      0      0      0      0      0 
Node 0, zone      DMA      2     74    127    156    146    160    163      1      0      0      0      0      0      0 
Node 0, zone      DMA      1     71    125    156    146    160    163      1      0      0      0      0      0      0 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: alloc_pages_exact() triggering memory fragmentation on nommu?
  2016-09-01 13:02 alloc_pages_exact() triggering memory fragmentation on nommu? Nikita Yushchenko
@ 2016-09-02 10:10 ` Nikita Yushchenko
  0 siblings, 0 replies; 2+ messages in thread
From: Nikita Yushchenko @ 2016-09-02 10:10 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alexey Maximov

> I'm having a guess that this can be caused by use of
> alloc_pages_exact() for NoMMU private anonymous mappings.
> 
> This routine causes "tail" of allocation to be returned back
> to allocator... and inserted at top of free list. Later, when
> whatever in the system makes a trivial order-0 allocation, these
> just-freed tails immediately get used (because free pages are
> inserted at end of free lists... and new pages are allocated
> from either beginning or end of free list, depending on 'cold'
> parameter).  At a glance, this should have a net effect of much
> increased probability of "tail" of large allocation get used
> as a small allocation, and thus inability to rebuild a large free
> block at time when large allocation is freed.
> 
> Is there any protection against this effect in the allocator
> of current kernels? (kernel of system in question is somewhat
> outdated)

Just a small followup to whoever may be interested.

The guess was correct.

In old 3.0.8 kernel running on system in question, do_mmap_private() in
mm/nommu.c did not yet use alloc_pages_exact() but instead had it's own
implementation of the same logic.  And there was a tunable
'nr_trim_pages' that could alter it. In particular setting that tunable
to 0 effectively disabled any freeing of tails.

We tried to set nr_trim_pages=0 and fragmentation issue went away.


Nikita

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-09-02 10:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-01 13:02 alloc_pages_exact() triggering memory fragmentation on nommu? Nikita Yushchenko
2016-09-02 10:10 ` Nikita Yushchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).