CentOS 7 内存管理
背景介绍
内存管理是操作系统中至关重要的一部分,它直接影响系统的性能和稳定性,在CentOS 7系统中,内存管理涉及物理内存、虚拟内存(交换空间)以及各种监控工具的使用,本文将深入探讨CentOS 7中的内存管理策略、工具及其使用方法,并提供常见问题的解决方案。
内存查看与监控
`free`命令
free
命令用于查看系统中的内存使用情况,包括物理内存和交换空间,常用的选项有:
h
:以人类可读的方式显示内存信息。
m
:以MB为单位显示内存信息。
g
:以GB为单位显示内存信息。
t
:在输出的最后一行显示总内存使用情况。
s <间隔时间>
:周期性地显示内存使用情况,间隔时间为指定的秒数。
c <次数>
:指定周期性显示的次数。
示例:
free h
输出解释:
total:总物理内存。
used:已经使用的内存。
free:没有使用的内存。
shared:多进程共享内存。
buff/cache:读写缓存内存。
available:应用程序可用的物理内存。
`top`命令
top
命令是一个实时监控系统资源使用情况的工具,可以动态查看CPU、内存及各个进程的资源占用情况,常用选项有:
d seconds
:设置刷新间隔时间,默认为3秒。
u username
:只显示指定用户的进程信息。
p pid
:只显示指定进程ID的信息。
n iterations
:设置循环次数,即显示的次数。
s field
:按指定字段对进程进行排序,默认按CPU使用率排序,可选字段包括pid、user、pr、ni、virt、res、shr、s、%cpu、%mem、tIME+、time、command。
o field
:按指定字段对进程进行排序,与s参数不同的是,o参数可同时指定多个字段进行排序。
c
:显示完整的命令行信息。
示例:
top c
输出解释:
USER:进程所有者的用户名。
PID:进程ID。
%CPU:进程占用CPU的百分比。
%MEM:进程占用内存的百分比。
VSZ:进程占用的虚拟内存大小,单位为KB。
RSS:进程占用的实际物理内存大小,单位为KB。
TTY:进程所在的终端。
STAT:进程状态,包括R(运行)、S(睡眠)、T(停止)、Z(僵尸进程)等。
START:进程启动的时间。
TIME+:进程占用CPU的时间。
COMMAND:进程命令。
`ps`命令
ps
命令用于显示当前系统的进程状态,提供了比top
命令更灵活的进程显示和过滤功能,常用选项有:
a
:显示所有进程,包括其他用户的进程。
u
:以用户为主要输出格式显示进程信息。
示例:
ps aux sort=%mem
输出解释:
USER:进程所有者的用户名。
PID:进程ID。
%CPU:进程占用CPU的百分比。
%MEM:进程占用内存的百分比。
VSZ:进程占用的虚拟内存大小,单位为KB。
RSS:进程占用的实际物理内存大小,单位为KB。
TTY:进程所在的终端。
STAT:进程状态。
START:进程启动的时间。
TIME:进程占用CPU的时间。
COMMAND:进程命令。
Python脚本获取内存信息
可以使用Python的psutil
模块来获取系统的内存使用情况,以下是一个简单的示例程序:
import psutil 获取内存使用情况 mem = psutil.virtual_memory() print(f'Total Memory: {mem.total / 1024 / 1024:.2f} MB') print(f'Used Memory: {mem.used / 1024 / 1024:.2f} MB') print(f'Free Memory: {mem.available / 1024 / 1024:.2f} MB')
将上述代码保存为get_mem.py
,然后在终端中运行:
python get_mem.py
虚拟内存(交换空间)配置与管理
创建虚拟内存(swap)文件
合理规划和设计Linux内存的使用是非常重要的,关于物理内存和交换空间的大小设置问题,取决于实际所用的硬盘大小,但大致遵循以下基本原则:
如果物理内存较小(小于4GB),一般设置swap分区大小为内存的2倍。
如果物理内存大于4GB且小于16GB,可以设置swap分区大小等于物理内存。
如果内存大小在16GB以上,可以设置swap为0,但并不建议这么做,因为设置一定大小的swap分区是有一定作用的。
创建swap文件步骤:
1、创建swap文件(每块1M,总共8192块,共计8192M):
dd if=/dev/zero of=/data/swap bs=1M count=8192
2、查看swap文件的大小:
ll /data/swap h
3、降低swap权限:
chmod 0600 /data/swap
4、构建并激活swap:
mkswap /data/swap swapon /data/swap
5、查看一下swap的大小:
free mh
6、永久生效:编辑/etc/fstab
文件,注释掉原来的swap行,新增一行:
vim /etc/fstab
添加如下内容:
/data/swap swap swap defaults 0 0
修改虚拟内存大小或取消设置虚拟内存
如果需要修改虚拟内存的大小或取消设置虚拟内存,只需关闭swap并删除之前创建的swap文件即可,然后重复上述步骤二、三、四即可。
关闭swap:
swapoff /data/swap
删除swap文件:
rm rf /data/swap
常见问题与解决方案
Q1: 如何更改CentOS 7中的虚拟内存(swap)大小?
A1: 要更改CentOS 7中的虚拟内存(swap)大小,首先需要关闭当前的swap分区,然后删除旧的swap文件并创建新的swap文件,最后激活新swap文件并使其永久生效,具体操作步骤如下:
1、关闭现有的swap分区:
swapoff a
2、删除旧的swap文件:
rm rf /path/to/old_swapfile
3、根据需求创建新的swap文件,例如创建一个2GB的swap文件:
dd if=/dev/zero of=/path/to/new_swapfile bs=1M count=2048
4、设置适当的权限:
chmod 0600 /path/to/new_swapfile
5、构建并激活新的swap文件:
mkswap /path/to/new_swapfile swapon /path/to/new_swapfile
6、确保新设置在重启后仍然有效,编辑/etc/fstab
文件,添加以下内容:
/path/to/new_swapfile swap swap defaults 0 0
通过这些步骤,您可以成功调整CentOS 7中的虚拟内存(swap)大小。