当前位置: 首页 > news >正文

Linux进程调度

进程优先级

CPU资源分配的先后顺序,就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能

查看系统进程

在Linux系统中,我们可以通过ps -l来查看进程,获取到进程的优先级。
请添加图片描述

其中第一栏的有些参数我们需要先了解一下:

  • UID:代表执行者的身份
  • PID:代表这个进程的编号
  • PPID:代表这个进程由哪个进程发展衍生而来,即父进程的代号
  • PRI:代表这个进程可被执行的优先级,值越小优先级越高,也最早被执行。
  • NI:代表这个进程的nice值。负值表示高优先级,正值表示低优先级。
    在Linux中,进程的优先级范围是[60,99]40个级别,而nice值的范围是[-20,19]。如果nice命令在使用时不带任何参数,则会显示进程默认的nice值,一般为0,而进程的默认的PRI值是80。

调整进程的优先级

进程的优先级由PRI决定,其公式为 P R I ( n e w ) = P R I ( o l d ) + N I PRI(new) = PRI(old) + NI PRI(new)=PRI(old)+NI
由于 P R I ( o l d ) PRI(old) PRI(old)一般是80,所以调整优先级的时候,调整其nice值即可。我们来看一个例子来进行了解。
首先我们先创建一个test.c文件,其中写以下代码:

#include <stdio.h>    
#include <unistd.h>       int main()    
{    printf("I am a process, pid = %d\n", getpid());    while(1)    {}    return 0;                             
}    

然后运行test.exe文件。会一直陷入死循环当中
请添加图片描述

接着我们用ps -la查看进程。
请添加图片描述

可以看到test.exe的PRI是80,现在我们修改这个进程的优先级,即修改nice值。

nice指令

语法:nice [-n N] [command]
主要选项:该命令中,-n选项用于指定将nice值设置为N。当-n选项省略时,nice值默认为10。


由于我们刚才写的程序是死循环,也就是正在运行的进程,所以我们需要用到renice指令,作用是改变正在运行的进程的nice值
语法:

renice [-n] [-p|--pid] <pid>
renice [-n] [-g|--pgrp] <pgrp>
renice [-n] [-u|--user] <user>

选项:

选项含义
n指定nice值,注意n前面出现"-",会被当做负号处理
-p将选项解释为进程ID(默认)
-g将选项解释为所属组的ID
-u将选项解释为用户名或用户ID
例如:

renice -8 -p xxxxx #将PID为xxxxx的进程的nice值设置为-8
renice -8 -u zp #将属于用户zp的进程的nice值设置为-8
renice -8 -g zpG #将属于zpG组的进程的nice值设置为-8

熟悉这些选项之后,就可以改进程的nice值了
请添加图片描述

这时我们的test.exe文件的PRI就变成了PRI = 80 + 11 = 91了。

top指令

ps指令 用于静态监测进程状态,即只能查看当前进程的状态。而top指令可以持续监测进程的运行状态。
功能:top能够实时持续显示系统中各个进程的资源占用状况,其功能类似于Windows的任务管理器。
语法:top命令的语法较为复杂,但绝大多数选项并不常用,所以我们只用学习如下2种语法即可。

  • top:不带任何参数,可以查看所有进程的状态信息。
  • top -p pid:通过-p选项查看pid指定进程的状态信息。
    请添加图片描述

执行top指令后,如果不退出,则会持续执行,并动态更新进程相关信息。退出top界面的话可以按“q”键或者按“ctrl+c”组合键。按下“?”键或按“H”键可以得到top命令交互界面的帮助信息。
接下来我对图片的中的各行信息进行解释。
第1行,与uptime命令的执行结果相同。
第2行,当前运行的各类状态进程(任务)的数量。
第3行,CPU状态信息。
第4行,内存状态信息。
第5行,Swap,交换分区信息。
第7行,各进程的状态监测。各字段的具体含义如下。

  • PID:进程的PID。
  • USER:进程所有者
  • PR:进程的优先级
  • NI:nice值。
  • VIRT:进程使用的虚拟内存总量
  • RESet:进程使用的、未被换出的物理内存大小
  • SHR:共享内存大小。
  • S:进程状态
  • %CPU:上次更新到现在的CPU时间占用百分比
  • %MEM:进程使用的物理内存百分比
  • TIME+:进程使用的CPU时间总计,单位为1/100s
  • COMMAND:进程名称。
    当然我们也可以使用top来修改nice值。方法如下:
  1. 先通过ps指令获取到进程的PID。

  2. 执行top指令,按下r

    • r代表你想要改变某个进程的nice值,此时会出现一个光标,让你输入要改变进程的PID:
      请添加图片描述
  3. 输入PID后,按下回车键,然后提示让你输入你要改变的nice值,我们把nice值变成5。

  4. 按下q键,退出top界面。此时我们输入ps -la来查看刚才的进程。
    请添加图片描述
    OK,修改成功。可以看到NI值变成了5,而PRI变成了85。

http://www.xdnf.cn/news/101773.html

相关文章:

  • AI PPT创作原理解析:让你的演示文稿更智能
  • Python内置函数---breakpoint()
  • 《算法笔记》10.4小节——图算法专题->最短路径 问题 D: 最短路径
  • JavaScript 中改变 this 指向的方法
  • Python 绘图代码解析:用 Turtle 和 Colorsys 打造绚丽图案
  • sde启动报错:Unable to initialize sockets for listening(-102).
  • 基于STM32_HAL库的HC-08蓝牙插座项目
  • C++:多态
  • UnoCSS原子CSS引擎-前端福音
  • 深入解析大数据的Lambda架构:设计、特点与应用场景
  • HTTP代理基础:网络新手的入门指南
  • 从 pip install lanms 失败到解决:Python开发环境配置深度解析
  • FlinkUDF用户自定义函数深度剖析
  • DC-2寻找Flag1、2、3、4、5,wpscan爆破、git提权
  • 2025知识管理趋势解析:AI、协作与用户体验引领变革
  • Ubuntu使用war包部署Jenkins并通过systemcl管理
  • 电池大脑的基准测试及AI拓展
  • 制作一款打飞机游戏18:敌人子弹
  • 量子金融工程:蒙特卡洛算法误差压缩至0.3%
  • 【刷题Day24】I/O模型(浅)
  • Rust 学习笔记:安装 Rust
  • YOLOv11架构革新:基于增强型空间-通道协同模块(ESE)解决SE注意力机制中的通道信息丢失问题
  • Linux驱动开发2 - 内核定时器驱动
  • 【android bluetooth 协议分析 06】【l2cap详解 6】【L2CA_Register函数解析】
  • Certimate本地化自动化 SSL/TLS 证书管理解决方案
  • 探索Hadoop:大数据世界的基石
  • RabbitMQ复习笔记
  • HarmonyOS-ArkUI: 组件内转场(transition)
  • create_function()漏洞利用
  • vue | 不同 vue 版本对复杂泛型的支持情况 · vue3.2 VS vue3.5