0 10240 4 4 rw--- [ anon ]
92b38000 4 0 0 ----- [ anon ]
92b39000 10240 4 4 rw--- [ anon ]
93539000 4 0 0 ----- [ anon ]
9353a000 10240 4 4 rw--- [ anon ]
93f3a000 4 0 0 ----- [ anon ]
93f3b000 10240 4 4 rw--- [ anon ]
9493b000 4 0 0 ----- [ anon ]
9493c000 10240 4 4 rw--- [ anon ]
9533c000 4 0 0 ----- [ anon ]
9533d000 10240 4 4 rw--- [ anon ]
95d3d000 4 0 0 ----- [ anon ]
95d3e000 10240 8 8 rw--- [ anon ]
9673e000 4 0 0 ----- [ anon ]
9673f000 133548 19940 19940 rw--- [ anon ]
9e9ab000 407108 406096 406096 rw--- [ anon ]
b774b000 4 4 4 rw--- [ anon ]
bfc28000 84 56 56 rw--- [ stack ]
-------- ------- ------- ------- -------
total kB 752740 - - -
?
上面字段的含义:
?
EXTENDED AND DEVICE FORMAT FIELDS
Address: start address of map
Kbytes: size of map in kilobytes
RSS: resident set size in kilobytes
Dirty: dirty pages (both shared and private) in kilobytes
Mode: permissions on map: read, write, execute, shared, private (copy on write)
Mapping: file backing the map, or ’[ anon ]’ for allocated memory, or ’[ stack ]’ for the program stack
Offset: offset into the file
Device: device name (major:minor)
?
?
Mapping 字段说明是通过文件map使用的内存,还是[ anon ] 实际分配的内存,还是[ stack ] 栈使用的内存。
?
最后一行的 total KB 752740 的结果 和上面一条命令中 VSZ: 752744(虚拟内存) 是一致的。
?
5. 内存的调优
?
上面我们说到内存的瓶颈,主要看 swap out, page out, major page fault. 它们会极大的影响性能,特别是swap out. 所以内存调优也就是减少和防止它们的出现。
?
1)使用 hugepage 可以避免swap out; 但是 huagepage也是有代价的(导致page争用加剧),一定要事先测试;
?
2)修改 vm.swapingness, 优先flush disk cache,尽量减少page out 和 swap out; 但是flush disk cache又可能会导致 major page fault的产生;
?
3)disk cache刷新到磁盘有两个内核参数调节:vm.dirty_background_ratio=10; 默认值为10,表示disk cache中的脏页数量达到10%时,pdflush内核
?
线程会被调用,异步刷新disk cache; vm.dirty_ratio=20; 默认值20,表示disk cache中的脏页数量达到20%时,会进行同步的disk cache刷新,从而
?
会阻塞系统中应用进程的IO操作!我们可以调低vm.dirty_background_ratio来降低disk cache对mysql使用内存的影响,但是可能会增加磁盘IO;
?
4)加内存;