Momory
points
内存超载
使用swap,整个OS性能下降
缓存过多,进程结束后不释放内存
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期 清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的MP3,但U盘的灯 没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟
修改/etc/sysctl.conf中的vm.swappiness右边的数字可以在下次开机时调节swap使用策略。该数字范围是0~100,数字越大越倾向于使用swap。默认为60,可以改一下试试。–两者都是RAM中的数据
buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的
Troubleshooting steps
#overall check usage memory
free -mh
#overall check usage
sar -r 2 2
#check swap Report swap space utilization statistics
sar -S 2 2
# Report swapping statistics
sar -W 2 2
#check memory info
cat /proc/meminfo
# clean swap
sync
echo 3 > /proc/sys/vm/drop_caches
#check swap use thread value
sysctl -q vm.swappiness
# swap off/on
swapoff
swapon
free
free -mh
root@shubuntu ~ free -mh ✔ ⚡ 25 05:08:08
total used free shared buff/cache available
Mem: 912M 110M 92M 4.3M 708M 781M
Swap: 0B 0B 0B
* free:读取自文件:/proc/meminfo
* buffer存放要写回到磁盘的数据
* cache存放从磁盘上读出的数据
* -buffers/cache,表示一个应用程序认为系统被用掉多少内存;被程序实实在在占用的内存
* +buffers/cache,表示一个应用程序认为系统还有多少内存;可用的内存数。
Sar
sar -r 2
root@shubuntu ~ sar -r 2 ✔ ⚡ 26 05:34:34
Linux 4.15.0-1031-raspi2 (shubuntu) 07/18/19 _aarch64_ (4 CPU)
05:35:04 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
05:35:06 95052 800684 838888 89.82 111368 485472 397660 42.58 458196 181020 48
05:35:08 94924 800556 839016 89.84 111376 485472 397660 42.58 458204 181020 40
05:35:10 94892 800524 839048 89.84 111376 485472 397660 42.58 458204 181020 40
kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
%memused:物理内存使用率,这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
sar -S 2 # check swap
root@shubuntu ~ sar -S 2 SIGINT(2) ↵ ⚡ 30 05:48:05
Linux 4.15.0-1031-raspi2 (shubuntu) 07/18/19 _aarch64_ (4 CPU)
05:49:55 kbswpfree kbswpused %swpused kbswpcad %swpcad
05:49:57 0 0 0.00 0 0.00
05:49:59 0 0 0.00 0 0.00
05:50:01 0 0 0.00 0 0.00
sar -W 2 2
root@shubuntu ~ sar -W 2 2 127 ↵ ⚡ 52 09:13:57
Linux 4.15.0-1031-raspi2 (shubuntu) 07/19/19 _aarch64_ (4 CPU)
09:25:18 pswpin/s pswpout/s
09:25:20 0.00 0.00
09:25:22 0.00 0.00
Average: 0.00 0.00
pswpout/s Total number of swap pages the system brought out per second.
pswpin/s Total number of swap pages the system brought in per second.
VMstat
root@shubuntu ~ vmstat 2 ✔ ⚡ 28 05:45:14
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 94892 111444 613880 0 0 0 2 10 13 0 0 100 0 0
0 0 0 94860 111444 613880 0 0 0 0 8321 62 0 0 100 0 0
0 0 0 94860 111444 613880 0 0 0 0 8314 50 0 0 100 0 0
0 0 0 94860 111452 613872 0 0 0 18 8397 119 0 0 100 0 0
0 0 0 94892 111452 613876 0 0 0 0 8315 54 0 0 100 0 0
* r:等待运行的进程数,r<5表示状态好
* b:处于非中断睡眠状态的进程数,b≈0表示状态好
* id:CPU闲置时间
* 如果r经常大于3或4,且id经常小于50,表示CPU负荷很重
Check system swap usage thread value
sysctl -q vm.swappiness
清理缓存
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free reclaimable slab objects (includes dentries and inodes):
echo 2 > /proc/sys/vm/drop_caches
To free slab objects and pagecache:
echo 3 > /proc/sys/vm/drop_caches
Reference :
Last updated
Was this helpful?