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 来提供它的消耗量。
霍普这有帮助