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

yizhihongxing

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日

相关文章

  • mysql 触发器语法与应用示例

    下面是一份关于“mysql 触发器语法与应用示例”的攻略: 什么是mysql触发器 MySQL触发器是一种特殊的存储过程,当特定的事件(如对一张表进行的 INSERT、UPDATE 和 DELETE 等操作)发生时,MySQL触发器会自动执行一个已经定义好的SQL语句集,因此它可以在数据库发生某些操作时进行响应并执行指定的操作。 触发器语法 其基本语法如下:…

    database 2023年5月22日
    00
  • Centos7 安装 Mysql8教程

    下面是详细的“Centos7 安装 Mysql8教程”的完整攻略。 简介 本教程将教您如何在Centos7操作系统上安装Mysql8数据库。 步骤 更新系统 在进行任何安装之前,您需要确保您的系统已经更新到最新版本,使用以下命令执行更新操作: sudo yum -y update 安装MySQL 8的yum源 sudo wget https://dev.my…

    database 2023年5月22日
    00
  • 如何使用Python实现按照日期范围查询数据库数据?

    以下是使用Python实现按照日期范围查询数据库数据的完整攻略。 按照日期范围查询简介 按照日期范围查询是指在数据库中查询一时间范围内的数据。在Python中,可以使用pymysql库实现按照日期范围查询数据库数据。 步骤1:连接到数据库 在Python中,可以使用pymysql库连接到MySQL数据库。以下是连接到MySQL数据库的基本语法: import…

    python 2023年5月12日
    00
  • Oracle查询中OVER (PARTITION BY ..)用法

    当我们需要在查询结果中使用聚合函数并且对聚合函数结果进行分组时,就需要使用Oracle中的OVER (PARTITION BY …)用法。OVER (PARTITION BY …)用法可以让聚合函数仅在每个分组内计算,从而得到准确的结果。下面我会详细讲解OVER (PARTITION BY …)的用法,并提供两个示例用户参考。 OVER (PAR…

    database 2023年5月21日
    00
  • 搭建自己的PHP MVC框架详解

    搭建自己的 PHP MVC 框架非常有意义,它不仅可以让我们更好地理解 MVC 设计模式,还可以帮助我们更好地学习和掌握 PHP 技术栈。下面,我将详细讲解如何搭建自己的 PHP MVC 框架,包括以下步骤。 一、搭建框架目录结构 首先,我们需要搭建一个合适的目录结构。建议按照 MVC 设计模式的要求,将代码分为 Model、View 和 Controlle…

    database 2023年5月21日
    00
  • 详解Docker 下开发 hyperf 完整使用示例

    本文将详细介绍在 Docker 环境下,如何使用 Hyperf 开发应用,并给出完整的使用示例。主要包括以下几个部分。 安装 Docker 本文的演示基于 Docker 环境,因此需要先安装 Docker。Docker 可以在多个平台上运行,如 Windows、macOS 和 Linux。这里以 macOS 为例进行说明。 在 macOS 上安装 Docke…

    database 2023年5月22日
    00
  • MySQL修改密码的3种方式

    MySQL是一款开源的关系型数据库管理系统,被广泛应用于各行各业。为了保证数据库的安全,我们需要定期修改数据库的密码。本文将介绍MySQL修改密码的三种方式,包括使用命令行修改密码、使用MySQL Workbench修改密码、以及重置MySQL root密码。 使用命令行修改密码 1 登录MySQL 打开命令行工具,输入以下命令登录MySQL: mysql …

    MySQL 2023年3月10日
    00
  • redis’五种格式的存储与展示

    Redis支持持久化只是它的一件武器,另外,它针对不同的需求也提供了多达5种数据存储方式,以最大效率上的实现你的需求,下面分别说一下: 一  string(字符串)   string是最简单的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。 二  list(双…

    Redis 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部