<font size=1 face="Segoe UI">Just wanted to mention that I printed out
the addresses being returned from jemalloc() and those addresses fit within
the range of the smaps in question.  So I'm certain the smaps with
large Private_Clean bytes belongs to jemalloc.</font>
<br>
<br><font size=1 face="Segoe UI">Questions:</font>
<br>
<br><font size=1 face="Segoe UI">1) Why does jemalloc have smaps with such
large Private_Clean size?  I'm actually surprised jemalloc has such
large smaps in general.  I would expect a bunch of smaller smaps that
match the configured chunk size.</font>
<br>
<br><font size=1 face="Segoe UI">2) Will the Linux kernel ever reclaim
private clean pages, or at least move them out of physical memory?  Eventually
we see RSS for several of our processes (that use jemalloc) grow beyond
what's expected and the OOM killer in the kernel takes out our process(es).</font>
<br>
<br><font size=1 face="Segoe UI">3) Are there any configurations that can
be done to influence the handling of private clean pages?  Either
jemalloc or Linux tuning.</font>
<br>
<br><font size=1 face="Segoe UI">        thx
again !</font>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<table width=100% style="border-collapse:collapse;">
<tr valign=top height=8>
<td width=96 style="border-style:solid;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;"><font size=1 color=#5f5f5f face="sans-serif">From:</font>
<td style="border-style:solid;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;"><font size=1 face="sans-serif">Kurtis
Martin/Raleigh/IBM</font>
<tr valign=top height=8>
<td width=96 style="border-style:solid;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;"><font size=1 color=#5f5f5f face="sans-serif">To:</font>
<td style="border-style:solid;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;"><font size=1 face="sans-serif">jemalloc-discuss@canonware.com,
</font>
<tr valign=top height=8>
<td width=96 style="border-style:solid;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;"><font size=1 color=#5f5f5f face="sans-serif">Date:</font>
<td style="border-style:solid;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;"><font size=1 face="sans-serif">05/29/2013
04:52 PM</font>
<tr valign=top height=8>
<td width=96 style="border-style:solid;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;"><font size=1 color=#5f5f5f face="sans-serif">Subject:</font>
<td style="border-style:solid;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;"><font size=1 face="sans-serif">High
amount of private clean data in smaps</font></table>
<br>
<hr noshade>
<br>
<br><font size=1 face="Segoe UI">We have a java application which has a
native component written in C, that makes use of JNI to manage several
of our objects that we directly allocate via jemalloc.  One of the
goals for our C code is to not allow our processes RSS size to grow beyond
a certain point.  To do this our app monitors jemallocs stats.cactive,
when it sees that cactive reach a certain point we write certain some of
our objects to disk then we free the allocated memory.  In this case,
the objects that we are freeing are 4K and above, so when we free the pages
holding these objects should no longer be active.  That part seems
to be working.</font>
<br>
<br><font size=1 face="Segoe UI">After several hours of running our application
at full load, we start to see our RSS go beyond what is expected.  This
unexpected growth seems to happen faster for some instances of our application
vs others.  I compared the /proc smaps file between instances of our
app that had a high RSS to those with expected RSS.  In both cases
smap shows a really large map that I think belongs to jemalloc.  I
believe it belongs to jemalloc, because if it didn't the sum of jemallocs
active size + the RSS size of this map goes well beyond our processes overall
RSS size.  </font>
<br>
<br><font size=1 face="Segoe UI">The thing that is really strange about
this mmap is that it's Private_Clean sizes is really high, e.g. 1.4 GBs.
 I don't know much about private clean pages, other than what a few
google searchs told me about them being pages that have not been modified
since they were mapped.  I'm hopeful that you can tell me more about
private clean pages and if/why jemalloc would have maps with such high
private clean pages.</font>
<br>
<br><font size=1 face="Segoe UI">Here's one such map from my smaps file
and the jemalloc stats around the same time.  At this time /proc status
showed our VmRSS size was 10440804 kB:</font>
<br>
<br><font size=1 face="Segoe UI">7f41dc200000-7f437a400000 rw-p 00000000
00:00 0 </font>
<br><font size=1 face="Segoe UI">Size:          
 6785024 kB</font>
<br><font size=1 face="Segoe UI">Rss:          
  4037056 kB</font>
<br><font size=1 face="Segoe UI">Pss:          
  4037056 kB</font>
<br><font size=1 face="Segoe UI">Shared_Clean:        
 0 kB</font>
<br><font size=1 face="Segoe UI">Shared_Dirty:        
 0 kB</font>
<br><font size=1 face="Segoe UI">Private_Clean:   1499364 kB</font>
<br><font size=1 face="Segoe UI">Private_Dirty:   2537692 kB</font>
<br><font size=1 face="Segoe UI">Referenced:      2536428
kB</font>
<br><font size=1 face="Segoe UI">Swap:          
       0 kB</font>
<br><font size=1 face="Segoe UI">KernelPageSize:        4
kB</font>
<br><font size=1 face="Segoe UI">MMUPageSize:        
  4 kB</font>
<br>
<br><font size=1 face="Segoe UI">Jemalloc stats:</font>
<br>
<br><font size=1 face="Segoe UI">___ Begin jemalloc statistics ___</font>
<br><font size=1 face="Segoe UI">Version: 3.3.1-0-g9ef9d9e8c271cdf14f664b871a8f98c827714784</font>
<br><font size=1 face="Segoe UI">Assertions disabled</font>
<br><font size=1 face="Segoe UI">Run-time option settings:</font>
<br><font size=1 face="Segoe UI">  opt.abort: false</font>
<br><font size=1 face="Segoe UI">  opt.lg_chunk: 21</font>
<br><font size=1 face="Segoe UI">  opt.dss: "secondary"</font>
<br><font size=1 face="Segoe UI">  opt.narenas: 96</font>
<br><font size=1 face="Segoe UI">  opt.lg_dirty_mult: 6</font>
<br><font size=1 face="Segoe UI">  opt.stats_print: false</font>
<br><font size=1 face="Segoe UI">  opt.junk: false</font>
<br><font size=1 face="Segoe UI">  opt.quarantine: 0</font>
<br><font size=1 face="Segoe UI">  opt.redzone: false</font>
<br><font size=1 face="Segoe UI">  opt.zero: false</font>
<br><font size=1 face="Segoe UI">CPUs: 24</font>
<br><font size=1 face="Segoe UI">Arenas: 96</font>
<br><font size=1 face="Segoe UI">Pointer size: 8</font>
<br><font size=1 face="Segoe UI">Quantum size: 16</font>
<br><font size=1 face="Segoe UI">Page size: 4096</font>
<br><font size=1 face="Segoe UI">Min active:dirty page ratio per arena:
64:1</font>
<br><font size=1 face="Segoe UI">Chunk size: 2097152 (2^21)</font>
<br><font size=1 face="Segoe UI">Allocated: 7350097392, active: 7438028800,
mapped: 13549699072</font>
<br><font size=1 face="Segoe UI">Current active ceiling: 7486832640</font>
<br><font size=1 face="Segoe UI">chunks: nchunks   highchunks  
 curchunks</font>
<br><font size=1 face="Segoe UI">           6927
        6622         6461</font>
<br><font size=1 face="Segoe UI">huge: nmalloc      ndalloc
   allocated</font>
<br><font size=1 face="Segoe UI">           
0            0        
   0</font>
<br>
<br><font size=1 face="Segoe UI">Merged arenas stats:</font>
<br><font size=1 face="Segoe UI">assigned threads: 93</font>
<br><font size=1 face="Segoe UI">dss allocation precedence: N/A</font>
<br><font size=1 face="Segoe UI">dirty pages: 1815925:2559 active:dirty,
10091062 sweeps, 30421949 madvises, 135567186 purged</font>
<br><font size=1 face="Segoe UI">           
allocated      nmalloc      ndalloc  
 nrequests</font>
<br><font size=1 face="Segoe UI">small:     1072125424  
 106372291     99191380    106372291</font>
<br><font size=1 face="Segoe UI">large:     6277971968  
  51052119     50542543     51052119</font>
<br><font size=1 face="Segoe UI">total:     7350097392  
 157424410    149733923    157424410</font>
<br><font size=1 face="Segoe UI">active:    7438028800</font>
<br><font size=1 face="Segoe UI">mapped:   13545504768</font>
<br><font size=1 face="Segoe UI">bins:     bin  size regs
pgs    allocated      nmalloc      ndalloc
     newruns       reruns      curruns</font>
<br><font size=1 face="Segoe UI">           
0     8  501   1          128
          30          
14           11          
 0            7</font>
<br><font size=1 face="Segoe UI">           
1    16  252   1          672
          42          
 0           11        
   0           11</font>
<br><font size=1 face="Segoe UI">           
2    32  126   1          
64            2        
   0            1    
       0            1</font>
<br><font size=1 face="Segoe UI">           
3    48   84   1    114892800    
16709174     14315574        43714  
   1159683        30488</font>
<br><font size=1 face="Segoe UI">           
4    64   63   1       851264  
    167481       154180        
3075         1219          235</font>
<br><font size=1 face="Segoe UI">           
5    80   50   1    190426160    
36559908     34179581       115227    
 4236615        50957</font>
<br><font size=1 face="Segoe UI">           
6    96   84   2         2112  
        30            8
          11          
 0            7</font>
<br><font size=1 face="Segoe UI">[7..10]</font>
<br><font size=1 face="Segoe UI">           11
  224   72   4          224  
         1          
 0            1      
     0            1</font>
<br><font size=1 face="Segoe UI">[12]</font>
<br><font size=1 face="Segoe UI">           13
  320   63   5    765952000     52935623
    50542023        64485     14712013
       40300</font>
<br><font size=1 face="Segoe UI">[14..27]</font>
<br><font size=1 face="Segoe UI">large:   size pages    
 nmalloc      ndalloc    nrequests  
   curruns</font>
<br><font size=1 face="Segoe UI">[1]</font>
<br><font size=1 face="Segoe UI">         8192
    2           30      
     8           30    
      22</font>
<br><font size=1 face="Segoe UI">        12288  
  3     51050157     50542023     51050157
      508134</font>
<br><font size=1 face="Segoe UI">        16384  
  4         1920          512
        1920         1408</font>
<br><font size=1 face="Segoe UI">[13]</font>
<br><font size=1 face="Segoe UI">        73728  
 18            1      
     0            1  
         1</font>
<br><font size=1 face="Segoe UI">[23]</font>
<br><font size=1 face="Segoe UI">       172032  
 42            1      
     0            1  
         1</font>
<br><font size=1 face="Segoe UI">[214]</font>
<br><font size=1 face="Segoe UI">      1052672   257
          10          
 0           10        
  10</font>
<br><font size=1 face="Segoe UI">[252]</font>
<br><font size=1 face="Segoe UI">--- End jemalloc statistics ---</font>
<br>
<br>
<br><font size=1 face="Segoe UI">Any help is greatly appreciated</font>
<br><font size=1 face="Segoe UI">.</font>
<br>
<br>
<br>