HCRM博客

CentOS 7系统内存管理,如何优化与监控?

CentOS 7 内存管理

背景介绍

CentOS 7系统内存管理,如何优化与监控?-图1
(图片来源网络,侵权删除)

内存管理是操作系统中至关重要的一部分,它直接影响系统的性能和稳定性,在CentOS 7系统中,内存管理涉及物理内存、虚拟内存(交换空间)以及各种监控工具的使用,本文将深入探讨CentOS 7中的内存管理策略、工具及其使用方法,并提供常见问题的解决方案。

内存查看与监控

`free`命令

free命令用于查看系统中的内存使用情况,包括物理内存和交换空间,常用的选项有:

h:以人类可读的方式显示内存信息。

m:以MB为单位显示内存信息。

g:以GB为单位显示内存信息。

CentOS 7系统内存管理,如何优化与监控?-图2
(图片来源网络,侵权删除)

t:在输出的最后一行显示总内存使用情况。

s <间隔时间>:周期性地显示内存使用情况,间隔时间为指定的秒数。

c <次数>:指定周期性显示的次数。

示例

free h

输出解释:

total:总物理内存。

CentOS 7系统内存管理,如何优化与监控?-图3
(图片来源网络,侵权删除)

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)大小。

分享:
扫描分享到社交APP
上一篇
下一篇