Linux内存管理

Linux内存管理

Scroll Down

了解RSS、PSS、USS等相关概念:

  • VSS – Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
  • RSS – Resident Set Size 实际使用物理内存(包含共享库占用的内存)
  • PSS – Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
  • USS – Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

RSS(Resident set size,使用top命令可以查询到,是最常用的内存指标,表示进程占用的物理内存大小。但是,将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。

PSS(Proportional set size所有使用某共享库的程序均分该共享库占用的内存时,每个进程占用的内存。显然所有进程的PSS之和就是系统的内存使用量。它会更准确一些,它将共享内存的大小进行平均后,再分摊到各进程上去。

USS(Unique set size ) 进程独自占用的内存,它是PSS中自己的部分,它只计算了进程独自占用的内存大小,不包含任何共享的部分。

ps命令

CPU占用最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k3|head -10

image-20220523150013136

内存消耗最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k4|head -10

image-20220523150134527

虚拟内存使用最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k5|head -10

image-20220523150243083

几个参数含义

  1. %MEM 进程的内存占用率
  2. VSZ 进程所使用的虚存的大小
  3. RSS 进程使用的驻留集大小或者是实际内存的大小
  4. TTY 与进程关联的终端(tty)

top命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看mysql用户的进程内存使用情况的话可以使用如下的命令:

top -u mysql

image-20220523150805986

为了查看哪个进程使用着最多的内存,一个简单的办法就是启动 top,然后按下 shift+m,这样便可以查看按照内存占用百分比从高到底排列的进程。当你按下了 shift+m ,你的 top 应该会得到类似于下面这样的输出结果:

image-20220523151042034内容解释:

   PID:进程的ID
  USER:进程所有者
  PR:进程的优先级别,越小越优先被执行
  NInice:值
  VIRT:进程占用的虚拟内存
  RES:进程占用的物理内存
  SHR:进程使用的共享内存
  S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
  %CPU:进程占用CPU的使用率
  %MEM:进程使用的物理内存和总内存的百分比
  TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
  COMMAND:进程启动命令名称

常用的命令:shift+

   P:按%CPU使用率排行
  T:按MITE+排行
  M:按%MEM排行

kill命令

Linux kill 命令用于删除执行中的程序或工作。

kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看。

语法

kill [-s <信息名称或PID>][程序] 或 kill [-l <信息编号>]

参数说明

  • -l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
  • -s <信息名称或编号>  指定要送出的信息。
  • [程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

使用 kill -l 命令列出所有可用信号。

最常用的信号是:

  • 1 (HUP):重新加载进程。
  • 9 (KILL):杀死一个进程。
  • 15 (TERM):正常停止一个进程。

实例

杀死进程

kill 12345

强制杀死进程

kill -9 123456

正常停止进程

kill -15 12345

补充——线程查看

linux进入进程,查看线程

  • PS:

-T :开启线程查看选项

语法:ps -T -p <pid>

示例:

ps -T -p 2244
  • Top

-H:列出线程运行状态

语法:top -H -p <pid>

示例:

top -H -p 2244