ps 命令的 PRI 值和 task_struct 的 prio 值的关系是咋样

更新,ps 输出 的pri 并非进程结构中的pri, ps 输出的pri 应该称为 opri, 是从pri(0-139转化而来),转化关系:
ps 命令的 PRI 值和 task_struct 的 prio 值的关系是咋样

如果想使Ps 输出 看到pri(0-139),可使用pri_baz 这个参数:
ps 命令的 PRI 值和 task_struct 的 prio 值的关系是咋样

————————————————分割线,————————————
ps 输出 中 pri 那一列的 -40 至100 对应进程动态优先级的 0-140 ,
ps输出 pri 值-40至60 对应 0-100(实时优先级 经知友 @foobar 提醒,原来我理解有误,原来我认为只有内核线程才可以用实时的策略), ps输出 pri 值 61-100对应101至140 (也就是用于普通进程nice值 的-20至19)所以,ps pri 输出 80 实际上对应的是 :nice值 为0的进程,nice值为0的动态优先级为 120 ,同理,nice值 为-20的进程动态优先级为 100, nice值为 -10的进程动态优先级为 110.
取你的 进程, nice值 为0,动态优先级为 120, 120-MAX_RT_PRIO =20
至于ps pri 为什么取 -40至 100, 而不是 0-140, 这个我也不知道, 还没查到为何这样做的资料。
下面是我系统 上一个进程的例子:
# ps -efl |grep 28041
1 S root 28041 2 0 60 -20 - 0 loop_t Mar21 ? 00:00:00
0 S root 28665 9108 0 80 0 - 25813 pipe_w 10:05 pts/0 00:00:00 grep 28041
上面28041为进程id, 60为pri列的输出 , -20 为ni列, 前面说 nice值为 -20的进程动态优先级为100
来看这个进程的 task结构中pri值 :
crash\u0026gt; set 28041 PID: 28041COMMAND: "loop0" TASK: ffff8802bcbbd540 CPU: 9 STATE: TASK_INTERRUPTIBLE crash\u0026gt; taskPID: 28041 TASK: ffff8802bcbbd540 CPU: 9 COMMAND: "loop0"struct task_struct { state = 1, stack = 0xffff88022be9e000, usage = { counter = 2 }, flags = 2149613632, ptrace = 0, lock_depth = -1, prio = 100, static_prio = 100, normal_prio = 100, rt_priority = 0, sched_class = 0xffffffff8160be60, 下面是proc 中该进程的sched信息: 注意最后两行: policy为0,prio为100
policy为0, 可以查 task_struct中 unsigned int policy 的取值及说明。
# pwd/proc/28041# lsls: cannot read symbolic link exe: No such file or directoryattr cgroup comm cwd fd limits mem mountstats numa_maps oom_score_adj root sessionid stat syscallautogroup clear_refs coredump_filter environ fdinfo loginuid mountinfo net oom_adj pagemap sched smaps statm taskauxv cmdline cpuset exe io maps mounts ns oom_score personality schedstat stack status wchan# cat schedloop0 (28041, #threads: 1)---------------------------------------------------------se.exec_start : 8561745644.001483se.vruntime : 160756866.243344......se.nr_forced_migrations : 0se.nr_wakeups : 482......nr_switches : 483nr_voluntary_switches : 483nr_involuntary_switches : 0se.load.weight : 88761policy : 0prio : 100


推荐阅读