物理內存不夠用,臨時增大Linux交換分區的方法

當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么 操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠 時,才進行Swap交換。這個是SWAP 交換分區的作用。

系統中交換分區的大小并不取決于物理內存的量,而是取決于系統中內存的負荷,所以在安裝系統時要根據具體的業務來設置SWAP的值。其實虛擬內存并不是等到物理內存用盡了才使用的,是否盡量的使用或不使用swap,在內核空間有一個參數控制。

# cat /proc/sys/vm/swappiness
60

表示默認的swappiness的值為60。換而言之,當swap空間使用達到60%的時候,開始釋放物理內存中的cache/buffers。 swappiness=0 的時候表示最大限度使用物理內存,然后才是swap空間;swappiness=100 的時候表示積極的使用swap分區,并且把內存上的數據及時的搬運到swap空間里面。

現在服務器的內存動不動就是上百G,所以我們可以把這個參數值設置的低一些,讓操作系統盡可能的使用物理內存,降低系統對swap的使用,從而提高系統的性能。例如

# echo 10 > /proc/sys/vm/swappiness

或者

# sysctl vm.swappiness=10
vm.swappiness = 10
# cat /proc/sys/vm/swappiness
10

這表明修改已經生效。但是如果我們重啟了系統,它又會變成60。為了讓我們的修改長久有效,可以修改配置文件/etc/sysctl.conf:

# echo 'vm.swappiness=10' >>/etc/sysctl.conf

為了讓它即時生效,可執行:

# sysctl -p

重新載入配置文件。?

目前Red Hat(紅帽官方)推薦交換分區的大小應當與系統物理內存的大小保持線性比例關系。不過在小于2GB物理內存的系統中,交換分區大小應該設置為內存大小的 兩倍,如果內存大小多于2GB,交換分區大小應該是物理內存大小加上2GB。其原因在于,系統中的物理內存越大, 對于內存的負荷可能也越大。但是,如果物理內存大小擴展到數百GB,這樣做就沒什么意義了。

最近,在Gentoo中編譯webkit-gtk-1.10.2-r300,辛辛苦苦編譯了幾個小時,結果報錯:

collect2: ld termiinated with signal 9 [Killed]

通過Google搜索,發現這是由于編譯過程中機器的內存耗盡引起的。這就是說解決問題的辦法是增加內存。不過加物理內存是遠水,解不了近火。既然 Linux中的交換分區也是內存的一部分,于是不妨嘗試增加交換分區。 這又讓我們想起了紅帽官方對于交換分區的建議:Linux系統交換分區最適合的大小是物理內存的1-2倍。可是誰又會在分區的時候記得這些呢?不過由于 Linux允許文件系統中存在多個交換分區或者交換分區文件,所以亡羊補牢、為時未晚。如果我們的磁盤空間還尚有空余沒有劃分,那么我們可以直接利用分區 工具再分出一個交換分區。倘若你像我一樣,所有空間都已經被劃分完了,那么只剩一招了—使用交換分區文件。下面我們主要來說說如何利用交換分區文件擴大分 區。

首先,需要制作交換分區文件。考慮到我的老機器已有的物理內存是1G、現有交換分區大小是500M。為了我們的編譯過程順利完成,不妨考慮交換分區文件的大小為1G。為此,執行下述命令:

$ sudo dd if=/dev/zero of=/var/tmp/swap bs=1k count=1024000

記錄了1024000+0 的讀入

記錄了1024000+0 的寫出

1048576000字節(1.0 GB)已復制,5.07655 秒,207 MB/秒

它將在/var/tmp路徑創建一個名為swap、大小為1G的分區文件,該分區文件擁有1024000個扇區(block),每個扇區大小為1K。接著,再把這個分區文件格式化為交換分區格式:

$ sudo mkswap /var/tmp/swap

隨后,將它掛載到文件系統:

$ sudo swapon /var/tmp/swap

如果想要確認交換分區是否掛載成功,可執行:

$ swapon -s 
Filename      Type      Size    Used  Priority
/dev/sda1     partition 511996  16192 ?1
/var/tmp/swap file      1023996 0     ?2

從顯示結果來看,我們確實看到了文件格式交換分區被加載。如果還想要查看系統內存情況,只需執行:

$ free -mtotal       used free shared buffers cached
Mem:   995         935  60   0      6       551
-/+ buffers/cache: 376  618
Swap:  1499        15   1484

通過擴大swap區,可以正常將webkit-gtk-1.10.2-r300編譯完。實際上,用top跟蹤webkit-gtk-1.10.2- r300的編譯過程,會發現整個編譯過程所需要的內存大概在2G左右。而我們通過增加交換分區的大小,總獲得了2.5G左右的內存空間。編譯完之后,如果 我們不再需要這一塊交換分區文件,那么可以先卸載再刪除它:

$ sudo swapoff /var/tmp/swap
$ sudo rm -rf /var/tmp/swap

倘若我們仍希望交換分區文件為以后的編譯提供便利,那么可以選擇保留它。不過在使用它之前必須先掛載它,因為一旦重啟,原先的掛載便會失效!若要讓我們的交換分區文件隨機器啟動自動掛載,則可修改/etc/fstab文件,例如作如下設置:

$ cat /etc/fstab | grep -i swap
/dev/sda1     none swap sw       0 0
/var/tmp/swap swap swap defaults 0 0

轉載于:https://www.cnblogs.com/ericsun/p/3263739.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448525.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448525.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448525.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構之順序隊列和鏈式隊列常用的一些操作

順序隊列是隊列的順序存儲結構,順序隊列實際上是運算受限的順序表。和順序表一樣,順序隊列用一個向量空間來存放當前隊列中的元素。由于隊列的隊頭和隊尾的位置是變化的,設置兩個指針front和rear分別指示隊頭元素和隊尾元素在向量空間中的位置…

33個訓練大腦的小方法

已經步入經常忘事的年齡了。常常是提起一個人,形象都在腦海中,但就是說不出其姓名來,哪怕就在嘴邊也說不出來。有時候遇到一個人,知道是熟悉的人,但就是想不起名字了,有時候弄得很尷尬。 書里說&#xff0c…

linux常用命令(4)

linux常用命令(4) --- Vim編輯器與Shell命令腳本 如何使用vim編輯器來編寫文檔、配置主機名稱、網卡參數以及yum倉庫;通過vim編輯器將Linux命令放入合適的邏輯測試語句(if、for、while、case)后最終寫出簡單使用的shell腳本;可以通過at命令或…

script 標簽到底該放在哪里

一般script標簽會被放在頭部或尾部。頭部就是<head>里面&#xff0c;尾部一般指<body>里。 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 將script放在<head>里&a…

棧在表達式計算過程中的應用

棧在表達式計算過程中的應用 &#xff1a;建立操作數棧和運算符棧。運算符有優先級。 規則&#xff1a; 自左至右掃描表達式&#xff0c;凡是遇到操作數一律進操作數棧。 當遇到運算符時&#xff0c;如果它的優先級比運算符棧棧頂元素的優先級高就進棧。反之&#xff0c;取出…

Python-02-基礎知識

一、第一個Python程序 【第一步】新建一個hello.txt 【第二步】將后綴名txt改為py 【第三步】使用記事本編輯該文件 【第四步】在cmd中運行該文件 print("Hello World!") 強調&#xff1a;python解釋器執行程序是解釋執行&#xff0c;即打開文件讀內容&#xff0c;因…

數據結構之樹的一些基本操作

樹是由根結點和若干顆子樹構成的。樹是由一個集合以及在該集合上定義的一種關系構成的。集合中的元素稱為樹的結點&#xff0c;所定義的關系稱為父子關系。父子關系在樹的結點之間建立了一個層次結構。在這種層次結構中有一個結點具有特殊的地位&#xff0c;這個結點稱為該樹的…

利用FS寄存器獲取KERNEL32.DLL基址算法的證明(ZZ)

轉自&#xff1a;http://blog.csdn.net/int2e/archive/2008/01/09/2032732.aspxFS寄存器指向當前活動線程的TEB結構&#xff08;線程結構&#xff09; 偏移 說明 000 指向SEH鏈指針 004 線程堆棧頂部 008 線程堆棧底部 00C SubSystemTib 010 FiberData 014 ArbitraryUse…

很老很老的老偏方,小病一掃光

1、洋蔥、生姜治頭皮屑 ①將一個的洋蔥頭用紗布包好&#xff0c;用它揉擦頭皮&#xff0c;24小時后用溫水洗頭&#xff0c;即可止頭癢&#xff0c;除頭皮屑。 ②先將生姜切片&#xff0c;放入鍋里煮沸&#xff0c;待水溫不燙的時候倒上適量醋&#xff0c;加水洗頭。 2、小白果…

script 放置最佳位置以及 html 執行順序

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 看到知乎上有很多討論關于javascript位置的文章。所以特意留意了這方面的問題。 首先要了解到的是&#xff1a; html文件是自上而下的執…

677A

#include <stdio.h> int main() {int n, h;scanf("%d%d", &n, &h);int temp, width0;int i;for(i0; i<n; i){scanf("%d", &temp);if(temp<h)width;elsewidth2;}printf("%d\n", width);return 0; }轉載于:https://www.cn…

數據結構之二叉樹的一些基本操作

二叉樹是樹的特殊一種&#xff0c;具有如下特點&#xff1a;1、每個結點最多有兩顆子樹&#xff0c;結點的度最大為2。2、左子樹和右子樹是有順序的&#xff0c;次序不能顛倒。3、即使某結點只有一個子樹&#xff0c;也要區分左右子樹。 頭文件 BTree.h #ifndef __BTREE_H__ …

【Arduino】使用C#實現Arduino與電腦進行串行通訊

在給Arduino編程的時候&#xff0c;因為沒有調試工具&#xff0c;經常要通過使用串口通訊的方式調用Serial.print和Serial.println輸出Arduino運行過程中的相關信息&#xff0c;然后在電腦上用Arduino IDE的Serial Monitor來查看print出來的信息。Serial Monitor不僅可以接受Ar…

虛擬機NAT模式聯網

阿里開源鏡像軟件&#xff1a;https://opsx.alibaba.com/mirror 如何使VMware ip與本機ip處于同一網段 https://blog.csdn.net/kakuma_chen/article/details/71425620 轉載于:https://www.cnblogs.com/cdy0626/p/11131440.html

VS2008下最新X264(svn 2009.9)編譯不過的解決辦法

總有人說最新的版本 編譯不過&#xff0c;搞的群、 論壇里到處都是這種求助貼。建議斑竹把這個解決辦法放到醒目的位置&#xff0c;以減少噪音。科普開始1、編譯問題由于MS的VS編譯器對C99標準支持不好&#xff0c;不支持函數當中混合定義、聲明變量。解決辦法&#xff1a;在函…

node、npm、vue安裝 -- VUE 項目 demo 實例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 安裝node&#xff1a; sudo yum install epel-release sudo yum install nodejs node --version // 安裝好后查看版本2. 安裝 npm …

用C語言實現簡單的停車場管理

這個程序是利用棧和循環隊列實現的&#xff0c;自己得先處理好邏輯關系就好了。由于題目沒有要求&#xff0c;這個程序就沒加重復判斷&#xff0c;比如一輛車已經停在車位上或者便道上&#xff0c;再來一輛就判斷不了了。關于棧&#xff0c;就是先進后出的思想&#xff0c;隊列…

推薦一個配置linux服務的網站

該網站的各種linux服務的配置都是基于CentOS系統的 基本上各種linux服務都有了 http://www.server-world.info/en/轉載于:https://www.cnblogs.com/Skyar/p/3582389.html

mariadb數據庫增刪改查

1.常用數據類型 1&#xff09;整數:int, bit 2&#xff09;小數:decimal    #decimal(5,2)表示共有五位數&#xff0c;保留兩位小數 3&#xff09;字符串:varchar, char   4&#xff09;日期時間:date, time, datetime 5&#xff09;枚舉類型(enu…

為什么你工作努力卻沒有起色?

成為職場達人&#xff0c;未必要經常挑燈夜戰。相反&#xff0c;注意到下面幾條&#xff0c;會讓你少走彎路。 1&#xff09;成長的機會永遠比眼前的待遇重要——做重要的事比多拿錢重要。 我知道在水木bbs上的worklife版本&#xff0c;每天都在上演的就是比較自己的第一個o…