Solaris11:使用大量内存

Solaris11:使用大量内存

使用取自此的脚本地点

#!/usr/bin/ksh

# Available memory
memory=`prtconf | grep Memory | head -1 | awk 'BEGIN {FS=" "} {print $3}'`
gb_memory=`echo "scale=2; $memory/1024" | bc -l`

# Free memory
pagesize=`pagesize`
kb_pagesize=`echo "scale=2; $pagesize/1024" | bc -l`
sar_freemem=`sar -r 1 1 | tail -1 | awk 'BEGIN {FS=" "} {print $2}'`
gb_freemem=`echo "scale=2; $kb_pagesize*$sar_freemem/1024/1024" | bc -l`

# Used Memory
gb_usedmem=`echo "scale=2; $gb_memory-$gb_freemem" | bc -l`

# Conclusion
echo "Avai Mem: $gb_memory GB"
echo "Free Mem: $gb_freemem GB"
echo "Used Mem: $gb_usedmem GB"

我看到很多内存被使用

   Avai Mem: 7.25 GB
   Free Mem: .62 GB
   Used Mem: 6.63 GB

使用top命令我看到大多数“ram eat”进程使用144M的ram,但只有690M的ram是空闲的,这有点奇怪,即使计算其他rss进程我仍然不明白系统如何使用超过4GB的ram 。

last pid: 15109;  load avg:  0.08,  0.08,  0.07;  up 2+00:33:21                                                              15:25:40
88 processes: 87 sleeping, 1 on cpu
CPU states: 94.4% idle,  1.3% user,  4.3% kernel,  0.0% stolen,  0.0% swap
Kernel: 1031 ctxsw, 633 trap, 769 intr, 2053 syscall, 617 flt
Memory: 7430M phys mem, 690M free mem, 1024M total swap, 1024M free swap

   PID USERNAME NLWP PRI NICE  SIZE   RES STATE     TIME    CPU COMMAND
   879 root       17  59    0  209M  142M sleep     8:11  0.32% sstored
  1267 root       43  59    0  129M   30M sleep     0:04  0.01% fmd
 14774 root       64  59    0   90M   64M sleep     0:04  0.24% pkg.depotd
 14810 root       64  59    0   90M   63M sleep     0:04  0.25% pkg.depotd
 14792 root       64  59    0   87M   60M sleep     0:04  0.24% pkg.depotd
    15 root       36  59    0   80M   47M sleep     1:23  0.67% svc.configd
    13 root       14  59    0   39M 7272K sleep     0:07  0.01% svc.startd
  1448 root       12  59    0   28M 7152K sleep     0:14  0.01% sysstatd
  1483 _polkitd    6  59    0   25M  196K sleep     0:00  0.00% polkitd
  1465 pkg5srv    27  59    0   24M 2228K sleep     0:00  0.00% httpd
  4962 pkg5srv    27  59    0   24M 4672K sleep     0:00  0.00% httpd
  1461 pkg5srv    27  59    0   24M 4032K sleep     0:00  0.00% httpd
  1464 pkg5srv    27  59    0   24M 3516K sleep     0:00  0.00% httpd
  1032 webservd   27  59    0   24M 3668K sleep     0:00  0.00% httpd
  1045 webservd   27  59    0   24M 3484K sleep     0:00  0.00% httpd
  1041 webservd   27  59    0   24M 3480K sleep     0:00  0.00% httpd
  1458 pkg5srv    24  59    0   24M 4656K sleep     0:04  0.00% httpd
  1012 webservd   18  59    0   23M 7620K sleep     0:04  0.00% httpd
   280 root       11  59    0   23M 8360K sleep     0:00  0.00% rad
   658 root       31  59    0   23M 5168K sleep     0:07  0.04% nscd
   359 daemon      3  59    0   21M    4K sleep     0:00  0.00% colord
   560 netadm      8  59    0   18M 4352K sleep     0:02  0.00% nwamd
   838 root        3  59    0   18M 3064K sleep     0:00  0.00% zoneadmd
   338 root        7  59    0   17M   10M sleep     0:02  0.00% devfsadm
  4350 root        1  59    0   17M 4972K sleep     0:01  0.00% sendmail
  1469 root        3  59    0   16M 3776K sleep     0:00  0.00% accounts-daemon

ps=有一个区域处于活动状态,但是..未运行

答案1

正如 @Fox 在评论中指出的,ZFS 可能默认使用空闲内存来缓存 IO。有各种调整,但仅升级 Solaris 可能会有所帮助,因为它们添加了一些功能来提高 Solaris 11 中的 ZFS 性能。参考 MOS 文档:Oracle Solaris 11.x 中 ZFS 和应用程序之间的内存管理(文档 ID 1663862.1)获取一些信息和指导。

有关 Oracle 之外的一些 ZFS reco,请参考以下内容: https://constantin.glez.de/2010/04/28/ten-ways-to-easily-improve-oracle-solaris-zfs-filesystem-performance/#ssdread

此外,如果您在任何数据集上使用重复数据删除,它将使用相当多的内存。

相关内容