如何查看线程的优先级linux
如何查看线程的优先级linux详细介绍
在 Linux 中,线程的优先级可以通过命令行工具或编程接口查看,以下是具体方法:
一、命令行工具查看
1. 使用
ps 或
top(适合系统级监控)
bash
pid,tid,user,comm,ni,pri
- 关键字段说明:
NI(Nice 值):普通线程优先级,范围[-20, 19],值越小优先级越高(默认 0)。PRI(实时优先级):实时线程优先级,范围[0, 99](仅对实时调度策略有效,如SCHED_FIFO/SCHED_RR)。
2. 通过
/proc 文件系统(精准查看指定线程)
bash
/proc/1234/task/1234/status
输出示例:
plaintext
SchedPolicy: SCHED_RR # 调度策略(0=OTHER,1=FIFO,2=RR)prio: 20 # 实时优先级(仅对实时策略有效)
nice: -5 # nice 值(普通线程优先级)
二、编程接口查看(C/C++)
使用 pthread 库获取当前线程优先级:
c
tid
param
policy
tid policy param
tid
policy
SCHED_OTHER
SCHED_FIFO
SCHED_RR
paramsched_priority
tid SCHED_OTHER PRIO_PROCESS
- 编译运行:
gcc -o thread_prio thread_prio.c && ./thread_prio - 说明:
- 普通线程(
SCHED_OTHER)优先级由nice值决定,实时线程(SCHED_FIFO/SCHED_RR)由sched_priority决定。 - 实时优先级需通过
sudo或修改/etc/security/limits.conf赋予权限。
- 普通线程(
三、常见问题
- 线程与进程的关系:Linux 中线程是轻量级进程(LWP),共享进程资源,每个线程有独立的优先级。
- 优先级范围:
- 普通线程:
nice值[-20, 19](nice -n -20最高,nice -n 19最低)。 - 实时线程:
sched_priority[1, 99](值越大优先级越高,0 表示普通线程)。
- 普通线程:
- 权限限制:普通用户只能降低优先级(
nice值 ≥0),提高优先级或设置实时优先级需 root 权限。
根据场景选择工具:系统监控用 top/ps,开发调试用编程接口,精准查询用 /proc。