Linux 释放cpugpu内存、显存和硬盘
free -m
free -mtotal used free shared buff/cache available Mem: 128831 15666 23617 406 89547 111448 Swap: 130986 130977 9
total 內存總數
used 已經使用的內存數
free 空閑的內存數
shared 多個進程共享的內存總額
buffers buffer Cache和cached Page Cache 磁盤緩存的大小
-buffers/cache (已用)的內存數:used - buffers - cached
+buffers/cache(可用)的內存數:free + buffers + cached
可用的memory=free memory+buffers+cached
通常情況下buff/cache 占據內存特別大
sudo apt-get install sysinfo sysinfo #查看系統信息 sudo apt-get install hardinfo hardinfo #查看硬件信息
為什么 buffer/cache 會占用這么多的內存?
Cache:緩存區,是高速緩存,是位于CPU和主內存之間的容量較小但速度很快的存儲器,因為CPU的速度遠遠高于主內存的速度,CPU從內存中讀取數據需等待很長的時間,而 Cache保存著CPU剛用過的數據或循環使用的部分數據,這時從Cache中讀取數據會更快,減少了CPU等待的時間,提高了系統的性能。
Cache并不是緩存文件的,而是緩存塊的(塊是I/O讀寫最小的單元);Cache一般會用在I/O請求上,如果多個進程要訪問某個文件,可以把此文件讀入Cache中,這樣下一個進程獲取CPU控制權并訪問此文件直接從Cache讀取,提高系統性能。
Buffer:緩沖區,用于存儲速度不同步的設備或優先級不同的設備之間傳輸數據;通過buffer可以減少進程間通信需要等待的時間,當存儲速度快的設備與存儲速度慢的設備進行通信時,存儲慢的數據先把數據存放到buffer,達到一定程度存儲快的設備再讀取buffer的數據,在此期間存儲快的設備CPU可以干其他的事情。
Buffer:一般是用在寫入磁盤的,例如:某個進程要求多個字段被讀入,當所有要求的字段被讀入之前已經讀入的字段會先放到buffer中。
buffer/cache使用過高通常是程序頻繁存取文件后,物理內存會很快被用光,
當程序結束后,內存不會被正常釋放,而是成為cache狀態.
linux可用內存足夠為什么還用swap?
內核參數 swappiness 的值的大小,決定著linux何時開始使用swap。
swappiness=0 時表示盡最大可能的使用物理內存以避免換入到swap. swappiness=100 時候表示最大限度使用swap分區,并且把內存上的數據及時的換出到swap空間里面. 此值linux的基本默認設置為60,不同發行版可能略微不同.查看命令具體如下:
cat /proc/sys/vm/swappiness 60意思就是說,內存在使用率到40%(100%-60%)的時候,系統就會開始出現有交換分區的使用。
內存的速度會比磁盤快很多,這樣會加大系統io,同時造的成大量頁的換進換出,嚴重影響系統的性能,所以在操作系統層面,要盡可能使用內存,對該參數進行調整。
調整值
sysctl vm.swappiness=10 vm.swappiness = 10cat /proc/sys/vm/swappiness 10重啟依舊生效,需要在/etc/sysctl.conf修改:
cat /etc/sysctl.conf vm.swappiness = 10sysctl -pswap清理
sync #將內存緩沖區數據立刻同步到磁盤 swapoff -a # 關閉所有的swap swapon -a #啟用所有swap
注意:這樣清理有個前提條件,空閑的內存必須比已經使用的swap空間大
cache清理
1.free -m cat /proc/meminfo 2.sudo -i 3.cat /proc/sys/vm/drop_caches 4.sync #運行sync將dirty的內容寫回硬盤,同步一下數據。將所有正在內存中的緩沖區寫到磁盤中,其中包括已經修改的文件inode、已延遲的塊I/O以及讀寫映射文件,從而確保文件系統的完整性 ----------------------------------------- ----------------------------------------- #通過修改proc系統的drop_caches清理free的cache #Freeing Up the Page Cache #釋放頁緩存 5.echo 1 > /proc/sys/vm/drop_caches #free pagecache 6.sync #運行sync將dirty的內容寫回硬盤,同步一下數據。將所有正在內存中的緩沖區寫到磁盤中,其中包括已經修改的文件inode、已延遲的塊I/O以及讀寫映射文件,從而確保文件系統的完整性 #Freeing Up the Dentries and Inodes 釋放dentries和inodes 7.echo 2 > /proc/sys/vm/drop_caches # free dentries and inodes 8.sync ----------------------------------------- ----------------------------------------- #Freeing Up the Page Cache, Dentries and Inodes 釋放所有緩存 9.echo 3 > /proc/sys/vm/drop_caches 10.cat /proc/sys/vm/drop_caches 11. free -m
每次可以變換數字。
長命令
sudo su # 進入root賬號下 sudo su -c 'free -m && sync && echo 3 > /proc/sys/vm/drop_caches && sync && free -m'0 – 不釋放 1 – 釋放頁緩存 2 – 釋放dentries和inodes 3 – 釋放所有緩存
內存釋放腳本
新建freemen.sh
cd root mkdir toolsetting cd toolsetting gedit freemen.sh添加以下內容
#!/bin/bash used=`free -m | awk 'NR==2' | awk '{print $3}'` free=`free -m | awk 'NR==2' | awk '{print $4}'`echo "===========================" >> /var/log/mem.log date >> /var/log/mem.log echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.logsync && echo 1 > /proc/sys/vm/drop_caches sync && echo 2 > /proc/sys/vm/drop_caches sync && echo 3 > /proc/sys/vm/drop_caches echo "OK" >> /var/log/mem.log echo "Not required" >> /var/log/mem.log將腳本添加到crond任務,定時執行。
crontab -e #添加定時任務添加下列命令,每隔2分鐘執行一次
*/2 * * * * root /root/toolsetting/freemem.sh備注:Crontab第一道第五個字段的整數取值范圍及意義是:
0~59 表示分
1~23 表示小時
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
修改腳本的權限
chmod 777 /root/toolsetting/freemem.sh啟動定時服務
service crond stop service crond start查看定時任務
crontab -l查看結果
tail -f /var/log/mem.log =========================== 2017年 05月 10日 星期三 09:02:01 CST Memory usage | [Use:15729MB][Free:99379MB] OK Not required =========================== 2017年 05月 10日 星期三 09:03:01 CST Memory usage | [Use:15733MB][Free:111141MB] OK Not required =========================== 2017年 05月 10日 星期三 09:04:01 CST Memory usage | [Use:15738MB][Free:110174MB] OK Not required =========================== 2017年 05月 10日 星期三 09:05:02 CST Memory usage | [Use:15742MB][Free:111135MB] OK Not required =========================== 2017年 05月 10日 星期三 09:06:01 CST Memory usage | [Use:15758MB][Free:111117MB] OK Not required =========================== 2017年 05月 10日 星期三 09:07:01 CST Memory usage | [Use:15772MB][Free:110138MB] OK Not required釋放硬盤示例如下
在安裝好這一連串軟件之后,或許想要清理一下系統來釋放一點硬盤上的空間,輸入以下命令即可
sudo apt-get -y autoremove sudo apt-get -y autoclean sudo apt-get -y cleangpu
#查看顯卡性能測試
sudo apt install mesa-utils glxgears # 每5s的幀數方法一
#lspci命令用于顯示當前主機的所有PCI總線信息,以及所有已連接的PCI設備信息 #lspci 只是枚舉使用PCI (包括PCIE )總線上的設備; 如果一個設備沒有位于PCI 總線上,命令是不會列出來的 lspci | grep -i vga #查看顯卡信息 lspci | grep -i nvidia #查看nvidia顯卡信息 lspci | egrep 'VGA|3D' #顯示所有顯卡信息 nvidia-smi #查看gpu使用情況 nvidia-settings #設置GPU參數,比如風扇運轉速度 watch -n 1 nvidia-smi #實時顯示,配合watch命令, 讓一秒刷新一次 nvidia-smi -L # list all available NVIDIA devices sudo fuser -v /dev/nvidia* #查找占用GPU資源的PID sudo kill -9 ***(PID) # 解除顯存占用方法二
rmmod nvidia #unload the nvidia driver modprobe nvidia #reloading給顯卡降溫
ubuntu16.04 Nvidia 顯卡的風扇調速及startx的后果
參考主頁
https://linux.cn/article-5573-3.html
http://blog.csdn.net/kongxx/article/details/51678487
buff/cache 內容釋放
linux可用內存足夠為什么還用swap
Crontab 實現定時執行一個shell腳本(以每隔十分鐘執行一次為例)
總結
以上是生活随笔為你收集整理的Linux 释放cpugpu内存、显存和硬盘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建行龙卡e付卡能刷POS机吗?一招教你搞
- 下一篇: Ubuntu15.04 64位安装The