Linux提供一些与内存管理的命令,可以通过这些命令加深Linux内存的管理。

1. free

free命令用于显示系统中空闲和已使用的内存情况。

# free -h
              total        used        free      shared  buff/cache   available
Mem:          7.5Gi       3.1Gi       568Mi       2.0Mi       3.9Gi       4.2Gi
Swap:         4.0Gi        12Mi       4.0Gi
  • free:未被使用的物理内存大小,free = total - used - buffers - cache

  • available:从应用程序的角度看到的可用内存数量

  • buff/cache,在linux内核 2.4中已统一

    • buffer:buffer cache缓冲区。一个块被调入内存,它存储在缓冲区

    • cache:page cache页高速缓存。对块设备文件的缓存

2. top

top命令动态显示运行中的进程及其资源占用情况。top命令使用方法如下:

top -hv|-bcEHiOSs1 -d secs -n max -u|U user -p pid -o fld -w [cols]
  • d:指定更新的间隔,以秒计算
  • q:没有任何延迟的更新
  • c:显示进程完整的路径与名称
  • S:累积模式,会将己完成或消失的子行程的CPU时间累积起来
  • s:安全模式
  • i:不显示任何闲置(Idle)或无用(Zombie)的行程
  • n:显示更新的次数,完成后将会退出top

举例如下:

# top
top - 20:17:08 up 48 days,  2:58, 61 users,  load average: 0.20, 0.26, 0.31
Tasks: 611 total,   1 running, 577 sleeping,   6 stopped,  27 zombie
%Cpu(s):  0.9 us,  0.4 sy,  0.0 ni, 98.6 id,  0.1 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :   7701.1 total,    745.7 free,   2937.8 used,   4017.6 buff/cache
MiB Swap:   4096.0 total,   4084.0 free,     12.0 used.   4465.5 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
3718638 u202121+  20   0 2326476  31160  12240 S   5.6   0.4   0:07.44 vim
3718646 u202121+  20   0  527892  73116  46344 S   2.3   0.9   0:02.99 python3
3714058 u202121+  20   0 2326600  32560  12448 S   2.0   0.4   0:11.30 vim
3714063 u202121+  20   0  528032  73532  46524 S   0.7   0.9   0:04.24 python3
     11 root      20   0       0      0      0 I   0.3   0.0  16:15.94 rcu_sched
    424 root      20   0       0      0      0 S   0.3   0.0   1:52.90 jbd2/dm-0-8
2854800 u202121+  20   0 1256924  87572  33560 S   0.3   1.1   1:21.55 node
2866993 u202121+  20   0 1019480 160492  38452 S   0.3   2.0   3:41.54 node
3707543 u202121+  20   0 2326636  31520  12520 S   0.3   0.4   0:09.03 vim
3707555 u202121+  20   0  528156  72668  45248 S   0.3   0.9   0:02.82 python3
3710188 u202121+  20   0   14064   5964   4484 S   0.3   0.1   0:00.29 sshd
3718785 u202121+  20   0   14064   6000   4520 S   0.3   0.1   0:00.07 sshd
3719355 u202121+  20   0 2325792  30752  12568 S   0.3   0.4   0:00.92 vim
3721450 u202121+  20   0   14064   5856   4388 S   0.3   0.1   0:00.03 sshd
3722435 root      20   0    9800   4556   3248 R   0.3   0.1   0:00.14 top
      1 root      20   0  170316  13000   7496 S   0.0   0.2   1:51.65 systemd

上述输出结果,

  • 第一行:当前时间、系统启动时间、当前系统登录用户数目、平均负载

  • 第二行:进程情况

    • 进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数
  • 第三行:CPU状态

    • 用户占用、系统占用、优先进程占用、闲置进程占用。
  • 第四行:内存状态

    • 平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存
  • 第五行:交换状态
    • 平均可用交换容量、已用容量、闲置容量、高速缓存容量

各列含义如下:

  • PRI,优先级
  • NI : nice值。负值表示高优先级,正值表示低优先级
  • RES(Memory usage):—该进程占用的物理内存的总数量,单位是KB
  • S表示进程状态
    • D = uninterruptible sleep,不可中断的睡眠状态
    • I = idle
    • R = running
    • S = sleeping
    • T = stopped by job control signal
    • t = stopped by debugger during trace
    • Z = zombie,僵尸进程

3. vmstat

vmstat展示虚拟内存统计信息(如果是macOS,命令则为vm_stat),

# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  12288 823320 408564 3706324    0    0     0     1    1    0  0  0 100  0  0

vmstat -s

# vmstat -s
      7885920 K total memory
      3067648 K used memory
      3355200 K active memory
      2286892 K inactive memory
       704668 K free memory
       408564 K buffer memory
      3705040 K swap cache
      4194300 K total swap
        12288 K used swap
      4182012 K free swap
      3583664 non-nice user cpu ticks
        36758 nice user cpu ticks
       855159 system cpu ticks
   4984219675 idle cpu ticks
       311890 IO-wait cpu ticks
            0 IRQ cpu ticks
       227848 softirq cpu ticks
            0 stolen cpu ticks
      4275793 pages paged in
     59660059 pages paged out
         8688 pages swapped in
        38863 pages swapped out
    298345489 interrupts
   1085176864 CPU context switches
   1679476743 boot time
     49395429 forks
本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2023-05-17 08:53

results matching ""

    No results matching ""