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
[[email protected] ~]# 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
时间: 2024-10-01 02:16:51