導航:首頁 > 操作系統 > linux進程swap

linux進程swap

發布時間:2022-12-20 07:46:47

linux系統中如何調整swap大小

這里我要跟大家介紹的是Linux系統中調整swap大小的 方法 。歡迎大家閱讀。

Linux系統中調整swap大小的方法

1、使用free命令帶上m參數,查看swap文件大小,官方建議在RAM是2到4.5G時,swap是RAM的2倍;如果RAM大於等於4G則swap等於RAM即可

2、也可用cat 查看etc目錄下的swaps文件,如下圖

3、創建一個swap文件

復制內容到剪貼板

########

dd if=/dev/zero of=/tmp/swap bs=1MB count=1024

########

以下僅供參考:不用看

Creating a swap file

First of, make sure the file system the disk you wish to swap on is properly mounted. For the purposes of this tutorial we will assume the disk is mounted as /mnt and we want to use the file /mnt/myswap.swp for swapping.

使用下面的命令創建一個1G的swap文件

復制內容到剪貼板

Use the following command to create a 1024MB file that we will use for swapping

########

dd if=/dev/zero of=/mnt/myswap.swp bs=1024MB count=1

########

4、製作一個swap文件,如果覺得繁瑣,可以將mkswap文件掛載到tmp目錄下,例如:

復制內容到剪貼板

########

mkswap /tmp/swap

########

以下僅供參考:不用看

Preparing the swap file

Before we enable the swap file we must first set it up. The following command accomplishes just that:

########

mkswap /mnt/myswap.swp

########

5、使用swapon 啟動/tmp/swap

復制內容到剪貼板

########

swapon /tmp/swap

########

使用一個swap分區,如果已經有一個swap分區,該步驟可以省略

以下僅供參考:不用看

Using a swap partition

Setting up a swap partition is a bit more difficult, as the partition must be first created then formatted using the linux-swap file system. Once that is done, assuming the swap partition is at/dev/scsi/host0/bus0/target0/lun0/part5 (common for v24 USB drives with mutiple partitions), the only command that needs be issued is:

6、再次使用free查看增加後的swap大小

7、如果只想增加swap大小,請忽略以下的操作,重要!!如果不使用剛才增加的1G的swap文件,使用下面的swapoff命令,可以關閉,這樣swap文件就縮小了1G

使用swapoff關閉swap文件

復制內容到剪貼板

########

swapoff /tmp/swap

########

注意事項:如果只想增加swap大小,請忽略第7步的所有操作。

Ⅱ linux下查看哪些進程在佔用swap

1、使用top命令查看當前進程swap佔用
2、使用腳本文件
#!/bin/bash

# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0

done
echo "Overall swap used: $OVERALL"
注意:使用sudo或root許可權來執行該腳本,不然的話非執行用戶的進程的輸出結果為0.

Ⅲ Linux下swap耗盡該怎麼辦如何釋放swap

Linux下交換內存耗盡如何查看及如何處理。以及查看shell腳本描述。交換內存不足時,啟動應用時會報內存不足。
1、啟動應用時報內存不足,直接Linux命令行top查看下。swap used100%,0free。

2、reboot伺服器能有效的釋放swap,可是很多情況下是不能重啟伺服器的。這時就要弄明白是什麼占著內存。查看下/proc目錄下內容,發現很多數字命名的目錄,這些就是Linux的進程了。

3、要讓進程釋放swap的方法只有kill掉該進程了。寫個腳本來查看具體是哪些進程占著內存啦。
一、對/proc目錄下所有以數字為名的目錄進行遍歷
二、1目錄是根進程重啟會導致系統重啟,所以直接排除掉。
三、算出每個進程佔用內存的大小,然後按照大小排序
四、輸出內存佔用大於1MB的進程

4、將運行結果保存到swap.log文件中

5、查看swap.log.10325這個進程內存佔用最多有130幾M。

6、直接kill掉,然後再top查看。ok,swap一下子釋放了很多,搞定。

注意事項:proc目錄下1目錄不能直接kill掉。

Ⅳ 在linux交換空間作用是什麼

Linux交換空間(swap space)是磁碟上的一塊區域,可以是一個分區或一個文件,或者是他們組合。當系統物理內存吃緊時,Linux會將內存中不常訪問的數據保存到swap上,這樣系統就有更多的物理內存為各個進程服務。

Linux 交換空間(swap space)是磁碟上的一塊區域,可以是一個分區,也可以是一個文件,或者是他們的組合。簡單點說,當系統物理內存吃緊時,Linux 會將內存中不常訪問的數據保存到 swap 上,這樣系統就有更多的物理內存為各個進程服務,而當系統需要訪問 swap 上存儲的內容時,再將 swap 上的數據載入到內存中,這就是我們常說的 swap out 和 swap in。

交換空間 Linux swap

理論上來說,如果物理內存足夠多並且不需要休眠功能,那 swap 就沒什麼用,可關鍵問題是我們很難保證物理內存在任何情況下都夠用,因為總有意想不到的情況發生,比如某些進程耗內存超預期,伺服器壓力超預期,內存泄漏等。

Linux swap 的好處
1.對於一些大型的應用程序(如 LibreOffice、video editor 等),在啟動的過程中會使用大量的內存,但這些內存很多時候只是在啟動的時候用一下,後面的運行過程中很少再用到這些內存。有了 swap 後,系統就可以將這部分不這么使用的內存數據保存到 swap 上去,從而釋放出更多的物理內存供系統使用。

2.很多發行版(如 ubuntu)的休眠功能依賴於 swap 分區,當系統休眠的時候,會將內存中的數據保存到 swap 分區上,等下次系統啟動的時候,再將數據載入到內存中,這樣可以加快系統的啟動速度,所以如果要使用休眠的功能,必須要配置 swap 分區,並且大小一定要大於等於物理內存

3.在某些情況下,物理內存有限,但又想運行耗內存的程序怎麼辦?這時可以通過配置足夠的 swap 空間來達到目標,雖然慢一點,但至少可以運行。

4.雖然大部分情況下,物理內存都是夠用的,但是總有一些意想不到的狀況,比如某個進程需要的內存超過了預期,或者有進程存在內存泄漏等,當內存不夠的時候,就會觸發內核的 OOM killer,根據 OOM killer 的配置,某些進程會被 kill 掉或者系統直接重啟(默認情況是優先 kill 耗內存最多的那個進程),不過有了 swap 後,可以拿 swap 當內存用,雖然速度慢了點,但至少給了我們一個去 debug、kill 進程或者保存當前工作進度的機會。

5.如果看過 Linux 內存管理,就會知道系統會盡可能多的將空閑內存用於 cache,以加快系統的 I/O 速度,所以如果能將不怎麼常用的內存數據移動到 swap 上,就會有更多的物理內存用於 cache,從而提高系統整體性能。

Ⅳ linux下SWAP的作用

相當於windows的虛擬內存,當你內存不夠用時,會暫時把內存中不用的進程和存到硬碟上的swap分區,當cpu調用時,再從硬碟中調回內存

Ⅵ linux swap分區原理

swap介紹

Swap,即交換區,除了安裝Linux的時候,有多少人關心過它呢?其實,Swap的調整對Linux伺服器,特別是Web伺服器的性能至關重要。通過調整Swap,有時可以越過系統性能瓶頸,節省系統升級費用。

本文內容包括:

Swap基本原理

突破128M Swap限制

Swap配置對性能的影響

Swap性能監視

有關Swap操作的系統命令

Swap基本原理

Swap的原理是一個較復雜的問題,需要大量的篇幅來說明。在這里只作簡單的介紹,在以後的文章中將和大家詳細討論Swap實現的細節。

眾所周知,現代操作系統都實現了「虛擬內存」這一技術,不但在功能上突破了物理內存的限制,使程序可以操縱大於實際物理內存的空間,更重要的是,「虛擬內存」是隔離每個進程的安全保護網,使每個進程都不受其它程序的干擾。

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

計算機用戶會經常遇這種現象。例如,在使用Windows系統時,可以同時運行多個程序,當你切換到一個很長時間沒有理會的程序時,會聽到硬碟「嘩嘩」直響。這是因為這個程序的內存被那些頻繁運行的程序給「偷走」了,放到了Swap區中。因此,一旦此程序被放置到前端,它就會從Swap區取回自己的數據,將其放進內存,然後接著運行。

需要說明一點,並不是所有從物理內存中交換出來的數據都會被放到Swap中(如果這樣的話,Swap就會不堪重負),有相當一部分數據被直接交換到文件系統。例如,有的程序會打開一些文件,對文件進行讀寫(其實每個程序都至少要打開一個文件,那就是運行程序本身),當需要將這些程序的內存空間交換出去時,就沒有必要將文件部分的數據放到Swap空間中了,而可以直接將其放到文件里去。如果是讀文件操作,那麼內存數據被直接釋放,不需要交換出來,因為下次需要時,可直接從文件系統恢復;如果是寫文件,只需要將變化的數據保存到文件中,以便恢復。但是那些用malloc和new函數生成的對象的數據則不同,它們需要Swap空間,因為它們在文件系統中沒有相應的「儲備」文件,因此被稱作「匿名」(Anonymous)內存數據。這類數據還包括堆棧中的一些狀態和變數數據等。所以說,Swap空間是「匿名」數據的交換空間。

突破128M Swap限制

經常看到有些Linux(國內漢化版)安裝手冊上有這樣的說明:Swap空間不能超過128M。為什麼會有這種說法?在說明「128M」這個數字的來歷之前,先給問題一個回答:現在根本不存在128M的限制!現在的限制是2G!

Swap空間是分頁的,每一頁的大小和內存頁的大小一樣,方便Swap空間和內存之間的數據交換。舊版本的Linux實現Swap空間時,用Swap空間的第一頁作為所有Swap空間頁的一個「位映射」(Bit map)。這就是說第一頁的每一位,都對應著一頁Swap空間。如果這一位是1,表示此頁Swap可用;如果是0,表示此頁是壞塊,不能使用。這么說來,第一個Swap映射位應該是0,因為,第一頁Swap是映射頁。另外,最後10個映射位也被佔用,用來表示Swap的版本(原來的版本是Swap_space ,現在的版本是swapspace2)。那麼,如果說一頁的大小為s,這種Swap的實現方法共能管理「8 * ( s - 10 ) - 1」個Swap頁。對於i386系統來說s=4096,則空間大小共為133890048,如果認為1 MB=2^20 Byte的話,大小正好為128M。

之所以這樣來實現Swap空間的管理,是要防止Swap空間中有壞塊。如果系統檢查到Swap中有壞塊,則在相應的位映射上標記上0,表示此頁不可用。這樣在使用Swap時,不至於用到壞塊,而使系統產生錯誤。

現在的系統設計者認為:

Ⅶ linux系統swap是什麼意思

linux系統swap意思:

1、Swap分區,即交換區,系統在物理內存不夠時,與Swap進行交換。 其實,Swap的調整對Linux伺服器,特別是Web伺服器的性能至關重要。通過調整Swap,有時可以越過系統性能瓶頸,節省系統升級費用。
2、眾所周知,現代操作系統都實現了「虛擬內存」這一技術,不但在功能上突破了物理內存的限制,使程序可以操縱大於實際物理內存的空間,更重要的是,「虛擬內存」是隔離每個進程的安全保護網,使每個進程都不受其它程序的干擾。
3、計算機用戶會經常遇這種現象。例如,在使用Windows系統時,可以同時運行多個程序,當你切換到一個很長時間沒有理會的程序時,會聽到硬碟「嘩嘩」直響。這是因為這個程序的內存被那些頻繁運行的程序給「偷走」了,放到了Swap區中。因此,一旦此程序被放置到前端,它就會從Swap區取回自己的數據,將其放進內存,然後接著運行。

Ⅷ linux裡面虛擬內存和swap有什麼區別

為了提高磁碟存取效率, Linux做了一些精心的設計, 除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache.前者針對磁碟塊的讀寫,後者針對文件inode的讀寫.這些Cache有效縮短了I/O系統調用(比如 read,write,getdents)的時間.x0dx0a內存活動基本上可以用3個數字來量化:活動虛擬內存總量,交換(swapping)率和調頁(paging)率.其中第一個數字表明內存的總需求量,後兩個數字表示那些內存中有多少比例正處在使用之中.目標是減少內存活動或增加內存量,直到調頁率保持在一個可以接受的水平上為止.x0dx0a活動虛擬內存的總量(VM)=實際內存大小(size of real memory)(物理內存)+使用的交換空間大小(amount of swap space used)x0dx0a當程序運行需要的內存大於物理內存時,Linux系統採用了調頁機制,即系統一些內存中的頁面到磁碟上,騰出來空間供進程使用。x0dx0a大多數系統可以忍受偶爾的調頁,但是頻繁的調頁會使系統性能急劇下降。x0dx0aLinux內存管理:Linux系統通過2種方法進行內存管理,「調頁演算法」,「交換技術」。x0dx0a調頁演算法是將內存中最近不常使用的頁面換到磁碟上,把常使用的頁面(活動頁面)保留在內存中供進程使用。x0dx0a交換技術是系統將整個進程,而不是部分頁面,全部換到磁碟上。正常情況下,系統會發生一些交換過程。x0dx0a當內存嚴重不足時,系統會頻繁使用調頁和交換,這增加了磁碟I/O的負載。進一步降低了系統對作業的執行速度,即系統I/O資源問題又會影響到內存資源的分配。x0dx0aLinux的虛擬內存是一個十分復雜的子系統,它實現了進程間代碼與數據共享機制的透明性,並能夠分配比系統現有物理內存更多的內存,某些操作系統的虛存甚至能通過提供緩存功能影響到文件系統的性能,各種風格的Linux的虛存的實現方式區別很大,但都離不開下面的4個概念。x0dx0ax0dx0a1:實際內存x0dx0a實際內存是指一個系統中實際存在的物理內存,稱為RAM。實際內存是存儲臨時數據最快最有效的方式,因此必須盡可能地分配給應用程序,現在的RAM的形式有多種:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用糾錯機制(ECC)。x0dx0a2:交換空間x0dx0a交換空間是專門用於臨時存儲內存的一塊磁碟空間,通常在頁面調度和交換進程數據時使用,通常推薦交換空間的大小應該是物理內存的二到四倍。x0dx0a3:頁面調度x0dx0a頁面調度是指從磁碟向內存傳輸數據,以及相反的過程,這個過程之所以被稱為頁面調度,是因為Linux內存被平均劃分成大小相等的頁面;通常頁面大小為 4KB和8KB(在Solaris中可以用pagesize命令查看)。當可執行程序開始運行時,它的映象會一頁一頁地從磁碟中換入,與此類似,當某些內存在一段時間內空閑,就可以把它們換出到交換空間中,這樣就可以把空閑的RAM交給其他需要它的程序使用。x0dx0a4:交換x0dx0a頁面調度通常容易和交換的概念混淆,頁面調度是指把一個進程所佔內存的空閑部分傳輸到磁碟上,而交換是指當系統中實際的內存已不夠滿足新的分配需求時,把整個進程傳輸到磁碟上,交換活動通常意味著內存不足。x0dx0avmstat監視內存性能:該命令用來檢查虛擬內存的統計信息,並可顯示有關進程狀態、空閑和交換空間、調頁、磁碟空間、CPU負載和交換,cache刷新以及中斷等方面的信息。

Ⅸ Linux操作系統swap是外存嗎

swap是中文名稱交換分區,是linux系統的一種虛擬內存機制
實際上是在硬碟上開辟一塊存儲空間,可以是一個單獨的硬碟分區,也可以是一個分區上的一個文件,作用是作為物理內存條的補充,加入系統,當運行大程序,物理內存不夠,就把物理內存中的一部分數據臨時放置到swap裡面,以騰出內存空間給程序運行
所以swap是一種機制,不是實際的內存條

Ⅹ Linux內存機制(swap)

我們知道,直接從物理內存讀寫數據要比從硬碟讀寫數據要快的多,因此,我們希望所有數據的讀取和寫入都在內存完成,而內存是有限的,這樣就引出了物理內存與虛擬內存的概念。

物理內存就是系統硬體提供的內存大小,是真正的內存,相對於物理內存,在linux下還有一個虛擬內存的概念,虛擬內存就是為了滿足物理內存的不足而提出的策略,它是利用磁碟空間虛擬出的一塊邏輯內存,用作虛擬內存的磁碟空間被稱為交換空間(Swap Space)。

作為物理內存的擴展,linux會在物理內存不足時,使用交換分區的虛擬內存,更詳細的說,就是內核會將暫時不用的內存塊信息寫到交換空間,這樣以來,物理內存得到了釋放,這塊內存就可以用於其它目的,當需要用到原始的內容時,這些信息會被重新從交換空間讀入物理內存。

Linux的內存管理採取的是分頁存取機制,為了保證物理內存能得到充分的利用,內核會在適當的時候將物理內存中不經常使用的數據塊自動交換到虛擬內存中,而將經常使用的信息保留到物理內存。

要深入了解linux內存運行機制,需要知道下面提到的幾個方面:

Linux系統會不時的進行頁面交換操作,以保持盡可能多的空閑物理內存,即使並沒有什麼事情需要內存,Linux也會交換出暫時不用的內存頁面。這可以避免等待交換所需的時間。

Linux 進行頁面交換是有條件的,不是所有頁面在不用時都交換到虛擬內存,linux內核根據」最近最經常使用「演算法,僅僅將一些不經常使用的頁面文件交換到虛擬 內存,有時我們會看到這么一個現象:linux物理內存還有很多,但是交換空間也使用了很多。其實,這並不奇怪,例如,一個佔用很大內存的進程運行時,需 要耗費很多內存資源,此時就會有一些不常用頁面文件被交換到虛擬內存中,但後來這個佔用很多內存資源的進程結束並釋放了很多內存時,剛才被交換出去的頁面 文件並不會自動的交換進物理內存,除非有這個必要,那麼此刻系統物理內存就會空閑很多,同時交換空間也在被使用,就出現了剛才所說的現象了。關於這點,不 用擔心什麼,只要知道是怎麼一回事就可以了。

交換空間的頁面在使用時會首先被交換到物理內存,如果此時沒有足夠的物理內存來容納這些頁 面,它們又會被馬上交換出去,如此以來,虛擬內存中可能沒有足夠空間來存儲這些交換頁面,最終會導致linux出現假死機、服務異常等問題,linux雖 然可以在一段時間內自行恢復,但是恢復後的系統已經基本不可用了。

因此,合理規劃和設計Linux內存的使用,是非常重要的.

在Linux 操作系統中,當應用程序需要讀取文件中的數據時,操作系統先分配一些內存,將數據從磁碟讀入到這些內存中,然後再將數據分發給應用程序;當需要往文件中寫 數據時,操作系統先分配內存接收用戶數據,然後再將數據從內存寫到磁碟上。然而,如果有大量數據需要從磁碟讀取到內存或者由內存寫入磁碟時,系統的讀寫性 能就變得非常低下,因為無論是從磁碟讀數據,還是寫數據到磁碟,都是一個很消耗時間和資源的過程,在這種情況下,Linux引入了buffers和 cached機制。

buffers與cached都是內存操作,用來保存系統曾經打開過的文件以及文件屬性信息,這樣當操作系統需要讀取某些文件時,會首先在buffers 與cached內存區查找,如果找到,直接讀出傳送給應用程序,如果沒有找到需要數據,才從磁碟讀取,這就是操作系統的緩存機制,通過緩存,大大提高了操 作系統的性能。但buffers與cached緩沖的內容卻是不同的。

buffers是用來緩沖塊設備做的,它只記錄文件系統的元數據(metadata)以及 tracking in-flight pages,而cached是用來給文件做緩沖。更通俗一點說:buffers主要用來存放目錄裡面有什麼內容,文件的屬性以及許可權等等。而cached直接用來記憶我們打開過的文件和程序。

為了驗證我們的結論是否正確,可以通過vi打開一個非常大的文件,看看cached的變化,然後再次vi這個文件,感覺一下兩次打開的速度有何異同,是不是第二次打開的速度明顯快於第一次呢?接著執行下面的命令:

find / -name .conf 看看buffers的值是否變化,然後重復執行find命令,看看兩次顯示速度有何不同。

上面這個60代表物理內存在使用40%的時候才會使用swap(參考網路資料:當剩餘物理內存低於40%(40=100-60)時,開始使用交換空間) swappiness=0的時候表示最大限度使用物理內存,然後才是 swap空間,swappiness=100的時候表示積極的使用swap分區,並且把內存上的數據及時的搬運到swap空間裡面。

值越大表示越傾向於使用swap。可以設為0,這樣做並不會禁止對swap的使用,只是最大限度地降低了使用swap的可能性。

通常情況下:swap分區設置建議是內存的兩倍 (內存小於等於4G時),如果內存大於4G,swap只要比內存大就行。另外盡量的將swappiness調低,這樣系統的性能會更好。

B. 修改swappiness參數

永久性修改:

立即生效,重啟也可以生效。

一般系統是不會自動釋放內存的 關鍵的配置文件/proc/sys/vm/drop_caches。這個文件中記錄了緩存釋放的參數,默認值為0,也就是不釋放緩存。他的值可以為0~3之間的任意數字,代表著不同的含義:

0 – 不釋放 1 – 釋放頁緩存 2 – 釋放dentries和inodes 3 – 釋放所有緩存

前提:首先要保證內存剩餘要大於等於swap使用量,否則會宕機!根據內存機制,swap分區一旦釋放,所有存放在swap分區的文件都會轉存到物理內存上。通常通過重新掛載swap分區完成釋放swap。
a.查看當前swap分區掛載在哪?b.關停這個分區 c.查看狀態:d.查看swap分區是否關停,最下面一行顯示全 e.將swap掛載到/dev/sda5上 f.查看掛載是否成功

閱讀全文

與linux進程swap相關的資料

熱點內容
java跳轉到jsp 瀏覽:819
327平方根演算法 瀏覽:216
win7美化命令行終端 瀏覽:797
免加密狗圖片 瀏覽:485
一隻透明的鳥是什麼app 瀏覽:817
空氣壓縮機油批發商 瀏覽:69
linuxifexist 瀏覽:4
加密tf卡拷入文件 瀏覽:399
山西php工資 瀏覽:673
福州看病預約用什麼小程序app 瀏覽:238
php保留兩位小數不四捨五入 瀏覽:292
黑馬程序員路徑大全 瀏覽:1000
saas平台PHP 瀏覽:333
雲伺服器科學計算配置怎麼選 瀏覽:649
jar解壓命令 瀏覽:609
php正則問號 瀏覽:299
無線已加密不可上網是怎麼了 瀏覽:464
什麼app可以免費做手機 瀏覽:376
異性下載什麼app 瀏覽:680
51單片機程序單步視頻 瀏覽:241