查看内存情况:
1、top命令
2、free命令: 说明:
1882048 total:总的可用内存大小,以kb为单位,换算为M等于1882048/1024=1837M=1.83G
92408 free:可用内存大小,换算为M等于92408/1024=90M(为什么只有这么小?别急,看完下面就明白了)
584688 used:已用内存大小,换算为M等于584688/1024=570M
1204952 buff/cache:系统预分配的可用内存容量,换算为M等于1204952/1024=1176M
系统可用内存实际上是buff/cache+free=1204952+92408=1297360/1024=1266M=1.26G
内存使用率计算:已用大小*100/总内存大小=584688*100/1882048=30%
使用命令计算内存使用率:
free -k | sed -n '2p' | awk '{print "total: "$2" KB, used: "$3" KB,used percent: "$3*100/$2"%"}'
第二种计算方法:
执行命令:以M显示
显示如图:cat /proc/meminfo | awk '{print $1,$2/1024" MB"}'|column -t
[root@blog_tag_gg ~]# cat /proc/meminfo | awk '{print $1,$2/1024" MB"}'|column -t
MemTotal: 1837.94 MB
MemFree: 86.832 MB
MemAvailable: 1035.77 MB
Buffers: 56.5781 MB
Cached: 988.141 MB
SwapCached: 12.7891 MB
Active: 769.344 MB
Inactive: 733.23 MB
以G显示:
cat /proc/meminfo | awk '{print $1,$2/(1024*1024)" GB"}'|column -t
根据上面信息计算内存使用率(相比更准确一些)
公式:
(MemTotal-MemAvailable)/MemTotal*100=内存使用率
查看系统物理内存大小(1837.94 -1035.77)/1837.94 *100=43.6%
问:为什么我2G内存,可用内存只有1.7或者1.8G左右?[root@blog_tag_gg ~]# dmidecode|grep Size
Runtime Size: 96 kB
ROM Size: 64 kB
Size: 2048 MB
Range Size: 2 GB
答:部分内存被内核划分到其他用途了,这个是linux系统内核的分配机制。
问:ECS各任务内存加起来,与控制台显示的内存使用率不一致
答:top中不会包含一些系统占用内存和cache缓存的占用统计,因为这些内存不被具体的分配到某一些进程使用中。
具体的系统内存使用率可以使用命令:cat /proc/meminfo | awk '{print $1,$2/1024" MB"}'|column -t 进行分析。
另外,云监控对于内存的采集方式不同于系统内的free和top直接展示具有实时性,所以其中肯定会存在一些差距。
从准确性来看,两者没有太大的区别,请以占用高的统计为准,这表示了您的系统内存在某一个时间内的使用率,也包含了cache未来得及释放的缓存。
使用htop命令查看内存使用情况:
htop命令可以直观的看到内存使用情况以及进程占用内存情况,比top命令更友好一些,执行命令后如图 说明:
1、Mem选项:使用内存/可用内存,如上图,654/1.79G 则表示可用内存为1.79G,已使用654M。
2、可鼠标点击CPU%或者MEM%会根据内存或cpu使用高低排序。
查看占用内存最大的前20个进程可使用如下命令
ps auxw|head -1;ps auxw|sort -rn -k4|head -20
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
文章评论 本文章有个评论