Linux系统中如何使用free和swap命令优化内存管理? (linux free m swap)

树叶云

Linux作为一种稳定高效的操作系统,广泛应用于各种领域和场景中。然而,随着应用程序的不断增多和运行负载的逐渐增大,内存管理问题成为了一个需要重视的话题。为了优化内存管理,Linux系统提供了两个命令free和swap,本文将讲述这两个命令的使用方法和优化内存管理的方法。

一、free命令

1.1 free命令的基本用法

free命令用于显示系统当前的内存使用情况,可以用来监控系统的内存状态。free命令的语法格式如下:

“`

free [-b|-k|-m|-g] [-o] [-s ] [-t] [-V]

“`

其中,参数含义如下:

“`

-b|k|m|g,指定单位为B,KB,MB,GB。默认为K。

-o,不显示缓存(Buffer)的信息。

-s ,连续显示指定秒数的输出。

-t,在输出中行末增加一行总和信息。

-V,显示版本号并退出。

“`

当不指定任何参数时,free命令会以K为单位显示系统当前的内存使用情况,输出结果包括系统的物理内存、空闲内存、缓存、已经使用的交换空间等信息。

1.2 free命令的输出解释

free命令的输出结果中包括以下几项信息:

“`

total used free shared buff/cache avlable

Mem: 32740772 6156948 16828084 354216 9781836 25107024

Swap: 8388584 270820 8117764

“`

其中,各项信息的解释如下:

– total:物理内存总量。

– used:已经使用的物理内存量。

– free:可用的物理内存量。

– shared:被共享的物理内存量。

– buff/cache:缓存和被占用的低速存储器和内存。

– avlable:可用的物理内存量,在Linux内核版本3.14之后才有。

1.3 free命令的优化策略

如何利用free命令优化内存管理呢?以下是几个优化策略:

– 优化缓存:free命令输出结果中的buff/cache项,即缓存,是指用于存放磁盘块的内存缓存。缓存能够提高文件系统的效率,并且缓存中的数据可以被清除而不会对系统产生负面影响。因此,可通过清除缓存来释放内存。

清除缓存的方法一般有两种:

“`

#1. 通过sync命令刷新缓存,然后通过echo命令将”/proc/sys/vm/drop_caches”文件中的值设置为3,表示清除缓存:

$ sync

$ echo 3 > /proc/sys/vm/drop_caches

#2. 通过sysctl命令来清除缓存:

$ sysctl -w vm.drop_caches=3

“`

– 释放未使用的交换空间:swap命令用于显示当前系统的交换空间使用情况。在系统内存不足时,Linux会将部分内存数据写入虚拟内存,这就是交换空间。如果未使用的交换空间较多,可以释放该空间,以便节省内存。

释放未使用的交换空间的方法是:

“`

$ swapoff -a && swapon -a

“`

该命令将禁用所有交换分区并重新启用它们。因此,该命令会释放所有未使用的交换空间。

– 找出哪个进程使用了大量内存:有时会出现内存泄漏的情况,某个应用程序可能会使用大量的内存而导致系统缓慢。free命令可以帮助找出哪个进程使用了大量内存,然后进行相应的调整。

在free命令输出结果中,可以通过查看RSS(Resident Set Size)即常驻内存大小的值来判断哪个进程使用了大量的内存。可以通过top命令或者ps命令查看每个进程的内存使用情况,然后根据情况进行相应的处理。

二、swap命令

2.1 swap命令的基本用法

swap命令用于显示当前系统使用的交换空间信息,可以用来监控系统的交换情况。swap命令的语法格式如下:

“`

swap [-v]

“`

其中,-v参数用于输出详细的信息。

2.2 swap命令的输出解释

swap命令的输出结果包括以下几项信息:

“`

虚拟内存使用情况:

总内存:32740772k

已分配内存: 57012k

未分配内存:32740200k

缺页的数量: 46413

交换区使用情况:

总交换区: 8388584k

已使用交换区: 266536k

未使用交换区: 8122023k

“`

其中,各项信息的解释如下:

– 总内存:总共使用的物理内存。

– 已分配内存:已使用的物理内存,包括正在使用的和空闲的。

– 未分配内存:可用的物理内存。

– 缺页的数量:未被缓存的总量。

– 总交换区:总共使用的交换空间。

– 已使用交换区:已经使用的交换空间。

– 未使用交换区:没有使用的交换空间。

2.3 swap命令的优化策略

利用swap命令优化内存管理的方法主要有以下几点:

– 调整交换空间大小:当系统的物理内存不够用时,Linux会将部分内存数据写入到交换分区中。因此,如果交换分区太小,会导致系统缓慢。此时可以调整交换分区的大小,使其适应当前系统负载。

调整交换分区的方法有两种:

– 手动重新分区

– 动态调整交换分区大小

– 关闭不需要的进程:如果系统中有一些不必要的进程运行,会占用系统的内存资源。关闭这些不必要的进程可以提高系统的性能和稳定性。

– 增加物理内存:当系统的物理内存无法满足当前运行负载时,可以考虑增加物理内存来提高系统的性能和稳定性。

结论

相关问题拓展阅读:

  • linux swap交换空间不足怎么办

linux swap交换空间不足怎么办

1、使用分区:

在安装OS时划分出专门的交换分区,空间大小要事先规划好,启动系统时自动进行mount。

这种方法只能在安装OS时设定,一旦设定好不容易改变,除非重装系统。

2、使用swapfile:(或者是整个空闲分区)

新建临时swapfile或者是空闲分区,在需要时设定为交换空间,最多可以增加8个swapfile。

交换空间的大小,与CPU密切相关,在i386系中,最多可以使用2GB的空间。

在系统启动后根据需要在2G的总容量下进行增减。

这种方法比较灵活,也比较方便,缺点是启动系统后需要手工设置。

以下是运用swapfile增加交换空间的步骤:

涉及到的命令:

free —查看内存状态命令,可以显示memory,swap,buffer cache等的大小及使用状况;

dd —读取,转换并输出数据命令;

mkswap —设置交换区

swapon —启用交换区,相当于mount

swapoff —关闭交换区,相当于umount

步骤:

1、创建swapfile:

root权限下,创建swapfile,假设当前目录为”/”,执行如下命令:

# dd if=/dev/zero of=swapfile bs=1024 count=500000

则在根目录下创建了一个swapfile,名称为“swapfile”,大小为500M,也可以把文件输出到自己想要的任何目录中,

个人觉得还是直接放在根目录下比较好,一目了然,不容易误破坏,放在其他目录下则不然了;

命令中选项解释:

—of:输出的交换文件的路径及名称;

—bs:块大小,单位byte,一般为1k即1024个byte;

—count:总块数即空间总大小,单位为块即k;

—if:读取的源空闲空间,为什么是zero,不清楚,先固定这么写吧;

2、将swapfile设置为swap空间

# mkswap swapfile

3、启用交换空间,这个操作有点类似于mount操作(个人理解):

# swapon swapfile

至此增加交换空间的操作结束了,可以使用free命令查看swap空间大小是否发生变化;

4、如果不再使用空间可以选择关闭交换空间,这个操作有点类似于umount操作(个人理解)::

# swapoff swapfile

使用这种方法在每次系统启动时都需要手动设置、开启swapfile,比较麻烦,解决方法:

在 /etc/rc.d/rc.local 文件的末行下追加加以下内容:(编辑这个文件当然是用vi了~)

/in/swapon /swapfile

保存后退出,这样在系统启动后,swap空间就会自动加载了;

总结:在安装OS时一定要规划后swap大小,通常为内存的2倍,但是要考虑到以后增加内存的可能,所以可以考虑设的稍大一些,想在虚拟机里面安装oracle10g,发现默认的swap交换空间不满足更低要求,因为我分配的物理内存是1G,那么就按照要求需要2G的swap交换空间,默认只有1G的交换空间。

添加swap交换空间的步骤如下:

之一步:确保系统中有足够的空间来用做swap交换空间,我使用的是KVM,准备在一个独立的文件系统中添加一个swap交换文件,在/opt/image中添加2G的swap交换文件

第二步:添加交换文件并设置其大小为2G,使用如下命令

# dd if=/dev/zero of=/opt/image/swap bs=1024 count=

过段时间就返回如下结果:

+0 records in

+0 records out

bytes (2.1 GB) copied, 272.867 seconds, 7.7 MB/s

第三步:创建(设置)交换空间,使用命令mkswap

# mkswap /opt/image/swap

Setting up swapspace version 1, size =kB

第四步:检查现有的交换空间大小,使用命令free

# free -m

totalusedfree shared buffers cached

Mem:

-/+ buffers/cache:

Swap:

或者检查meminfo文件

grep SwapTotal /proc/meminfo

第五步:启动新增加的2G的交换空间,使用命令swapon

# swapon /opt/image/swap

第六步:确认新增加的2G交换空间已经生效,使用命令free

# free -m

totalusedfree shared buffers cached

Mem:

-/+ buffers/cache:

Swap:

或者检查meminfo文件

grep SwapTotal /proc/meminfo

第七步:修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效

在文件最后加入:

/opt/image/swap swap swap defaults 0 0

我的操作

# free

totalusedfree shared buffers cached

Mem:

-/+ buffers/cache:

Swap:

创建交换空间文件,1000M

# dd if=/dev/zero of=/swapfile bs=1024 count=

+0 records in

+0 records out

bytes (1.0 GB) copied, 28.5423 seconds, 35.9 MB/s

# mkswap swapfile

Setting up swapspace version 1, size =kB

# swapon swapfile 打开

#swapoff swapfile 关闭

删除

swapoff swapfile

关于linux free m swap的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/195036.html<

(0)
运维的头像运维
上一篇2025-04-02 19:24
下一篇 2025-04-02 19:25

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注