主要内容
1、swap 开关,创建
2、buffer 清空/释放,和cache 的区别与联系
3、内存条相关信息dmidecode
4、内存使用free 和/proc/meminfo
5、 进程使用内存pmap
一、动态指标
swap
关闭swapoff -a
开启swapon -a
swap 进出可通过dstat命令查看
yum install dstat
查哪些进程用了swap
for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head
后台直接关闭swap
sudo swapoff -a &
保证内存够用,再关闭swap,会从buffer里面用
会自己关,慢慢关。这是临时关闭,永久关闭需要改配置文件
要是机械硬盘,用到swap 会很卡,要是有大的命令,IO Util 会到100%
前台清空swap
swapoff -a && swapon -a
如果已经使用了Swap,且当前清空下+buffers/cache还有空间,在执行 swapoff -a操作时,会触发把Swap中的内容交换到内存中,数据不会丢失。
创建swap
- 创建文件/var/swapfile,bs*count 是文件大下 4GB dd if=/dev/zero of=/var/swapfile bs=1M count=4096
- 格式化为分区文件mkswap /var/swapfile
- 启用 swapon /var/swapfile
- 查看是否创建成功 free -h
- 设置开机自启vim /etc/fstab 增加/var/swapfile swap swap defaults 0 0
释放buffer
清空cache buffer
sync
echo 1 > /proc/sys/vm/drop_caches
sync
echo 2 > /proc/sys/vm/drop_caches
sync
echo 3 > /proc/sys/vm/drop_caches
cat /proc/sys/vm/drop_caches
默认是0
sync:将所有未写的系统缓冲区写到磁盘中,包含已修改的i-node、已延迟的块I/O和读写映射文件
1:清空pagecache
2:清除回收slab分配器中的对象(包括目录项dentries缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
3:清空pagecache、slab(dentries和inodes)
二、内存信息
内存条相关信息
-
容量:存储容量,通常以 GB 为单位,比如 4GB、8GB、16GB 等。
-
类型:例如 DDR3、DDR4、LPDDR3 等。
- DDR:Double Data Rate 的缩写,是第一代双倍数据速率的内存条,其时钟频率为 100-200 MHz。
- DDR2:第二代双倍数据速率的内存条,其时钟频率为 400-800 MHz。
- DDR3:第三代双倍数据速率的内存条,其时钟频率为 800-1600 MHz。
- DDR4:第四代双倍数据速率的内存条,其时钟频率为 2133-4266 MHz。
- DDR5:即将推出的第五代双倍数据速率的内存条,其时钟频率预计为 4800-6400 MHz。
-
频率:工作频率,通常以 MHz 为单位,例如 2133MHz、2400MHz、3200MHz 等。
-
时序:表示内存条的访问速度,通常是由一组数字来表示的,例如 CL14-16-16-35、CL15-15-15-35 等,其中 CL 表示 CAS Latency,即内存延迟时间。
-
电压:表示内存条的电压,通常以 V 为单位,例如 1.2V、1.35V 等。
需要注意的是,不同的内存条规格不一定兼容,需要根据主板和 CPU 的支持规格选择合适的内存条。
dmidecode
-
内存槽及内存条容量
dmidecode |grep -A16 “Memory Device”
dmidecode|grep -P -A5 “Memory\s+Device”|grep Size|grep -v Range
grep -P是grep命令的一个选项,表示使用Perl兼容的正则表达式进行匹配。
例如使用\d匹配数字,\w匹配字母数字字符,\s 匹配任何空白字符,包括空格、制表符、换行符等
-
查看内存条工作频率
dmidecode|grep -A16 “Memory Device”|grep ‘Speed’
-
机器内存最大容量
dmidecode|grep -P ‘Maximum\s+Capacity’
cat /proc/meminfo
free -h
total:总内存大小。
used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。
free:空闲的内存大小。
shared:进程间共享内存(一般不会用,可以忽略)。
buffers:“缓冲” 内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。buffers是将要写入硬盘中的数据缓存。
cache:内存中读完缓存起来内容占的大小(为了下次查询更快返回)。cache是从硬盘或者存储设备读进计算机后缓存在内存中的数据。
Swap:即虚拟内存,硬盘上交换分区的使用大小。当物理内存不够用的时候,就要释放掉一部分空间,以供当前运行程序使用。
buffer&cache
Cache(缓存),为了调高CPU和内存之间数据交换而设计,
Buffer(缓冲)为了提高内存和硬盘(或其他I/O设备的数据交换而设计)。
cache和buffer都是为了解决速度不对等的问题。
page cache用来缓存文件数据,buffer cache用来缓存磁盘数据
服务器内存故障灯
内存故障可能会导致频繁重启
pmap
pmap -p $pid
显示一个或者多个进程使用内存情况