linux 8g内存 swap,linux可用内存足够为什么还用swap
討論這個(gè)問(wèn)題前,我們先來(lái)看當(dāng)前系統(tǒng)狀態(tài):
1[root@localhost ~]# free -m
2 ? ? ? ? ? ? ?total ? ? ? ?used ? ? ? ?free ? ? ?shared ?buff/cache ? available
3Mem: ? ? ? ? ?31768 ? ? ? ?9809 ? ? ? ? 363 ? ? ? ?9601 ? ? ? 21595 ? ? ? 11838
4Swap: ? ? ? ? ?8191 ? ? ? ?8191 ? ? ? ? ? 0
為什么?buffer/cache?會(huì)占用這么多的內(nèi)存?
buffer/cache使用過(guò)高通常是程序頻繁存取文件后,物理內(nèi)存會(huì)很快被用光。
當(dāng)程序結(jié)束后,內(nèi)存不會(huì)被正常釋放,而是成為cache狀態(tài).
通常我們不需要手工釋放swap,Linux會(huì)自動(dòng)管理.
如果非要釋放,請(qǐng)繼續(xù)看.
如何釋放占用的swap呢?
1## 將內(nèi)存緩沖區(qū)數(shù)據(jù)立刻同步到磁盤(pán)
2[root@localhost ~]# sync
3## 關(guān)閉所有的swap
4[root@localhost ~]# swapoff -a
5## 啟用所有swap
6[root@localhost ~]# swapon -a
7[root@localhost ~]# free -m
8 ? ? ? ? ? ? ?total ? ? ? ?used ? ? ? ?free ? ? ?shared ?buff/cache ? available
9Mem: ? ? ? ? ?31768 ? ? ? 10853 ? ? ? ? 217 ? ? ? 16740 ? ? ? 20698 ? ? ? ?3658
10Swap: ? ? ? ? ?8191 ? ? ? ? ? 0 ? ? ? ?8191
那么回到最初的問(wèn)題:
linux可用內(nèi)存足夠?yàn)槭裁催€用swap?
上面可以看到服務(wù)器共有32G內(nèi)存,其中buff/cache占用了21G+.
明明還有可以將近12G的內(nèi)存可以使用.但系統(tǒng)卻偏偏占用完了swap的8G內(nèi)存.
可知系統(tǒng)并沒(méi)有自動(dòng)釋放buff/cache最大化利用內(nèi)存.
原因:
內(nèi)核參數(shù) swappiness 的值的大小,決定著linux何時(shí)開(kāi)始使用swap。
swappiness=0?時(shí)表示盡最大可能的使用物理內(nèi)存以避免換入到swap.
swappiness=100?時(shí)候表示最大限度使用swap分區(qū),并且把內(nèi)存上的數(shù)據(jù)及時(shí)的換出到swap空間里面.
此值linux的基本默認(rèn)設(shè)置為60,不同發(fā)行版可能略微不同.
查看命令具體如下:
1[root@localhost ~]# cat /proc/sys/vm/swappiness
260
什么意思呢?
就是說(shuō),你的內(nèi)存在使用率到40%(100%-60%)的時(shí)候,系統(tǒng)就會(huì)開(kāi)始出現(xiàn)有交換分區(qū)的使用。
大家知道,內(nèi)存的速度會(huì)比磁盤(pán)快很多,這樣子會(huì)加大系統(tǒng)io,同時(shí)造的成大量頁(yè)的換進(jìn)換出,嚴(yán)重影響系統(tǒng)的性能,所以我們?cè)诓僮飨到y(tǒng)層面,要盡可能使用內(nèi)存,對(duì)該參數(shù)進(jìn)行調(diào)整。
調(diào)整值
1[root@localhost ~]# sysctl vm.swappiness=10
2vm.swappiness = 10
3[root@localhost ~]# cat /proc/sys/vm/swappiness
410
重啟依舊生效,需要在/etc/sysctl.conf修改:
1[root@localhost ~]# cat /etc/sysctl.conf
2vm.swappiness = 10
3[root@localhost ~]# sysctl -p
題外話
通常我們還經(jīng)常看到shared占用大量?jī)?nèi)存,shared表示共享內(nèi)存的占用,
起決定參數(shù)的兩個(gè)分別是:
1# 定義單個(gè)共享內(nèi)存段的最大值
2kernel.shmmax = 68719476736
3
4# 定義共享內(nèi)存頁(yè)數(shù)
5kernel.shmall = 4194304 ?##(16G)
當(dāng)前系統(tǒng)內(nèi)存頁(yè)大小查看:
1[root@localhost ~]# getconf ?PAGESIZE
24096
當(dāng)前系統(tǒng)共享內(nèi)存段大小(bytes):
1[root@localhost ~]# cat /proc/sys/kernel/shmmax
216777216000
共享內(nèi)存段個(gè)數(shù)查看:
1[root@localhost ~]# ipcs -m
內(nèi)存頁(yè)和內(nèi)存段是兩種不同的內(nèi)存管理方式,詳細(xì)了解可以自行谷歌.
學(xué)習(xí)安排上!
總結(jié)
以上是生活随笔為你收集整理的linux 8g内存 swap,linux可用内存足够为什么还用swap的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux如何用rz上传文件,Linux
- 下一篇: linux内核路由反向检查,反向路径过滤