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技术站