導航:首頁 > 操作系統 > linuxswap為0

linuxswap為0

發布時間:2022-12-21 17:42:16

A. linux裡面cat /proc/sys/vm/swappinsss 為0是什麼意思

這里swapxxx 0的意思是不使用交換分區
希望可以幫助你 請採納 謝謝

B. Linux開啟Swap分區

title: 2021-02-07-Linux開啟Swap分區
date: 2021-02-07 11:20:20
categories: [linux]
tags: [linux分區擴容]
toc: true

場景: 華為雲購買的機器,默認不會開啟 swap 分區,伺服器運行內存只有 4GB ,不滿足使用,開啟 swap 交換分區

1、 開啟 swap 分區
新建一個專門的文件用於 swap 分區

註:此文件的大小是 count 的大小乘以 bs 大小,上面命令的大小是 8GB
2、 通過 mkswap 命令將上面新建出的文件做成 swap 分區

3、 查看內核參數 vm.swappiness
若 vm.swappiness 為 0 則根據實際需要調整成 30 或者 60

註:若想永久修改,則編輯 /etc/sysctl.conf 文件

4、 啟用此交換分區的交換功能

這里有可能會有報錯,如下

解決方法:
嘗試激活 Swap 文件

5、 關閉 swap 分區

6、 重新激活 swap 分區,沒有寫入系統配置文件中,系統重啟後,就需要重新激活

7、 如果需要一直保持這個 swap ,可以把它寫入 /etc/fstab 文件

8、 關機重啟確認 Swap 大小

C. redhat linux 5.5 swap利用率為0,4G內存,I3 530 CPU,圖形登錄後,沒開任何進程,很卡

ps -ef
top
看看是誰佔用內存

D. 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.查看掛載是否成功

E. linux設置開啟swap交換分區基本命令(虛擬內存)

linux設置開啟swap交換分區基本命令(虛擬內存)

在Linux系統下,我們要怎麼開啟swap交換分區,基本設置命令是什麼呢?下面為大家帶來最基本的配置命令,希望對大家有所幫助!

1.驗證不存在交換分區free-m

輸出如下:

Mem:99594747046142

-/+buffers/cache:758236

Swap:000

如果swap選項total是0則表示沒有交換分區,開始下一步

2.創建swap分區

使用dd命令選擇swap分區目錄以及大小,在此我們給他放到根目錄,創建的.是2G的虛擬內存,可以根據自己需要選擇大小。ddif=/dev/zeroof=/swapfilecount=2048bs=1M

接下來驗證根目錄是否存在swapfilels/|grepswapfile

不出意外的話你將會看到swapfile

3.激活swap分區

交換分區不會自動激活,你需要告訴伺服器如何格式化文件,使它作為一個有效的交換分區。

出於安全考慮,交交換區許可權設置成600

chmod600/swapfile

使用mkswap命令來設置交換文件:mkswap/swapfile

4.開啟swap分區swapon/swapfile

再次使用free-m查看內存使用情況,輸出如下:

Mem:184017548616231519

-/+buffers/cache:2101630

Swap:204702047

5.設置允許開機啟用swap分區sudovi/etc/fstab

在後面加上/swapfilenoneswapsw00

;

F. linux swap交換空間不足怎麼辦

1、使用分區:
在安裝OS時劃分出專門的交換分區,空間大小要事先規劃好,啟動系統時自動進行mount。
這種方法只能在安裝OS時設定,一旦設定好不容易改變,除非重裝系統。
2、使用swapfile:(或者是整個空閑分區)
新建臨時swapfile或者是空閑分區,在需要時設定為交換空間,最多可以增加8個swapfile。
交換空間的大小,與CPU密切相關,在i386系中,最多可以使用2GB的空間。
在系統啟動後根據需要在2G的總容量下進行增減。
這種方法比較靈活,也比較方便,缺點是啟動系統後需要手工設置。
以下是運用swapfile增加交換空間的步驟:
涉及到的命令:

free ---查看內存狀態命令,可以顯示memory,swap,buffer cache等的大小及使用狀況;
dd ---讀取,轉換並輸出數據命令;
mkswap ---設置交換區
swapon ---啟用交換區,相當於mount
swapoff ---關閉交換區,相當於umount
步驟:
1、創建swapfile:
root許可權下,創建swapfile,假設當前目錄為"/",執行如下命令:
# dd if=/dev/zero of=swapfile bs=1024 count=500000
則在根目錄下創建了一個swapfile,名稱為「swapfile」,大小為500M,也可以把文件輸出到自己想要的任何目錄中,
個人覺得還是直接放在根目錄下比較好,一目瞭然,不容易誤破壞,放在其他目錄下則不然了;
命令中選項解釋:

---of:輸出的交換文件的路徑及名稱;
---bs:塊大小,單位byte,一般為1k即1024個byte;
---count:總塊數即空間總大小,單位為塊即k;
---if:讀取的源空閑空間,為什麼是zero,不清楚,先固定這么寫吧;
2、將swapfile設置為swap空間
# mkswap swapfile
3、啟用交換空間,這個操作有點類似於mount操作(個人理解):
# swapon swapfile
至此增加交換空間的操作結束了,可以使用free命令查看swap空間大小是否發生變化;
4、如果不再使用空間可以選擇關閉交換空間,這個操作有點類似於umount操作(個人理解)::
# swapoff swapfile
使用這種方法在每次系統啟動時都需要手動設置、開啟swapfile,比較麻煩,解決方法:
在 /etc/rc.d/rc.local 文件的末行下追加加以下內容:(編輯這個文件當然是用vi了~)
/sbin/swapon /swapfile
保存後退出,這樣在系統啟動後,swap空間就會自動載入了;
總結:在安裝OS時一定要規劃後swap大小,通常為內存的2倍,但是要考慮到以後增加內存的可能,所以可以考慮設的稍大一些,想在虛擬機裡面安裝oracle10g,發現默認的swap交換空間不滿足最低要求,因為我分配的物理內存是1G,那麼就按照要求需要2G的swap交換空間,默認只有1G的交換空間。
添加swap交換空間的步驟如下:
第一步:確保系統中有足夠的空間來用做swap交換空間,我使用的是KVM,准備在一個獨立的文件系統中添加一個swap交換文件,在/opt/image中添加2G的swap交換文件
第二步:添加交換文件並設置其大小為2G,使用如下命令

[root@sense image]# dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000
過段時間就返回如下結果:
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB) copied, 272.867 seconds, 7.7 MB/s
第三步:創建(設置)交換空間,使用命令mkswap

[root@sense image]# mkswap /opt/image/swap
Setting up swapspace version 1, size = 2097147 kB
第四步:檢查現有的交換空間大小,使用命令free

[root@sense image]# free -m
total used free shared buffers cached
Mem: 1011 989 21 0 1 875
-/+ buffers/cache: 112 898
Swap: 1027 0 1027
或者檢查meminfo文件
grep SwapTotal /proc/meminfo
第五步:啟動新增加的2G的交換空間,使用命令swapon

[root@sense image]# swapon /opt/image/swap
第六步:確認新增加的2G交換空間已經生效,使用命令free

[[root@sense image]# free -m
total used free shared buffers cached
Mem: 1011 995 15 0 4 877
-/+ buffers/cache: 113 897
Swap: 3027 0 3027
或者檢查meminfo文件
grep SwapTotal /proc/meminfo
第七步:修改/etc/fstab文件,使得新加的2G交換空間在系統重新啟動後自動生效
在文件最後加入:

/opt/image/swap swap swap defaults 0 0
我的操作

[root@weblogic Server]# free
total used free shared buffers cached
Mem: 1785856 1753452 32404 0 38592 1036312
-/+ buffers/cache: 678548 1107308
Swap: 2064376 116 2064260

創建交換空間文件,1000M

[root@weblogic /]# dd if=/dev/zero of=/swapfile bs=1024 count=1000000
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB) copied, 28.5423 seconds, 35.9 MB/s

[root@weblogic /]# mkswap swapfile
Setting up swapspace version 1, size = 1023995 kB

[root@weblogic /]# swapon swapfile 打開

[root@weblogic /]#swapoff swapfile 關閉

刪除
swapoff swapfile
rm -rf swapfile

G. 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時,不至於用到壞塊,而使系統產生錯誤。

現在的系統設計者認為:

H. 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情況腳本:

I. 如何限制Linux內存的使用

swap是一塊磁碟空間或者一個本地文件
/proc/sys/vm/swappiness 可以設置伺服器使用 swap 的積極程度。取值范圍為0-100,值越大,越積極使用swap,更傾向於回收匿名頁;值越小,越消極使用swap,更傾向於回收文件頁。
即使swap設置為0,當剩餘內存+文件頁小於頁高閾值( pages_high )的時候,也會發生swap

Linux有專門的內核線程 kswapd0 定期回收內存,為了衡量內存的使用情況, kswapd0 定義了三個內存閾值:頁最小閾值 pages_min 、頁低閾值 pages_low 和頁高閾值 pages_high ,剩餘內存使用 pages_free 表示。
kswapd0 定期掃描內存的使用情況,並根據剩餘內存和這三個閾值的關系進行內存回收操作。
pages_free < pages_min :進程可用內存耗盡,只有內核才可以分配內存
pages_min < pages_free < pages_low :內存壓力較大, kswapd0 會執行內存回收,直到剩餘內存大於高閾值為止
pages_low < pages_free < pages_high :內存有一定壓力,但還可以滿足新內存請求
pages_free > pages_high :剩餘內存較多,沒有內存壓力。
這些閾值可以通過內核選項來 proc/sys/vm/min_free_kbytes 間接設置。 min_free_kbytes 設置了頁最小閾值( pages_min )。 pages_low=pages_min*5/4 , pages_high=pages_min*3/2

/etc/security/limits.conf
通過這個配置文件可以對每個登錄的會話進行限制,這種限制不是全局的,也不是永久的,只在會話期間起作用。
通常,對單個用戶的限制優先順序高於對用戶組的限制

可以使用以下方式限制內存使用

語法
<domain> <type> <item> <value>

詳見 limits.conf(5) - Linux man page

/proc/sys/vm/overcommit_memory 控制內核使用虛擬內存的模式,可以設置為以下值

閱讀全文

與linuxswap為0相關的資料

熱點內容
at89c51編程器 瀏覽:341
項目經理叫醒程序員 瀏覽:342
autocad旋轉命令 瀏覽:660
手機版wpsoffice怎麼打包文件夾 瀏覽:579
在成都學車用什麼app 瀏覽:818
grep命令管道 瀏覽:426
java修改重啟 瀏覽:567
單片機供電方案 瀏覽:770
airpodspro一代怎麼連接安卓 瀏覽:218
豌豆莢app上有什麼游戲 瀏覽:283
公路商店app標簽選什麼 瀏覽:338
linuxoracle命令行登錄 瀏覽:227
android深度休眠 瀏覽:172
php微信開發例子 瀏覽:845
醫得app登錄密碼是什麼 瀏覽:142
spring開發伺服器地址 瀏覽:411
伺服器上如何查看伺服器的埠 瀏覽:678
單片機伺服器編譯 瀏覽:770
單口usb列印機伺服器是什麼 瀏覽:859
戰地五開伺服器要什麼條件 瀏覽:956