在Linux下查看内存信息【free命令】和内存频率【dmidecode命令】-- Ubuntu


1、内存信息 – free命令

1.1、free命令总结【初步使用】

free 命令用来显示系统内存状态,包括系统物理内存、虚拟内存(swap 交换分区)、共享内存和系统缓存的使用情况。如下图和表

hwc@hwc:~$ free
              total        used        free      shared  buff/cache   available
Mem:        3070896      173012       84452        2872     2813432     2703516
Swap:       4074492        4096     4070396
total系统总的物理内存大小
used已被使用的物理内存大小
free空闲的内存数
shared多个进程共享的内存总额
buff/cache磁盘缓存的大小,被 buffercache 使用的物理内存大小
available还可以被应用程序使用的物理内存大小,计算方法 available = free + buffer + cache

1.2、有些系统有“-/+ buffers/cache:”字段

[root@scs-2 tmp]# free
             total       used       free     shared    buffers     cached
Mem:       332074      318546      13528          0     110652    2668236
-/+ buffers/cache:     471116    2795064
Swap:      2048276      80160    1968116

其中要说明一下的是:
第二行Mem中的used/free与第三行-/+ buffers/cache)中used/free的区别:
其中:
(1)Mem行是从操作系统的来看,buffers/cached 都是属于被使用,所以他的可用内存是13528KB,已用内存是318546KB。

(2)-/+ buffers/cache行所指的是从应用角度来看,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收,所以可用内存=free+buffers+cached。

(3)Swap行说明:当可用内存少于额定值的时候,就会开始进行交换,交换区的内存将被使用。

1.3、free命令参数【加深使用】

【1】
free -b:以bytes为单位来显示内存的信息;
free -k:以KB为单位来显示内存的信息;
free -m:以 MB 为单位,显示内存使用情况;
free -g:以G为单位来显示内存的信息;
【2】
free -h:-h与其他命令最大不同是,-h选项会在数字后面加上适于人类可读的单位。

hwc@hwc:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           2.9G        169M         82M        2.8M        2.7G        2.6G
Swap:          3.9G        4.0M        3.9G

【3】
free -s N:表示每隔N秒打印一次内存信息,直到用ctrl+c结束。
free -c N:表示重复打印内存信息N次。
【4】
free -hs 3: 以人类可读的方式,每隔3s打印一次内存信息,直到ctrl+c结束。
【5】
free -t:显示linux的全部内存。
【6】
free -l:显示高低内存的利用率。
【7】
free -V:显示版本信息。

1.4、cache 和 buffer 的简介和区别(知识补充)

1.4.1、cache 和 buffer 的区别

Cache(高速缓存)是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。
Buffer(缓冲区)一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

1.4.2、缓存 和 缓冲 的另一角度理解

缓存是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
缓冲是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写如磁盘),也可以通过sync命令手动清空缓冲。

1.4.3、Free中的buffer和cache:

buffer:一般作为是块设备的读写缓冲区。
cache:一般作为page cache的文件系统的cache。

2、内存频率 – dmidecode命令

2.1、dmidecode命令安装

Dmidecode 在主流的 Linux 发行版中都可以找到,只需通过所用发行版的包管理器安装即可,如:
apt-get install -y dmidecode
或者
yum install -y dmidecode
或者使用官方包安装 – Dmidecode源码包下载地址:http://download.savannah.GNU.org/releases/dmidecode/

2.2、dmidecode命令简单使用

#以下命令得在root用户下执行才有输出
【1】查看内存详细信息:
dmidecode -t memory
【2】查看CPU详细信息:
dmidecode -t processor
【3】查看内存频率:
dmidecode |grep "Speed"
【4】支持最大的内存容量:
dmidecode |grep "Maximum Capacity"

3、具体进程的内存使用信息

3.1、查看/proc/kcore文件的大小(内存镜像):

hwc@hwc:~/phytium/dpdk$ ll -h /proc/kcore 
-r-------- 1 root root 128T Feb 19 16:25 /proc/kcore

3.2、测量一个进程占用了多少内存

/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
【1】机器的详细内存使用信息:

/proc/meminfo

【2】pid为进程号,显示当前进程所占用的虚拟地址:

/proc/pid/maps

【3】进程所占用的内存

/proc/pid/statm

例如:

[root@localhost ~]# cat /proc/self/statm
1581 212 197 8 0 111 0

参数解释:

类型参数解释
Size任务虚拟地址空间的大小
Resident应用程序正在使用的物理内存的大小
shared共享页数
Trs程序所拥有的可执行虚拟内存的大小
Lrs被映像到任务的虚拟内存空间的库的大小
Drs程序数据段和用户态的栈的大小

谢谢点赞关注哈!

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值