在Linux下查看内存信息【free命令】和内存频率【dmidecode命令】-- Ubuntu
free 命令用来显示系统内存状态,包括系统物理内存、虚拟内存(swap 交换分区)、共享内存和系统缓存的使用情况。如下图和表total系统总的物理内存大小used已被使用的物理内存大小free空闲的内存数shared多个进程共享的内存总额buff/cache磁盘缓存的大小,被buffer和cache使用的物理内存大小available还可以被应用程序使用的物理内存大小,计算方法Cache(高速缓
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 | 磁盘缓存的大小,被 buffer 和 cache 使用的物理内存大小 |
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 | 程序数据段和用户态的栈的大小 |
谢谢点赞关注哈!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)