Solaris

Solaris11:使用大量記憶體

  • February 23, 2018

使用取自本網站的腳本

#!/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 命令我看到最“吃記憶體”的程序使用 144M 的記憶體,但只有 690M 的記憶體是免費的,這有點奇怪,即使計算其他 rss 程序我仍然不明白系統如何使用超過 4GB 的記憶體.

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=有一個區域處於活動狀態,但是..沒有執行

正如@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

此外,如果您在任何數據集上使用 dedup,它將使用大量記憶體。

引用自:https://unix.stackexchange.com/questions/426118