## 了解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](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220523150013136.png)
### 内存消耗最多的前10个进程
`ps auxw|head -1;ps auxw|sort -rn -k4|head -10`
![image-20220523150134527](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220523150134527.png)
### 虚拟内存使用最多的前10个进程
`ps auxw|head -1;ps auxw|sort -rn -k5|head -10`
![image-20220523150243083](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220523150243083.png)
**几个参数含义**
1. %MEM 进程的内存占用率
2. VSZ 进程所使用的虚存的大小
3. RSS 进程使用的驻留集大小或者是实际内存的大小
4. TTY 与进程关联的终端(tty)
## top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看mysql用户的进程内存使用情况的话可以使用如下的命令:
`top -u mysql`
![image-20220523150805986](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220523150805986.png)
**为了查看哪个进程使用着最多的内存,一个简单的办法就是启动 `top`,然后按下 `shift+m`,这样便可以查看按照内存占用百分比从高到底排列的进程。当你按下了 `shift+m` ,你的 `top` 应该会得到类似于下面这样的输出结果:**
![image-20220523151042034](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220523151042034.png)**内容解释:**
```
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
```
Linux内存管理