linux查看内存占用情况

您所在的位置:网站首页 linux查看空间使用情况 linux查看内存占用情况

linux查看内存占用情况

#linux查看内存占用情况| 来源: 网络整理| 查看: 265

Windows及带有GUI的Linux操作系统中,我们通常可以使用UI查看系统内存及空间使用情况,但是对于开发或者运维人员来说,经常要工作在没有GUI的Linux的服务器,命令行能比GUI提供更多功能和灵活性。

特别当我们的系统中某个应用程序异常,或者系统占用异常,抑或linux开发需要内存裁剪时,我们就要了解下系统内存及空间使用情况,就需要掌握几个常用的查看工具。

常用命令

查看内存使用情况:free 显示进程信息(包括CPU、内存使用等信息):top、ps 查看驱动占用内存:lsmod

1查看系统内存free

free命令可以显示当前系统未使用的和已使用的内存大小,还可以显示被内核使用的内存缓冲区。在终端中输入free(参数稍后说明)可以看到我们服务器内存情况,如下: 在这里插入图片描述

1.1详细说明如下:

Mem 内存的使用信息 Swap 交换空间的使用信息

total:总计物理内存的大小。 used:已使用物理内存。 free:可用物理内存。 shared:多个进程共享的内存总额。 buffers/cached:缓存缓冲使用物理内存大小。 available:还可以被应用程序使用的物理内存大小。

1.2各物理内存之间的关系

total = used + free + buffer/cache avaiable = free + buffer/cache(一般来说是这样,个人电脑是这样,但服务器或者公共云普通用户有部分buffer/cache是用不了的就会有avaiable < free + buffer/cache)

1.3free与available的区别

free是正在未被使用的内存 available是应用程序认为可用的内存 Linux为了提升读写性能,消耗一部分内存资源作为缓存或者缓冲内存,在内核看来这部分buffer/cache属于已被使用的内存;在应用程序申请内存,而free内存不够时,就会让内核回收buffer和cache来满足应用程序的内存需求。

1.4buff和cache的区别

buffers和cache是有一定区别的: A buffer is something that has yet to be “written” to disk.  —buffer 写缓存,数据存储时,先保存到磁盘缓冲区,然后再写入到永久空间 A cache is something that has been “reed” from the disk adn stored for later use. --cache 读缓存,数据从磁盘读出后,暂留在缓冲区,预备程序接下来的使用。 更为形象的描述,请参考: https://www.cnblogs.com/M18-BlankBox/p/5326484.html

1.5free参数说明

free命令下显示的单位是k,可以在free后面加上-m(即free -m)显示单位为Mb,如下图: 在这里插入图片描述 可以通过free --help查看free的详细命令: 在这里插入图片描述

通过free -h可以自动匹配适合人阅读习惯的单位,其中h是humanity之意。

ps: 第3行swap为交换分区,类似windows系统中的虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。

2 查看进程占用内存

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令可以有效的发现系统的缺陷出在哪里,如内存不够、CPU处理能力不够、IO读写过高等。通过top命令所提供的互动式界面,用热键可以管理。 相关语法:top -X -b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i:设置间隔时间; -u:指定用户名; -p:指定进程; -n:循环显示的次数。 在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。交互命令如下: h:显示帮助画面,给出一些简短的命令总结说明; k:终止一个进程; i:忽略闲置和僵死进程,这是一个开关式命令; q:退出程序; r:重新安排一个进程的优先级别; S:切换到累计模式; s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s; f或者F:从当前显示中添加或者删除项目; o或者O:改变显示项目的顺序; l:切换显示平均负载和启动时间信息; m:切换显示内存信息; t:切换显示进程和CPU状态信息; c:切换显示命令名称和完整命令行; M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序; T:根据时间/累计时间进行排序; w:将当前设置写入~/.toprc文件中。

直接在终端中输入top指令,可以看到如下界面: 在这里插入图片描述

2.1 top命令的第一到第五行的详细说明如下:

top - 10:14:31 当前系统时间 up 3 days, 22:36 系统已经运行了3天22h36min 1 users 共有1个用户为登录状态 load average: 0.57, 0.74, 0.65 系统负载,即任务队列的平均长度,load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。 注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

Tasks: 322 total 总进程数 2 running 正在运行的进程数 320 sleeping 睡眠的进程数 0 stopped 停止的进程数 0 zombie 冻结进程数 %Cpu(s): 2.7 us, 用户空间占用CPU百分比(用户态使用CPU占比) 2.7 sy 内核空间占用CPU百分比 (系统态使用CPU占比) 0.0 ni 用做nice加权的进程分配的用户态cpu时间比 94.0 id 空闲的cpu时间比 0.0 wa IO wait ,cpu等待磁盘写入完成时间 0.0 hi Hardware IRQ,硬中断消耗时间 0.0 si Software IRQ,软中断消耗时间 0.7 st 被hypervisor(管理程序,一般为服务器或者虚拟机)偷取时间 MiB Mem : 11995.2 total 物理内存总量,单位:Mb 360.9 free 空闲内存总量 6766.0 used 使用的物理内存总量,此处需要注意的是:used实际指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。 4868.3+buff/cache 用作内核缓存的内存量 MiB Swap: 7680.0 total 交换区总量 7433.1 free 空闲交换区总量 246.9 used 使用的交换区总量 3665.4 avail Mem 在不交换的情况下,对启动新应用程序可用内存的估计 (网上也有说法是交换区的可用容量) top命令第六行为空。 top命令第七行是各个进程的监控:

依次为: PID — 进程id USER — 进程所有者 PR — 进程优先级 NI — nice值。负值表示高优先级,正值表示低优先级 VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR — 共享内存大小,单位kb S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 %CPU — 上次更新到现在的CPU时间占用百分比 %MEM — 进程使用的物理内存百分比 TIME+ — 进程使用的CPU时间总计,单位1/100秒 COMMAND — 进程名称(命令名/命令行)

需要注意的是,此界面显示的并不是所有进程,由于页面显示限制仅仅显示了这几行,我们可以通过top -b -n 1查看系统的所有进程的快照。

3查看内核占用内存

cat /proc/meminfo 在这里插入图片描述

详细说明可以查看https://blog.csdn.net/qingzhuyuxian/article/details/80453538

注:initrd和初始化代码init在引导完成之后会被释放掉,所以最终的内核可管理内存(total)会比dmesg显示的available更多一点,相应的源代码可参见: free_initrd_mem() 和 free_initmem()。 优化可以主要从优化保留内存和优化used内存两个方面进行,具体的需要结合代码。 查看磁盘命令比较多,最常用的为: df -lh 命令

4lsmod查看驱动占用内存lsmod

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3