ps 命令的 PRI 值和 task_struct 的 prio 值的关系是咋样
更新,ps 输出 的pri 并非进程结构中的pri, ps 输出的pri 应该称为 opri, 是从pri(0-139转化而来),转化关系:
如果想使Ps 输出 看到pri(0-139),可使用pri_baz 这个参数:
————————————————分割线,————————————
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
推荐阅读
- 开发/维护 一个类似qq会员或者Amazon Prime会员的会员系统有哪些难点和挑战
- strawberryperl,执行print命令时,显示“无法初始化设备PRN\"是咋回事呢
- 两辆丰田车同时被遥控钥匙命令锁住车门,结果两辆车都没能锁住,这是啥原因
- 看完c++ primer plus 还有必要再买本c++ primer看吗?
- 为啥C语言没有直接支持二进制数
- 用java开发app后台用啥框架
- 自学C,有如《C Primer Plus》第六版一类较经典的书推荐吗
- 从一个含有 n 个元素的集合中同时找出最大值和最小值,最少需要比较几次?
- 哪个版本的 Windows 7 能够安装 E-Prime
- 以太网中vlan priority优先级是怎样在广域网传输中继承的