linux(二)進程的內(nèi)存

一、虛擬內(nèi)存swap

swap內(nèi)存是用來拓展現(xiàn)有的內(nèi)存,當運行時內(nèi)存不足的時候,使用物理內(nèi)存來拓展。有兩種存儲方式,(1)swapfile(2)swap分區(qū)

使用交換文件

這種方式適用于,已經(jīng)裝完系統(tǒng)但是沒有多余分區(qū)可以用來做swap分區(qū)。

  1. 使用 swapon -s來查看虛擬內(nèi)存使用情況,free -h也可以


    image.png
  2. 創(chuàng)建一個大小為2GB的文件用于swap:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048000
# 設(shè)置此文件的權(quán)限,防止內(nèi)存被非法讀寫:
sudo chmod 600 /swapfile
  1. 將此文件制作為swap文件:
sudo mkswap /swapfile
  1. 開啟swap:
sudo swapon /swapfile
  1. 開機自動啟用swap空間
#vim編輯/etc/fstab,添加下面這一句
/swapfile none swap default 0 0

使用交換分區(qū)

mkswap /dev/sda2
swapon /dev/sda2
# 在/etc/fstab中添加下面這一句
/dev/sda2 none swap default 0 0

啟用swappiness

swappiness表示內(nèi)存使用到什么程度開始使用swap,值為30則表示 使用到70的RAM的時候開始使用swap空間

之前遇到過一次內(nèi)存爆滿,但是swap沒使用,反而io賊高,,后來發(fā)現(xiàn)是開了swap但是沒有啟用swappiness

  1. 查看一下當前的swappiness
cat /proc/sys/vm/swappiness
30
  1. 臨時調(diào)整一下
sysctl vm.swappiness=40
  1. 想要永久調(diào)整得寫入配置
vim /etc/sysctl.conf
# 輸入
vm.swappiness = 40
  1. 使得其生效
sudo sysctl -p

二、共享內(nèi)存shm

共享內(nèi)存是進程間通信中最簡單的方式之一。

共享內(nèi)存是系統(tǒng)出于多個進程之間通訊的考慮,而預(yù)留的的一塊內(nèi)存區(qū)。

共享內(nèi)存允許兩個或更多進程訪問同一塊內(nèi)存,就如同 malloc() 函數(shù)向不同進程返回了指向同一個物理內(nèi)存區(qū)域的指針。當一個進程改變了這塊地址中的內(nèi)容的時候,其它進程都會察覺到這個更改

  1. shm的一些點
  • /dev/shm 一般是這個掛載點,也可能是tmpfs
  • 在docker中使用--shm-size命令掛載的分區(qū)是/dev/shm,可以在docker的命令行中使用df -h命令查看;同時也能看到本機的物理機器上的tmpfs分區(qū)


    image.png
  1. 遇到的問題
  • 可以看見shm默認大小只有64m,這會有一些問題,比如:我在docker中使用chrome,會因為這個內(nèi)存不足而崩潰
  1. 解決方式:
  • Option 1:
    Run chrome with --disable-dev-shm-usage

  • Option 2:
    Set /dev/shm size to a reasonable amount docker run -it --shm-size=1g replacing 1g with whatever amount you want.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容