在Centos 6.3上,为什么有几种交换测量方法会返回不同的结果?


1

我有一个生产系统运行centos 6.3,96 Gb RAM和2 Gb交换。目的是盒子上有足够的RAM,以便不应该交换任何进程。

在过去一周左右,使用的交换空间量已增加到100%,如/ proc / meminfo SwapTotal和SwapFree所报告的那样。

但是,顶部和脚本报告的进程使用的交换量https://stackoverflow.com/questions/479953/how-to-find-out-which-processes-are-swapping-in-linux仅约26 Mb。

系统似乎没有交换,所以我不确定如何认真对待/ proc / meminfo SwapFree值。

为什么/ proc / meminfo报告和每个进程交换之间存在这种差异?

我怎样才能找出哪个进程负责/ proc / meminfo认为所有交换都被使用(除了依次杀死每个进程并查看SwapFree何时增加,这对于生产来说不是一个好主意系统)?

更新:这是免费的当前输出:

             total       used       free     shared    buffers     cached
Mem:      99052152   98330684     721468          0     577400   82224692
-/+ buffers/cache:   15528592   83523560
Swap:      2097144     959580    1137564

和cat / proc / meminfo:

MemTotal:       99052152 kB
MemFree:          731560 kB
Buffers:          577400 kB
Cached:         82222116 kB
SwapCached:       174456 kB
Active:         69762456 kB
Inactive:       25778300 kB
Active(anon):   53783608 kB
Inactive(anon):  8973048 kB
Active(file):   15978848 kB
Inactive(file): 16805252 kB
Unevictable:       31424 kB
Mlocked:           31424 kB
SwapTotal:       2097144 kB
SwapFree:        1137556 kB
Dirty:              2076 kB
Writeback:             0 kB
AnonPages:      12598632 kB
Mapped:         43958780 kB
Shmem:          50010060 kB
Slab:            1390148 kB
SReclaimable:    1308692 kB
SUnreclaim:        81456 kB
KernelStack:        6400 kB
PageTables:       171412 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    51623220 kB
Committed_AS:   68521168 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      478428 kB
VmallocChunk:   34307842136 kB
HardwareCorrupted:     0 kB
AnonHugePages:  11145216 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        5604 kB
DirectMap2M:     2078720 kB
DirectMap1G:    98566144 kB

记录的总交换使用量/proc/*/status VmSwap为11832 Kb。(按计算awk '/^VmSwap/ {t+=$2} END {print t" kB"}' /proc/*/status


你可以在帖子中添加meminfo的所有输出,以及vmstat的输出,甚至可以运行Collectl
harrymc 2013年

在一周内更换最少使用的2GB应用程序RAM不会破坏性能。交换它会留出更多的缓存空间,因此可以根据您的工作量获胜。输出是什么cat /proc/sys/vm/swappiness,如果你希望它更少,它应该低于默认值60。有人建议值为10.
Brian

swappiness目前设置为60,我同意减少它可能会有所帮助,但我的问题是如何找出使用交换空间的内容,而不考虑/ proc / * / status VmSwap中的值。
克里斯卡

1
我不得不问:你为什么不完全禁用掉掉?
Gabe 2013年

1
看看这个stackexchange答案是否不会对你的数字有所启发。
harrymc 2013年

Answers:


0

每个进程中不会出现的一个使用交换源是SwapCached页面。

SwapCached: 174456 kB行是swap和ram中的页面。

当页面被发送到交换然后再次需要但从未被修改时会发生这种情况。磁盘副本仍然有效,因此保留。它实际上可以再次交换到磁盘而不会导致写入磁盘。


即使是这种情况,仍有近1 Gb的交换使用量未计入。
克里斯卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.