进程管理

RH442 - 性能调优学习笔记(五)_进程管理

常用命令:

ps aux
ps -ef
  • 1.
  • 2.

RH442 - 性能调优学习笔记(五)_RH442_02

USER:运行该进程的用户

PID:进程ID

%CPU:CPU的占用率

%MEM:内存的占用率

VSZ:虚拟内存申请的大小

RSS:物理内存占用大小

TTY:运行该进程的终端,?表示该进程不是从终端运行的

STAT:进程的状态,S 就是sleep(休眠状态),I<(可中断的进程)

man ps
  • 1.

RH442 - 性能调优学习笔记(五)_进程管理_03

START:该进程的启动时间

TIME:持续运行的时间,处于休眠状态的进程不计时,从休眠状态恢复运行重新开始计时

COMMAND:该进程是由哪条命令提供的

RH442 - 性能调优学习笔记(五)_RH442_04

可以通过ps axo 自定义显示字段。

RH442 - 性能调优学习笔记(五)_RH442_05

通过CPU占用率排序(从高到低)。

RH442 - 性能调优学习笔记(五)_进程管理_06

RH442 - 性能调优学习笔记(五)_RH442_07

RH442 - 性能调优学习笔记(五)_进程管理_08

RH442 - 性能调优学习笔记(五)_进程管理_09

RH442 - 性能调优学习笔记(五)_RH442_10

当你需要终止一个进程的时候,默认是发送15 的信号,也请尽量使用15 的信号,不到万不得已不要使用9,如果服务正在使用,可能造成数据丢失。

安装一个httpd

yum -y install httpd
systemctl start httpd
ps aux |grep httpd
  • 1.
  • 2.
  • 3.

RH442 - 性能调优学习笔记(五)_RH442_11

这种情况下,如果你想要使用kill 命令一个个结束这些进程,就有点繁琐了,使用killall 命令就更合适。

killall 命令需要安装一个包:

yum -y install psmisc.x86_64
  • 1.

然后:

killall httpd
  • 1.

RH442 - 性能调优学习笔记(五)_进程管理_12

这样就把httpd 名称相关的进程都结束了。

RH442 - 性能调优学习笔记(五)_RH442_13

RH442 - 性能调优学习笔记(五)_进程管理_14

RH442 - 性能调优学习笔记(五)_RH442_15

RH442 - 性能调优学习笔记(五)_RH442_16

RH442 - 性能调优学习笔记(五)_进程管理_17

进程分为动态优先级和静态优先级

在CE 阶段,我们学习到的nice 优先级叫做动态优先级,即使我们调整到-20,其实它的优先级依然很低。

其实从整个大的优先级范围来看,是0-139,其中,静态优先级的取值范围是1-99,数字越大,优先级越高;动态优先级是范围是-20 - 19,数字越小,优先级越高。

动态优先级的数值,在静态优先级看来,都为0。

命令chrt(change realtime):

chrt
  • 1.

RH442 - 性能调优学习笔记(五)_进程管理_18

在静态优先级看来,nice 优先级都是0。

RH442 - 性能调优学习笔记(五)_进程管理_19

RH442 - 性能调优学习笔记(五)_RH442_20

实时优先级的算法,有两种:

  • FIFO:先进先出,先进来的优先处理,如果被优先级更高的进程中断,则插入到队列的头部
  • RR:轮循,给进程分配时间片,高优先级的进程有更长的时间片,一旦时间片用完了,则插入到队列的后面

RH442 - 性能调优学习笔记(五)_进程管理_21

下面做一下实验:

RH442 - 性能调优学习笔记(五)_进程管理_22

这里需要调整一个内核参数,它限制了一个进程运行时的最大时间片,改成-1表示无限制,这样才能执行下面chrt 那条命令,这个操作其实非常危险,不建议在生产环境上做。

RH442 - 性能调优学习笔记(五)_RH442_23

再加一个进程,机器死机了。这是因为这两个进程长时间占用cpu 资源,其他程序一直得不到时间片。

RH442 - 性能调优学习笔记(五)_RH442_24

主机恢复后,这次只运行一个,通过chrt -p 可以查看到这个进程的实时优先级调度策略,和优先级值。

RH442 - 性能调优学习笔记(五)_进程管理_25

RH442 - 性能调优学习笔记(五)_进程管理_26

RH442 - 性能调优学习笔记(五)_RH442_27

再运行一个,机器也死机了。为什么轮循还会死机呢?因为只是在静态优先级,也可以叫做是实时优先级的进程之间轮循,并不是与动态优先级的进程轮循。

系统中默认有一些进程就是属于静态优先级的:

RH442 - 性能调优学习笔记(五)_RH442_28

RH442 - 性能调优学习笔记(五)_进程管理_29

这是属于系统中非常重要的进程。


持续更新中...