
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<