swap -l 的输出和顶部显示的交换内存有什么区别?

swap -l 的输出和顶部显示的交换内存有什么区别?

swap -l我真的很困惑如何理解的输出swap -s以及命令反映的内存使用情况top

因此,我无法最终确定有多少交换,使用了多少物理内存,有多少可用,以及我是否必须向系统管理员提出内存添加请求?

以下是我的系统的输出:

$ swap -l
swapfile             dev  swaplo blocks   free
/dev/zvol/dsk/rpool/swap 181,1       8 33554424 **33554424**

$ swap -s
total: 23539804k bytes allocated + 1608016k reserved = **25147820k** used, **10397840k** available


$ prtconf |grep -i Memory
Memory size: 49144 Megabytes
$ top -d 2 -n 2
load averages:  1.36,  1.39,  1.40    19:07:42
120 processes: 118 sleeping, 1 stopped, 1 on cpu

Memory: 48G real, **1411M** free, 24G swap in use, **10G** swap free

以下是 uname 和 memstat 详细信息。

这是否意味着我们根本不应该研究 top ?并仅根据 memstat 报告内存使用情况?

为什么 swap -l 和 swap -s 没有类似的统计数据?

bash-3.2$ uname -a
SunOS l28sdp1a 5.10 Generic_150401-03 i86pc i386 i86pc

 =================Memstat======================
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    1602713              6260   13%
ZFS File Data             4345496             16974   35%
Anon                      4974599             19432   40%
Exec and libs               32588               127    0%
Page cache                 948627              3705    8%
Free (cachelist)              972                 3    0%
Free (freelist)            673589              2631    5%

Total                    12578584             49135
Physical                 12250367             47852

请帮助我理解。

答案1

由于标签是 Solaris,我假设您正在运行 Solaris。作为一名前 Solaris 管理员,我真的不喜欢安装 top,因为它在报告交换使用情况与内存使用情况时会产生误导。 Solaris 使用混合交换和内存的虚拟内存概念。尽管您有交换设备,但如果有足够的可用内存,则可能会在内存中分配交换设备。如果您确实想准确了解系统使用了多少交换空间,那将是一项耗时的工作。这可以通过在每个进程上使用 pmap -x 并检查交换部分来实现。

如果您在系统上运行单个应用程序,那么您的系统管理员应该能够执行 echo "::memstat"|mdb -l。这将提供当前的内存状态,我希望他们应该进行一些监控来检查内存。

如果您的应用程序不是服务器中唯一的应用程序,并且它在特定用户 ID 下运行,您可以执行 ps -u 来提供它的消耗量。

霍普这有帮助

相关内容