![-/+ 缓冲区/缓存和交换](https://linux22.com/image/85535/-%2F%2B%20%E7%BC%93%E5%86%B2%E5%8C%BA%2F%E7%BC%93%E5%AD%98%E5%92%8C%E4%BA%A4%E6%8D%A2.png)
什么时候应该开始使用交换空间?或者
我如何知道我的交换已被使用?至少在某些时候(如果不是总是),考虑到默认的交换性60
还,为什么确实free
提出省略缓冲区/缓存行,难道不应该考虑吗?我总是提到 justfree -got
的输出。
我的内存统计数据如下,根本没有看到交换被使用。缓冲区/缓存有什么关系吗?
-bash-3.2$ free -mt
total used free shared buffers cached
Mem: 64458 24419 40039 0 38 212
-/+ buffers/cache: 24167 40290
Swap: 16386 0 16386
Total: 80845 24419 56425
swappiness 值是默认值。
cat /proc/sys/vm/swappiness
60
需要知道这些,因为我遇到过以下情况全部我的 62Gigs RAM 已被使用。
请赐教。
答案1
我怎么知道我的交换已被使用?
根本没有见过交换被使用。
尝试创建内存压力以使 Linux 调出页面。在我的系统上交换也是 0。然后我运行stress --vm 30
.这是关于 stres 的帮助:
$ stress --help
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
....
-m, --vm N spawn N workers spinning on malloc()/free()
--vm-bytes B malloc B bytes per vm worker (default is 256MB)
--vm-stride B touch a byte every B bytes (default is 4096)
--vm-hang N sleep N secs before free (default none, 0 is inf)
--vm-keep redirty memory instead of freeing and reallocating
30 个实例strees
导致内存压力,Linux 开始换出页面,这一点从vmstat 1
.请参阅so
专栏:
man vmstat:
Swap
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
vmstat 报告:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
98 0 0
0 0 0 3355728 112016 2052000 0 0 0 0 287 335 3 1 96 0 0
30 0 0 358472 112016 2052000 0 0 0 0 1575 1012 7 74 19 0 0
14 33 141588 99032 60252 1578948 268 141764 404 142080 6896 3249 3 93 0 4 0
31 24 302632 98664 17208 1020240 8280 165008 8308 165236 5686 4114 5 76 0 20 0
11 22 494516 98732 4208 615496 3112 191952 11552 192060 5494 5199 2 64 1 33 0
并且使用的交换空间变得足够大:
total used free shared buffers cached
Mem: 7228 1411 5816 0 23 171
-/+ buffers/cache: 1217 6011
Swap: 4647 824 3823
Total: 11876 2236 9640