❶ linux Swap 绌洪棿绠$悊涓庝紭鍖栨寚鍗楋細浠庡熀纭浣跨敤鍒拌繃楂樺勭悊
Linux Swap绌洪棿绠$悊涓庝紭鍖栵細娣卞叆鐞嗚В涓庡疄鐢ㄧ瓥鐣
鍦↙inux鐨勪笘鐣岄噷锛孲wap绌洪棿鏄鍐呭瓨绠$悊鐨勭寷闂峰叧閿缁勪欢锛屽畠宸у欏湴鎵婕旂潃铏氭嫙鍐呭瓨鐨勮掕壊锛屽挨鍏跺湪鍐呭瓨绱у紶鏃讹紝鑳芥彁鍗囩郴缁熻祫婧愮殑鍒╃敤鐜囥傜劧鑰岋紝Swap绌洪棿骞堕潪鏃犻檺鍒剁殑榄旀硶锛屽叾浣跨敤涓嶅綋鍙鑳戒細瀵圭郴缁熸ц兘閫犳垚璐熼潰褰卞搷銆傛湰鏂囧皢甯︿綘鎺㈢储Swap绌洪棿鐨勫熀纭鍘熺悊锛屾暀浣犲備綍鐩戞帶銆佽剧疆鍜屼紭鍖栵紝浠ュ簲瀵筍wap浣跨敤杩囬珮鏃剁殑鎸戞垬銆
Swap绌洪棿鐨勪綔鐢ㄥ湪浜庯紝褰撶墿鐞哛AM锛圧AM锛変笉鍫閲嶈礋鏃讹紝浼氬皢鏆傛椂涓嶆椿璺冪殑鏁版嵁绉诲姩鑷崇‖鐩樹笂鐨勯勭暀绌洪棿銆傝繖鐪嬩技绠鍗曪紝瀹炲垯鍏充箮绯荤粺鐨勭伒娲绘т笌绋冲畾鎬с備笉杩囷紝纭鐩樿诲啓閫熷害杩滀綆浜嶳AM锛岄戠箒鐨凷wap鎿嶄綔鍙鑳藉艰嚧鎬ц兘涓嬮檷锛屽洜姝わ紝鍚堢悊閰嶇疆Swap绌洪棿鑷冲叧閲嶈併
棣栧厛锛屼娇鐢╢ree -m鍛戒护锛屼綘鍙浠ョ洿瑙傚湴鐪嬪埌鍐呭瓨鍜孲wap鐨勪娇閫楀巻鐢ㄦ儏鍐点傞氳繃swapon --show鍛戒护锛屽彲浠ヨ︾粏浜嗚ВSwap鐨勫垎鍖烘垨鏂囦欢鐘舵併
锛1锛夊垱寤篠wap鏂囦欢锛氫娇鐢╯udo fallocate鍒涘缓锛屼緥濡傚垱寤4GB鐨勬枃浠秙udo fallocate -l 4G /swapfile銆
锛2锛夋潈闄愯剧疆锛氱‘淇濆彧鏈塺oot鏉冮檺鍙璁块棶锛屽俿udo chmod 600 /swapfile銆
锛3锛夋牸寮忓寲涓篠wap锛氱敤mkswap鍛戒护鏍煎紡鍖栵紝濡俿udo mkswap /swapfile銆
锛4锛夊惎鐢ㄥ苟鎸佷箙鍖栵細涓存椂鍚鐢╯wapon锛屾案涔呯敓鏁堝垯闇娣诲姞鍒/etc/fstab銆
Swappiness鍙傛暟褰卞搷鍐呭瓨鍒癝wap鐨勫垏鎹锛岃皟鏁村畠鑳戒紭鍖栧唴瀛樹娇鐢ㄣ傚厛鏌ョ湅褰撳墠鍊硷紝涓存椂鏀硅撅紝鐒跺悗姘镐箙淇鏀归厤缃銆
灏界Swap鍙浠ヨˉ鍏匯AM锛屼絾纭鐩樻ц兘褰卞搷鏄捐憲銆傚敖閲忎娇鐢⊿SD浠ユ彁鍗嘢wap鎿嶄綔閫熷害锛岄伩鍏嶆ц兘鐡堕堛
Swap绌洪棿鍙鑳藉寘鍚鏁忔劅鏁版嵁锛岃板緱鍦ㄤ笉闇瑕佹椂浣跨敤swapoff鍛戒护鍏抽棴锛屽苟娓呴櫎swap鏂囦欢浠ヤ繚瀹夊叏銆
閫氳繃涓婅堪姝ラわ紝鎴戜滑鎴愬北鐭ユ悳鍔熸墿灞曚簡Linux绯荤粺Swap绌洪棿锛岃В鍐充簡鍙鑳界殑涓嶈冻銆傜悊瑙e苟绠$悊濂絊wap锛屽氨鍍忕粰绯荤粺鍔犺呬簡鍐呭瓨鎵╁睍鍣锛岀‘淇濆湪鍐呭瓨鍘嬪姏涓嬶紝绯荤粺浠嶈兘淇濇寔骞崇ǔ杩愯屻傝繖鏄涓涓鎻愬崌绯荤粺鎬ц兘鍜岀ǔ瀹氭х殑瀹炵敤宸ュ叿锛屽煎緱姣忎釜Linux鐢ㄦ埛鎺屾彙銆
璁颁綇锛孲wap绌洪棿鐨勭$悊骞堕潪涓鍔虫案閫革紝鍔ㄦ佽皟鏁村拰鐩戞帶Swappiness鍊硷紝閫夋嫨鍚堥傜殑纭鐩樼被鍨嬶紝閮芥槸纭淇濈郴缁熼珮鏁堣繍琛岀殑鍏抽敭銆傜幇鍦锛屼綘宸茬粡鍑嗗囧ソ鍦↙inux涓栫晫涓锛岀伒娲昏屾湁鏁堝湴绠$悊浣犵殑Swap绌洪棿浜嗐
❷ 如何管理配置 Linux下Swap交换分区
理解什么是swap分区
Swap是Linux下的虚拟内存分区,他的主要作用是在物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,让当前的程序来使用,这些内存释放出来的空间没有什么操作的程序,这些释放的内存将被保存到swap空间中,等到这写程序在运行的时候,再从swap虚拟空间来读取这些程序给内存来使用。这样中是在系统内存不够用的时候,进行交换。在针对Linux web服务器的时候,调整swap能提高系统很大的性能。
现在操作系统都突破了物理内存的限制,让程序可以操作大于物理内存的空间,虚拟内存想防火墙一样,让每个进程不受其他程序的干扰。
我们需要注意的是不是所以的物理内存数据都会被交换到swap中的,要是所有的内存都放在swap中肯的是不可能的,所以有一部分直接交换到文件系统。当这文件读取的时候,直接从文件系统调用不从swap调用程序文件。
早期的时候经常看见说swap不能超过128M,现在我们的服务器一般不存在这种问题最大可以swap到2048M的.swap空间文件的结构是分页的每一页的大小和内存页的大小是一样的,这样的好处是方便swap空间和内存之间的交换,旧版本的Linux实现Swap空间时,用Swap空间的第一页作为所有Swap空间页的一个“位映射”。这就是说第一页的每一位,都对应着一页Swap空间。如果这一位是1,表示此页Swap可用;如果是0,表示此页是坏块,不能使用。这么说来,第一个Swap映射位应该是0,因为,第一页Swap是映射页。
所以取消了Linux映射的方法。
一般创建swap有两种方法
第一种方法是在创建系统的时候添加swap分区
还有一种是在系统创建完之后再创建swap分区,或者创建临时的swap。我们需要注意的是,在创建系统的时候我们没有swap分区也是能正常安装部署系统的,只是当系统文件调用swa文件的的时候会发生错误,所以我们需要swap不是没有swap不一定能启动起来系统。
查看当前swap资源的使用情况:
Swapon –s free –m
❸ 为什么linux物理内存还有很多,却开始使用swap
有没有存在一种可能
你的系统安装有内存管理方案机制或者这个特定的linux版本自带这种机制
如果这种机制合理的话,应该提早将不重要的程序以swap区间存放
这样使得重要或者紧急的程序能够立即响应在物理内存
这也是很好的
❹ Linux - Swap
首先,swap是硬盘上的一块空间。
其次,当内存没有多余空间的时候,可以将一部分数据交换到swap空间。也就是将内存中的一部分数据放到硬盘中,并释放内存空间。这样,释放出的内存空间就又可以被利用来存储其他数据了。
这样,本来只有4G的内存,如果swap有2G的话,可使用的内存可以认为是6G。
但是,硬盘的速度比内存慢太多太多了。因此swap只是对内存的一种补充,是在内存不足时对内存的扩充,但是不能代替内存使用。
内存不足时, 操作系统 会选择 最久没被使用的内存数据 ,交换到swap空间。
注意,交换操作是由操作系统来进行的。
系统在什么情况或条件下才会使用Swap分区的空间呢? 其实是Linux通过一个参数swappiness来控制的。当然还涉及到复杂的算法。
这个参数值可为 0-100,控制系统 swap 的使用程度。
0告诉内核尽可能的不要将内存数据移到swap中,也即只有在迫不得已的情况下才这么做,而100告诉内核只要有可能,尽量的将内存中不常访问的数据移到swap中。默认值为 60。注意:这个只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法
查看当前系统中swappiness的值
修改当前系统中swappiness的值
上面通过sysctl修改的swappiness值在系统重启后会失效,要想重启后继续生效,需要修改配置文件/etc/sysctl.conf,将下面这行修改成10,如果文件中找不到这行的话,在文件末位加上这行就可以了
既然配置swap对桌面系统有帮助,那么配置多少大小的swap比较合适呢?下面是ubuntu给出的建议:
Linux下有两种类型的swap空间,swap分区和swap文件,他们有各自的特点:
swap分区上面由于没有文件系统,所以相当于内核直接访问连续的磁盘空间,效率相对要高点,但由于swap分区一般安装系统时就分配好了了,后期要缩减空间和扩容都很不方便。
swap文件放在指定分区的文件系统里面,所以有可能受文件系统性能的影响,但据说2.6版本以后的内核可以直接访问swap文件对应的物理磁盘地址,相当于跳过了文件系统直接访问磁盘,不过如果swap文件在磁盘上的物理位置不连续时,还是会对性能产生不利影响,但其优点就是灵活,随时可以增加和移除swap文件。
如果配置有多个swap分区或者文件的话,这里将会有多行,每行代表一个正在被系统使用的swap分区或文件,下面是每个字段的意思:
并不是swap空间占用多就一定性能下降,真正影响性能是swap in和out的频率,频率越高,对系统的性能影响越大,我们可以通过vmstat命令来查看swap in/out的频率
在添加swap分区前,首先得有一个空闲的分区,如果是一块新的磁盘,可以用fdisk来创建一个新的分区用于swap。
添加swap文件就简单多了,也没有分区操作那么有风险。
通过如下命令,能查看所有进程的使用swap情况
查看某个进程swap占用内存大小脚本:
查看所有进程使用swap情况脚本:
❺ linux vps Cache化内存,Buffers缓冲占用太高呀,怎么办
真实使用的内存还不到100M,buffers/cache将近使用了400M,你500多M的物理内存就用光了,所以会用到硬盘的swap。
对于一台512M内存的LEMP服务器,完全可以不用swap分区,所以我建议你尽量少用swap分区或者把swap分区禁用掉:
减少使用SWAP(建议):
cat /proc/sys/vm/swappiness 默认是60
sudo sysctl vm.swappiness=0 设置为0
sudo nano /etc/sysctl.conf 永久改变这一值,在末尾添加(重启后生效):
vm.swappiness=0
临时禁用SWAP:
sudo swapoff -a
永久禁用SWAP:
sudo nano /etc/fstab 注释掉SWAP分区项。