free -m
free -m
total 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 = 10
cat /proc/sys/vm/swappiness
10
重启依旧生效,需要在/etc/sysctl.conf修改:
cat /etc/sysctl.conf
vm.swappiness = 10
sysctl -p
swap清理
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.log
sync && 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 clean
gpu
#查看显卡性能测试
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脚本(以每隔十分钟执行一次为例)