最近经常报内存超过80%的阀值.

统计了下内存实际使用只有1.6G,希望能帮我们分析下为什么内存的使用率显示使用了3178M.

 



-bash-3.2$ ps -eo 'pid,rss' --sort=-rss 
 
 
 

   (Not all processes could be identified, non-owned process info 
 
 
 

    will not be shown, you would have to be root to see it all.) 
 
 
 

     PID   RSS 
 
 
 

   20872 732320 
 
 
 

    5030 617408 
 
 
 

   15583 219672 
 
 
 

   15320 15940 
 
 
 

    9654 10088 
 
 
 

    1846  9100 
 
 
 

    8580  8748 
 
 
 

    9665  8588 
 
 
 

    3938  8304 
 
 
 

    2711  3996 
 
 
 

    8575  3276 
 
 
 

    7753  3260 
 
 
 

   19912  2464 
 
 
 

    2689  2140 
 
 
 

   14368  2036 
 
 
 

   28490  1968 
 
 
 

    2690  1800 
 
 
 

    7755  1748 
 
 
 

    7756  1568 
 
 
 

    2049  1548 
 
 
 

    2429  1480 
 
 
 

    1841  1304 
 
 
 

    2588  1304 
 
 
 

   23519  1212 
 
 
 

   23559  1176 
 
 
 

    2687  1052 
 
 
 

    8587  1048 
 
 
 

    8592  1040 
 
 
 

    2386   888 
 
 
 

    1897   864 
 
 
 

    8593   856 
 
 
 

    1833   808 
 
 
 

    8588   804 
 
 
 

    8594   740 
 
 
 

    8590   736 
 
 
 

   29128   672 
 
 
 

    2526   652 
 
 
 

       1   648 
 
 
 

    1842   648 
 
 
 

    1788   584 
 
 
 

    1946   572 
 
 
 

    1864   568 
 
 
 

    1856   556 
 
 
 

    1806   448 
 
 
 

    2558   416 
 
 
 

    2559   416 
 
 
 

    2562   416 
 
 
 

    2585   416 
 
 
 

    2586   416 
 
 
 

    2587   416 
 
 
 

     450   368 
 
 
 

    1791   332 
 
 
 

    2405   284 
 
 
 

       2     0 
 
 
 

       3     0 
 
 
 

       4     0 
 
 
 

       5     0 
 
 
 

       6     0 
 
 
 

       7     0 
 
 
 

       8     0 
 
 
 

       9     0 
 
 
 

      10     0 
 
 
 

      45     0 
 
 
 

      50     0 
 
 
 

      51     0 
 
 
 

      52     0 
 
 
 

      97     0 
 
 
 

      98     0 
 
 
 

     101     0 
 
 
 

     103     0 
 
 
 

     177     0 
 
 
 

     180     0 
 
 
 

     181     0 
 
 
 

     182     0 
 
 
 

     318     0 
 
 
 

     331     0 
 
 
 

     332     0 
 
 
 

     360     0 
 
 
 

     361     0 
 
 
 

     362     0 
 
 
 

     372     0 
 
 
 

     391     0 
 
 
 

     417     0 
 
 
 

    1339     0 
 
 
 

    1340     0 
 
 
 

    1341     0 
 
 
 

    1368     0 
 
 
 

    6460     0 
 
 
 

    6468     0



 



然后统计 rss列的内存总数是1,680M 远小于显示使用的3G.请问那部分内存被什么程序占用了?



可以安装工具atop,或者执行命令cat /proc/meminfo |grep -i slab看看slab占用的内存是否较多。

 

 

$sync
$sudo sysctl -w vm.drop_caches=3
$sudo sysctl -w vm.drop_caches=0 #recovery drop_caches

slab说明

http://www.bitscn.com/os/linux/201402/194938.html