Linux进程优先级如何调整优化?

理解优先级指标

  1. Nice值

    • 用户可调整的范围:-20(最高优先级)到19(最低优先级)
    • 默认值:0(新进程继承父进程的nice值)
  2. PR值(Priority)

    • 内核维护的实际优先级(0-139),其中0-99用于实时进程
    • Nice值影响PR值PR = 20 + Nice(普通进程)

示例:nice=-20PR=0(最高)


查看进程优先级

方法1:top命令

top
  • Shift + P按CPU排序
  • 关键列:
    PR:实际优先级
    NI:Nice值

方法2:ps命令

ps -eo pid,comm,ni,pri,rtprio  # 显示Nice值、PR值、实时优先级

修改优先级的方法

▶ 启动新进程时设置

nice命令直接指定Nice值:

nice -n -15 /path/to/program  # 启动时设置Nice=-15

▶ 修改运行中进程

renice调整已存在进程:

renice -n -5 -p 1234  # 将PID=1234的进程Nice值设为-5
  • 权限要求
    • 普通用户:只能降低优先级(增大Nice值)
    • root用户:可任意调整(包括提升优先级)

▶ 通过top交互修改

  1. 运行top
  2. r → 输入目标PID → 输入新Nice值
  3. 实时生效(无需重启进程)

实时进程优先级(高级)

需配合chrt命令,用于需要严格调度的任务(如音频处理):

chrt -f -p 99 1234  # 设置PID=1234为实时进程,优先级99(最高)
  • -f:FIFO调度策略
  • 优先级范围:1-99(值越大优先级越高)

⚠️ 警告:错误使用可能导致系统不稳定,建议仅限专业场景。


注意事项

  1. 权限限制

    • 非root用户无法提升优先级(Nice值不可低于0)
    • 临时提权:sudo renice -n -10 -p 1234
  2. 效果持久性

    • 优先级调整仅对当前进程有效,重启后失效
    • 需长期生效?通过启动脚本配合nice命令
  3. 系统稳定性

    • 避免将过多进程设为高优先级(可能导致资源争抢)
    • 实时进程需谨慎使用(可能阻塞系统进程)

场景 命令 示例
启动新进程 nice nice -n -10 ./app
修改运行中进程 renice renice -n 5 -p 4567
实时进程调整 chrt chrt -r -p 90 1234
交互式调整(无需停止) top + r 在top界面操作

关键原则:

  • 优先使用Nice值-2019
  • root权限才能提升优先级
  • 实时进程保留给关键系统任务

引用说明: 基于Linux内核文档(kernel.org)及Ubuntu、Red Hat官方手册,已通过CentOS 9和Ubuntu 22.04实测验证,命令规范遵循IEEE POSIX标准。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7786.html

(0)
酷番叔酷番叔
上一篇 2025年7月18日 01:52
下一篇 2025年7月18日 02:02

相关推荐

  • 如何查看Linux系统中80端口被什么程序占用?

    在Linux系统中,端口是应用程序与网络通信的入口,当80端口(Web服务的默认端口)被占用时,可能导致Web服务无法启动或访问异常,快速定位占用80端口的程序是解决此类问题的关键,本文将详细介绍几种常用的方法,帮助用户高效排查端口占用问题,使用netstat命令查看端口占用netstat是Linux系统中传统……

    2025年8月22日
    3000
  • 项目如何在linux上运行

    先安装必要依赖,配置环境变量,将项目文件放置合适位置,然后

    2025年8月18日
    2900
  • Linux卡死?如何秒切命令行紧急处理!

    临时切换(无需重启)方法1:快捷键切换虚拟终端步骤:同时按下 Ctrl + Alt + F1 到 F6 中的任意键(如 F3),系统立即切换到纯命令行终端(tty),需输入用户名和密码登录,返回图形界面:按 Ctrl + Alt + F2 或 F7/F8(不同发行版可能不同,通常F1-F6为CLI,F7/F8为……

    2025年7月4日
    4900
  • Linux中如何创建两个子进程?具体实现方法是什么?

    在Linux操作系统中,创建进程是操作系统核心功能之一,主要通过系统调用实现,最常用的是fork()系统调用,它是Linux/Unix中创建新进程的基础方法,本文将详细介绍如何使用fork()创建两个进程,并探讨相关机制和注意事项,fork()系统调用基础fork()是Linux中用于创建子进程的系统调用,其核……

    2025年10月5日
    800
  • linux如何调用.so

    Linux 中,可使用ldconfig配置动态链接库缓存,通过`ld.

    2025年8月10日
    3800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信