博客 / 詳情

返回

Linux內存修改

        虛擬內存是為了滿足物理內存不足採用的策略,利用磁盤空間虛擬出一塊邏輯內存,用作虛擬內存的空間也就是交換分區。作為物理內存的擴展,Linux會在物理內存不足時,使用交換分區的邏輯內存,內核會把暫時不用的內存塊信息寫到交換空間,這樣物理內存就得到了釋放,這塊兒內存就可以用於其他目的,而需要用到這些內容的時候,這些信息就會被重新從交換分區讀入物理內存。Linux的內存管理採用的是分頁存取機制,為了保證物理內存得到充分的利用,內核會在適當的時間把物理內存中不經常使用的數據塊兒自動交換到虛擬內存中,而將充分使用的信息保留到物理內存中。
注:一般在各個雲產商購買的雲服務器都是不會給我們添加虛擬內存。
        例如通過阿里雲安裝的系統,不會自動給我們分配Swap虛擬內存空間;Swap分區或虛擬內存文件,是在系統物理內存不夠用的時候,由系統內存管理程序將那些很長時間沒有操作內存數據,臨時保存到Swap分區虛擬內存文件中,以提高可用內存額度的一種機制。當那些程序要再次重新運行時,會再從Swap分區或虛擬內存文件中恢復之前保存的數據到內存中。
一開始用 free -m 和 df -h查看現在內存的情況
在這裏插入圖片描述
        創建 swap 分區,輸入指令: dd if=/dev/zero of=/data/swap bs=512 count=4096000 (因為我的內存是2G,所以虛擬內存設為內存的1~2倍,則2048 * 2 = 4096)
此處的命令創建 swap 大小為bs*count=4096000(4G),如下圖:
在這裏插入圖片描述
        通過 mkswap 命令將上面新建出的文件做成 swap 分區, 指令: mkswap /opt/swap
在這裏插入圖片描述
        查看內核參數 vm.swappiness 中的數值是否為0,如果為0則根據實際需要調整成

查看指令:cat /proc/sys/vm/swappiness
調整指令:sysctl -w vm.swappiness=60 

此處默認為0,根據需要調整為60.(我這裏設置的是60,因為物理內存比較小,如果大量使用swap空間影響IO性能。還是要充分壓榨物理內存。)
在這裏插入圖片描述
         輸入 swapon /data/swap
在這裏插入圖片描述
        輸入 echo "/data/swap swap swap defaults 0 0" >> /etc/fstab
(雖然現在已經生效,但是等下次服務器重啓之後。該swap虛擬磁盤會失效,為保證永久生效,還需往/etc/fstab文件添加分區信息:)
在這裏插入圖片描述
        再次使用 cat /proc/swaps 查看swap分區是否啓動, 如下圖已經為啓動成功.
在這裏插入圖片描述
        再次用 free -m 和 df -h 查看磁盤情況,可以看到 swap 交換區已經建立,磁盤相比一開始的容量減少了1.9G
在這裏插入圖片描述
        PS:相關操作會導致額外的IO開銷,特別是,如果內存使用率已經非常高,而同時IO性能也不是很好的情況下,該機制其實會起到相反的效果:不僅系統性能提升較小(因為內存使用率已經非常高了),而且由於頻繁的內存到Swap的切換操作,會導致產生大量額外的IO操作,導致IO性能進一步降低,最終反而降低了系統總體性能。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.