Linux管理员手册(4)–内存管理

Linux管理员手册(4)--内存管理

简介

内存管理是Linux系统管理中的一个重要方面。本文将介绍Linux内存管理的各个方面,包括物理内存、虚拟内存、交换空间管理等重要内容。同时,本文还将涉及一些常见的Linux内存管理工具和技巧。

物理内存管理

Linux中的内存管理遵循一种称为“分页”的技术。具体来说,物理内存被分成固定大小的块,称为“页框”。每个进程都会被分配一定数量的页框。

系统内存信息查看

我们可以使用free命令查看Linux系统的内存使用情况。它会显示可用内存、已用内存和交换空间的使用情况。

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7905       3030       4874        333        125       1131
-/+ buffers/cache:       1772       6133
Swap:         2047          0       2047

上面的输出中,我们可以看到系统有7905MB的物理内存,当前使用了3030MB,还剩下4874MB可用。此外,系统还使用了125MB的缓冲区和1131MB的缓存。注意,缓存和缓冲区的内存可以被进程重新利用,因此Linux内核的策略是尽可能地缓存数据。

进程内存信息查看

使用ps命令可以查看进程的内存使用情况。其中,VIRT表示进程使用的虚拟内存,RSS表示进程实际使用的物理内存(不包括合并后的页框),RES表示进程实际使用的物理内存(包括合并后的页框),SHR表示进程共享的内存。

$ ps -eo pid,cmd,vsize,rss,shres --sort -rss | head
    PID CMD                         VSZ   RSS   SHR
  13841 /usr/bin/chrome             8.4g  305m   65m
  13840 /usr/bin/chrome             8.3g  196m   53m
  10704 /usr/libexec/Xorg           2.1g  180m   97m
     17 kthread                     0     0     0
     20 kblockd/0                   0     0     0
     21 kworker/0:0H                0     0     0
     22 kworker/u4:0                0     0     0
     23 ksoftirqd/0                 0     0     0
     24 kworker/0:1                 0     0     0

内存管理工具

Linux提供了一些内存管理工具,可以用于查看和分析系统的内存使用情况。以下是其中的一些:

  • top:类似于ps,但提供了实时更新的进程列表和内存使用情况。
  • vmstat:可以提供系统内存和IO访问统计信息。
  • sar:可以提供系统性能的历史记录,包括内存、CPU、磁盘和网络使用情况。
  • atop:可以提供类似top的实时进程列表和系统统计信息。

虚拟内存管理

虚拟内存是指Linux系统使用硬盘来扩展内存的一种技术。当系统的物理内存不足时,它会将部分数据存储到硬盘上的交换空间中。

系统交换空间查看

我们可以使用swapon命令查看Linux系统当前的交换空间使用情况。

$ swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-0                               partition   2097148 0   -2
/dev/dm-1                               partition   2097148 0   -3

上面的输出中,我们可以看到当前系统有两个交换空间分区:/dev/dm-0/dev/dm-1。大小都为2097148KB,使用情况都为0KB。

进程交换空间查看

使用ps命令可以查看进程的交换空间使用情况。其中,SWAP表示进程在交换空间中使用的空间大小。

$ ps -eo pid,cmd,rss,swap --sort -rss | head
   PID CMD                          RSS    SWAP
 13841 /usr/bin/chrome             305m   2300k
 13840 /usr/bin/chrome             196m   3044k
 10704 /usr/libexec/Xorg           180m   6504k
  3646 /usr/sbin/mysqld            134m   8748k
  5045 /home/foo/bin/mydaemon      123m   7444k
 23847 /usr/bin/ssh-agent           20m   4040k
    17 kthread                       0      0k
    20 kblockd/0                     0      0k

例子说明

例子1:禁止交换空间

如果你需要禁用交换空间,可以使用以下命令:

$ sudo swapoff -a

这个命令会关闭交换空间分区,但不会删除分区。

例子2:清理缓存

如果你需要清空Linux系统中的缓存,可以使用以下命令:

$ sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches

这个命令会刷新所有文件系统的缓存,并在内核中释放所有缓存页。请注意,这个命令会暂停所有输入输出操作。因此,最好在系统空闲时间运行此命令。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux管理员手册(4)–内存管理 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • linux NFS安装配置及常见问题、/etc/exports配置文件、showmount命令

    Linux NFS安装配置及常见问题攻略 安装NFS服务 在CentOS系统中,使用以下命令安装nfs-utils工具: yum install nfs-utils 启动NFS服务: systemctl start nfs-server 设置开机自启动NFS服务: systemctl enable nfs-server 配置NFS服务 编辑/etc/expo…

    database 2023年5月21日
    00
  • DBMS和DSMS的区别

    DBMS和DSMS都是数据管理系统,但它们有一些关键的区别。下面我们将逐个讨论。 DBMS和DSMS的概念 数据库管理系统(DBMS) 数据库管理系统(DBMS)是一种软件系统,用于创建、管理和维护各种类型的数据库。DBMS通常具有多个组件,包括数据库引擎、查询优化器、数据字典、用户界面等。它们支持用于管理数据的各种操作,例如数据定义、数据操作和数据查询等。…

    database 2023年3月27日
    00
  • 在SQL中该如何处理NULL值

    在SQL中处理NULL值是很重要的,因为NULL值可能会对查询、统计等操作的结果造成影响。在SQL中可以使用以下的方法来处理NULL值: 1. 使用IS NULL或IS NOT NULL 对于一个列包含NULL值的记录,我们借助IS NULL或IS NOT NULL运算符来判断该列是否为空。IS NULL用于判断是否为空,IS NOT NULL用于判断是否不…

    database 2023年5月21日
    00
  • Cassandra 和 MySQL 的区别

    Cassandra 和 MySQL 都是常见的数据库。虽然它们都可以存储和查询数据,但是它们在很多方面有很大的区别。下面就对它们的不同点逐一进行讲解。 1. 数据模型 Cassandra 和 MySQL 的数据模型是完全不同的。Cassandra 是一个列式数据库,每个列族(column family)包含了多个行(rows), 每个行由多个列组成。Cass…

    database 2023年3月27日
    00
  • 解决mybatis返回boolean值时数据库返回null的问题

    当 Mybatis 在执行结果映射时,如果数据库返回的数据为 null,则默认会将 boolean 类型的值转换为 false。这会导致在查询某些特定的 boolean 类型属性时出现问题。因此,我们需要通过以下两种方法来解决这个问题: 方法一:使用 Boolean 包装类型 使用包装类 Boolean 代替基本类型 boolean 对该问题的处理起到了奇效…

    database 2023年5月18日
    00
  • pm2 部署 node的三种方法示例

    “pm2 部署 node的三种方法示例”攻略如下: 1. 环境准备 在开始部署之前,需要准备以下环境: 已安装 Node.js,并确保 npm 版本是 6.0 以上 已全局安装 pm2:npm install pm2 -g 需要在 Linux 或者 macOS 环境中进行部署 2. 方法一:使用 pm2 monit pm2 的官方文档中提到了一种使用 pm2…

    database 2023年5月22日
    00
  • linux实现mysql数据库每天自动备份定时备份

    首先我们需要安装crontab,一个在Linux下用来定时执行任务的工具。可以使用以下命令进行安装: sudo apt-get update sudo apt-get install cron 安装完成后,我们需要编辑cron的定时任务配置文件。在终端输入以下命令: crontab -e 该命令会打开当前用户的crontab配置文件。接下来,我们可以在文件中…

    database 2023年5月22日
    00
  • MySql的事务使用与示例详解

    MySql的事务使用与示例详解 什么是事务? 事务是指由一系列数据库操作所组成的一个不可分割的工作单元。 事务是数据库操作的基本单位,是有关联的多个操作组成的一个整体。 事务中的操作要么全部成功,要么全部失败,不存在部分执行的情况。 事务必须有四个特征,通常用ACID缩写来描述,即原子性、一致性、隔离性和持久性。 事务操作示例 示例1:向两个表中插入数据 S…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部