📜  跟踪 Linux 中的内存使用情况(1)

📅  最后修改于: 2023-12-03 15:41:50.886000             🧑  作者: Mango

跟踪 Linux 中的内存使用情况

介绍

在开发和部署 Linux 应用程序时,内存使用情况通常是一个至关重要的指标。高内存使用率可能会导致应用程序的性能下降或崩溃。因此,了解如何跟踪 Linux 中的内存使用情况对程序开发人员至关重要。

内存的基础知识

在 Linux 系统中,内存被分为许多不同的区域,包括用户空间和内核空间。应用程序一般在用户空间运行,而内核空间则用于操作系统内部运行。内存使用情况可以通过一些命令和工具来监测。

监测内存使用情况的命令
free

free 命令可以显示已使用和可用的物理内存和交换空间。使用 free 命令时,输出中的表格的第一行为总内存,第二行为当前可用的内存,第三行为已用的内存,第四行为缓存和缓冲区的内存占用量,第五行为交换空间。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        1.1G         28G        2.3M        1.3G         29G
Swap:            0B          0B          0B
top

top 命令可以实时地显示系统的内存使用情况。在 top 命令中,内存使用情况在第二行中显示。输出包括总内存、已用的内存、空闲的内存、共享内存、缓存和缓冲区内存的使用情况。top 命令还可以按照内存使用情况来排序进程。

$ top
top - 11:52:57 up 305 days, 5:39,  2 users,  load average: 0.13, 0.12, 0.09
Tasks: 163 total,   1 running, 162 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32571920 total, 29426276 free,  4448580 used,  3658064 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 27759912 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                      
 6807 root      20   0   17376   3636   3116 R  0.0  0.0   0:00.06 top                                                                          
    1 root      20   0  207244  10080   7624 S  0.0  0.0 111:30.08 systemd                                                                      
ps

ps 命令可以列出当前运行的进程以及它们的内存使用情况。使用 ps 命令时,命令行中的 -eo 可以指定输出列表。在输出列表中包括 RSS、VSZ 和 %MEM 列可以用来查看进程的内存使用情况。

$ ps -eo pid,comm,rss,vsz,%mem
    PID COMMAND                                     RSS    VSZ %MEM
      1 systemd                                     8936 2072806  0.02
      2 kthreadd                                       0       0  0.00
      4 kworker/0:0H                                   0       0  0.00
      6 mm_percpu_wq                                    0       0  0.00
      7 ksoftirqd/0                                     0       0  0.00
pmap

pmap 命令可以查看进程使用的内存的详细信息。它可以显示一个进程的内存映射,包括动态链接库、共享内存和堆栈空间等。使用 pmap 命令时,必须指定进程的 PID。

$ pmap 6807
6807:   /usr/bin/top
0000556c74eb1000    1860K r-x-- top
0000556c7504c000     220K r---- top
0000556c75090000      44K rw--- top
0000556c7509b000      16K rw---   [ anon ]
00007f3e9aeb1000   14344K r-x-- libc-2.27.so
00007f3e9b02c000    2044K ----- libc-2.27.so
00007f3e9b22b000      16K r---- libc-2.27.so
00007f3e9b22f000       8K rw--- libc-2.27.so
00007f3e9b231000      24K rw---   [ anon ]
00007f3e9b236000     124K r-x-- ld-2.27.so
00007f3e9b41f000      12K rw---   [ anon ]
00007f3e9b43b000       4K r---- ld-2.27.so
00007f3e9b43c000       4K rw--- ld-2.27.so
00007f3e9b43d000       4K rw---   [ anon ]
...
结论

了解如何监测 Linux 系统的内存使用情况对于程序开发人员来说是至关重要的。本文介绍了 free、top、ps 和 pmap 等常用的命令和工具来监测 Linux 系统中的内存使用情况。根据实际需求,选择相应的工具将有助于定位内存使用问题并优化应用程序的性能。