1.什么是进程?
2.程序与进程之间有什么区别?
3.进程的生命周期?
4.进程运行的状态指标?
5.如何监控进程的状态、静态ps、动态top?
6.进程中的iowait 软中断 硬中断?
1.什么是进程?
- 进程是系统中正在运行的一个程序,程序一旦运行就是进程。
2.程序与进程之间有什么区别?
- 进程是程序的一次执行过程,是动态概念,程序是一组有序的指令集和,是静态概念
- 进程是暂时的,是程序在数据集上的一次执行,可创建可撤销,程序是永存的
- 进程具有并发行,程序没有
- 进程是竞争计算机资源的最小单位,程序不是
- 进程与程序不是一一对应,多个进程可执行一个程序,一个程序可执行多个程序
3.进程的生命周期?
每一个进程都有其生命周期,例如创建、运行、终止和消除。这些阶段会在系统启动和运行中重复无数次。
4.进程运行的状态指标?
STAT基本状态 | 描述 | STAT状态+符号 | 描述 |
---|---|---|---|
R | 进程运行 | s | 进程是控制进程, Ss进程的领导者,父进程 |
S | 可中断睡眠 | < | 进程运行在高优先级上,S<优先级较高的进程 |
T | 进程被暂停 | N | 进程运行在低优先级上,SN优先级较低的进程 |
D | 不可中断进程 | + | 当前进程运行在前台,R+该表示进程在前台运行 |
Z | 僵尸进程 | l | 进程是多线程的,Sl表示进程是以线程方式运行 |
5.如何监控进程的状态、静态ps、动态top?
1.用ps aux命令查看当前的进程状态(静态)
状态 | 描述 |
---|---|
USER | 启动进程的用户 |
PID | 进程运行的ID号 |
%CPU | 进程占用CPU百分比 |
%MEM | 进程占用内存百分比 |
VSZ | 进程占用虚拟内存大小(单位kb) |
RSS | 进程占用物理内存实际大小(单位kb) |
TTY | 进程是由哪个终端运行启动的tty1 ,pts/0等 ?表示内核程序与终端无关 |
STAT | 进程运行过程中的状态man ps (/STATE) |
START | 进程的启动时间 |
TIME | 进程占用CPU的总时间,单位秒 |
COMMAND | 程序的运行指令,[方括号]属于内核态的进程.没有[]的是用户态进程 |
2.用top命令查看当前的进程状态(动态)
前面两行信息
列名 | 含义 |
---|---|
20:45:03 | 表示系统当前时间 |
up 11:49 | 表示系统已经运行时间 |
5 users | 当前登录的用户数5个 |
load average: 0.00,0.01,0.05 | 表示内核任务在1分钟、5分钟、15分钟的平均负载 |
Tasks:159 total | 当前系统的进程总数 |
1 running | 当前系统中有4个正在运行的进程 |
157 sleeping | 当前系统中有284个休眠的进程 |
1 stopped | 停止进程数为1 |
0 zombie | 僵死进程数为0 |
0.3 us | 进程占用cpu的百分比(用户进程) |
0.0 sy | 内核进程 (硬件) |
0.0 ni | 优先级的进程占用cpu的百分比 |
99.7 id | 空闲的进程 |
0.0 wa | 大量的等待 --> |
0.0 hi | 硬中断 |
0.0 si | 软中断 |
0.0 st | 虚拟机占用物理CPU的百分比 |
进程信息
列名 | 含义 |
---|---|
PID | 进程id |
USER | 进程所有者的用户名 |
PR | 优先级 |
NI | 负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb,VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | 共享内存大小,单位kb |
S | 进程状态 |
%CPU | 进程占用CPU百分比 |
%MEM | 进程占用内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 命令名/命令行 |
6.进程中的iowait 软中断 硬中断?
1.什么是中断
- 中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。
2.中断会带来什么问题?
- 由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。
- 如果中断本身要做的事情不多,那么处理起来也不会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。
- 特别是,中断处理程序在响应中断时,还会临时关闭中断。这就会导致上一次中断处理完成之前,其他中断都不能响应,也就是说中断有可能会丢失。
3.Linux 中的中断处理程序分为上半部和下半部:
- 上半部对应硬件中断,用来快速处理中断。
- 下半部对应软中断,用来异步处理上半部未完成的工作。
Linux 中的软中断包括网络收发、定时、调度、RCU 锁等各种类型,可以通过查看 /proc/softirqs 来观察软中断的运行情况。
软中断 CPU 使用率(softirq)升高是一种很常见的性能问题。虽然软中断的类型很多,但实际生产中,我们遇到的性能瓶颈大多是网络收发类型的软中断,特别是网络接收的软中断。
在碰到这类问题时,你可以借用 sar、tcpdump 等工具,做进一步分析。不要害怕网络性能 。