Linux下free命令详解

本文详细解析了Linux系统中free命令的输出含义,包括内存使用情况及其与内核内存管理的关系,并探讨了Swap配置对系统性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我查到的,很好的解释,供参考!  这也是让我们更深入的理解此FREE命令,及linux内核处理内存的机制了:  

我的linux执行free命令显示如下:  

[root@Linux /tmp]# free              

               total       used       free     shared    buffers     cached 

Mem:     4149156    4130412      18744          0      13220    2720160 

-/+ buffers/cache:    1397032    2752124

Swap:      6289408        144    6289264 

一、free命令的解释

第一行:

total 内存总数: 4149156 

used 已经使用的内存数: 4130412 

free 空闲的内存数: 18744 

shared 当前已经废弃不用,总是0 

buffers Buffer Cache内存数: 13220 

cached Page Cache内存数: 2720160

关系:total = used + free

第二行:

-/+ buffers/cache的意思相当于: -buffers/cache 的内存数:1397032 (等于第1行的 used - buffers - cached) 

+buffers/cache 的内存数: 2752124 (等于第1行的 free + buffers + cached) 

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三行:暂时不说

如上面的例子:使用了4149156的内存,4130412 被占用,但是buuffer和cached部分作为缓存,可以使用命中率的方式提高使用效率,而且这部分缓存是根据指令随时可以释放的,我们可以认为这部分内存没有实际被使用,也可以认为它是空闲的。 因此查看目前进程正在实际被使用的内存,是used-(buffers+cache),也可以认为如果swap没有大量使用,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。

二. Swap配置对性能的影响 

       分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。 如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。  

       通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,一般来说对于4G 以下的物理内存,配置2倍的swap,4G 以上配置1倍。 

        另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。

### 回答1: free命令是一个用于显示系统内存使用情况的命令。它可以显示系统的物理内存、交换空间和内核缓冲区的使用情况。free命令的输出结果包括以下内容: 1. total:系统总内存大小。 2. used:已使用的内存大小。 3. free:空闲的内存大小。 4. shared:被共享的内存大小。 5. buffers:内核缓冲区占用的内存大小。 6. cached:缓存的内存大小。 7. -/+ buffers/cache:实际可用的内存大小。 其中,buffers和cached是内核缓存的一部分,它们可以被释放用于其他用途,因此在计算可用内存时需要将它们考虑在内。-/+ buffers/cache是实际可用内存的计算公式,即total-used+buffers+cached。 使用free命令可以帮助我们了解系统内存的使用情况,及时发现内存不足的问题,以便采取相应的措施。 ### 回答2: free命令Linux操作系统下一款常用的系统资源检测工具,主要用于查看Linux系统的内存使用情况。free命令提供了几类信息,包括总的物理内存、已用的物理内存、剩余的物理内存、可以被缓存的内存、已用交换分区大小、可用交换分区大小等。 下面是free命令的详细参数解释: 1. -b :以字节单位显示内存使用情况。 2. -k :以kB为单位显示内存使用情况。 3. -m :以MB为单位显示内存使用情况。 4. -g :以GB为单位显示内存使用情况。 5. -t :输出总和行。 6. -s :表示每次命令执行后的时间间隔。 7. -c :表示显示的次数。 通过free命令,我们可以查看系统当前的内存使用情况,以便更好地掌握系统的运行状态。通过free命令的输出结果,我们可以得出几个结论: 1. 内存使用量总是会随着系统运行时间的增加而逐渐增加。 2. 剩余内存量会随着系统运行时间的增加而逐渐减少。 3. 缓存内存会随着系统运行时间的增加而逐渐增加。 总之,了解free命令的使用方法可以帮助我们更好地了解系统内存使用情况,以便及时调整和优化系统的内存使用策略。同时,我们也可以基于free命令的输出结果,采取一些措施来优化系统的性能,以更好地满足用户的需求。 ### 回答3: free命令Linux系统中常用的系统监控工具之一,用于查看系统的内存使用情况。以下是free命令的详细解释: free命令的语法:free [options] options参数: -b, --bytes 显示以字节为单位的内存使用情况 -k, --kilo 显示以KB为单位的内存使用情况 -m, --mega 显示以MB为单位的内存使用情况 -g, --giga 显示以GB为单位的内存使用情况 -o, --old 使用旧版输出格式 -h, --human 显示以易读的格式输出 --si 显示以1000为基数的单位 --iec 显示以1024为基数的单位 -t, --total 显示总共的内存使用情况 其中,-b -k -m -g等参数用于表示内存使用的单位,-o -h等参数用于显示输出的格式。 free命令输出的结果包括: total:物理内存总量。 used:已经使用的内存量。 free:空闲的内存量。 shared:多进程共享的内存量。 buffers:文件缓冲区占用的内存量。 cached:一般缓存占用的内存量。 -/+ buffers/cache:已经使用内存与空闲内存的和。 Swap:虚拟内存总量。 其中,buffers和cached是指Linux系统对IO进行缓存所占用的内存,当有程序需要更多内存时,这部分缓存内存会自动释放。 使用free命令的主要目的是监控系统的内存使用情况,了解系统是否已经使用了过多内存,以及通过优化释放内存来提高系统性能。如果系统内存使用过多,可以考虑关闭一些不必要的服务或程序,或者优化程序,减少内存占用。同时,如果需要更大的内存容量,可以考虑升级硬件或者扩大内存容量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值