linux系统中的进程分类:

    交互式进程(IO密集型)

    批处理进程(cpu密集型)

    实时进程(守护进程)

   平衡进程IO密集和CPU密集的方法:

    对于IO密集型:cpu时间片短,优先级较高

    对于cpu密集型:时间片较长,优先级较低


进程优先级

   分为实时进程优先级、静态进程优先级、动态进程优先级

    实时进程优先级:1-99(数字越小,优先级越低),一般是与系统内核相关的进程

    静态优先级:100-139(数字越小,优先级越高),一般是用户空间的进程

        实时进程优先级比静态优先级高

    动态优先级:当某个进程长时间得不到运行时,内核临时性调高该进程的优先级;或当某个进

           程过于占用资源时,会调低优先级。(对象一般是100-139的进程)


调整进程优先级:

    创建一个进程时,其默认优先级为120,此时其nice值为0,nice取值范围是-20至19,一共40个级别。这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。可通过nice命令改变一个将要执行的进程的nice值,或通过renice命令修改正在执行的进程的nice值

nice -n 10 bash    #将bash的nice值修改为10,此时优先级为130
renice 5 bash    #将正在运行中的bash进程的nice值加5


进程的调度策略

    当两个进程的优先级一样时,就需要一定的调度策略

    实时进程调度策略:

        SCHED_FIFO:以先进先出的队列方式进行调度,在优先级一样的情况下,谁先执行的就

             先调度谁,除非它退出或者主动释放CPU。

        SCHED_RR:以时间片轮转的方式对相同优先级的多个进程进行处理。

    非实时进程调度策略:

        SCHED_OTHER、SCHED_IDLE


使用chrt命令查看和设定进程的调度策略

用法:chrt [options] -p [指定优先级] PID

    options:

        -f      调度器设成 SCHED_FIFO    

        -o      调度器设成 SCHED_OTHER    

        -r      调度器设成 SCHED_RR       

[root@localhost ~]# chrt -p 34735    #查看pid为34735的进程属性
pid 34735's current scheduling policy: SCHED_OTHER
pid 34735's current scheduling priority: 0
# chrt -f -p 50 1000    #将PID 1000 的进程设定成 SCHED_FIFO,优先级设定成50。

# chrt -o -p 0 1000    #将PID 1000 的进程设定成 SCHED_OTHER,优先级设定成0。

# chrt -f 50 /bin/test.sh    #启动 /bin/test.sh 设定成 SCHED_FIFO,优先级设定成50