大家好,请教一个Linux的问题,linux版本为redhat6.7。
在服务上使用top命令,结果如下:
1 top - 11:13:07 up 313 days, 19:54, 2 users, load average: 17.95, 17.81, 17.37 2 Tasks: 1905 total, 30 running, 1874 sleeping, 0 stopped, 1 zombie 3 Cpu(s): 18.4%us, 18.3%sy, 0.0%ni, 63.2%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st 4 Mem: 99014552k total, 88627940k used, 10386612k free, 841636k buffers 5 Swap: 32767996k total, 111728k used, 32656268k free, 30725500k cached
在free下执行结果如下:
1 [oracle@dfssrv2 ~]$ free -m 2 total used free shared buffers cached 3 Mem: 96693 86919 9774 0 821 30044 4 -/+ buffers/cache: 56053 40640 5 Swap: 31999 109 31890
从2个结果上来看,内存一共有96GB,分配出去了86G(56GB已使用+30GB未使用),按照这个结果来看,实际上,可用内存应该大概还有40G。
我个人理解的swap区是:用来当内存使用的一块硬盘区,即在内存容量不够的时候,使用swap当内存使用。
那么问题来了,如果我服务器还有那么多的空闲内存(40GB),为什么还会使用到swap区?
是不是说,在某个时刻,我的内存使用量达到了100%, 然后去使用了109MB的swap分区?
会不会用到swap要看你的内核参数/proc/sys/vm/swappiness里的比例是多少,比如你有100g内存,但是你设置的参数是50,那么用到50g的时候就会开始使用swap了
看了你的答案,有点明白了,我看了我的服务器的参数,设置为了60:
1 [oracle@dfssrv2 ~]$ cat /proc/sys/vm/swappiness 2 60
swappiness=0 的时候表示最大限度使用物理内存,然后才是swap空间;swappiness=100 的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面
@nreg: ???
@北方姆Q: 补充一下