Linux进程管理进程优先级nice

简介: Linux进程调度及多任务,每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序

一、概述


1、简介


       Linux进程调度及多任务,每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序


二、优先级范围及特性


1、优先级范围


优先级分为系统和nice优先级,在top中显示的优先级有两个,PR值和nice值。
NI:实际nice值。
PR(NI+20):将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39。


如图优先级范围,黄色部分是nice优先级范围是-20——19这个范围是我们能更改的,黑色部分是系统优先级这个是我们无法更改的,进程的nice优先级要加上20才是进程在系统中的优先级(为了防止我们更改的一些nice优先级超过系统进程的优先级导致系统的错误)。


02792573894c4af69ca91a267f84ae72.png


2、优先级的特性


nice值越大:表示优先级越低,例如+19。

nice值越小:表示优先级越高,例如-20。


三、查看进程的nice级别


命令:ps  axo  pid ,command,nice

[root@localhost ~]# ps axo pid,command,nice
   PID COMMAND                      NI
     1 /usr/lib/systemd/systemd --   0
     2 [kthreadd]                    0
     4 [kworker/0:0H]              -20
     5 [kworker/u256:0]              0
     6 [ksoftirqd/0]                 0
     7 [migration/0]                 -
     8 [rcu_bh]                      0
     9 [rcu_sched]                   0
    10 [lru-add-drain]             -20
    11 [watchdog/0]                  -
    13 [kdevtmpfs]                   0
    14 [netns]                     -20
    15 [khungtaskd]                  0
    16 [writeback]                 -20
    17 [kintegrityd]               -20
    18 [bioset]                    -20
    19 [bioset]                    -20
    20 [bioset]                    -20

四、启动 具有不同nice级别的进程


1、默认情况


启动进程时,通常会继承父进程的nice级别,默认为0。


2、手动启动(以sleep为例)


1)了解sleep命令


命令:sleep  数字        //sleep是睡眠是等待命令后面跟的数字代表等待多少秒。

          sleep  数字   &      //加上&表示不占用前台让sleep在后台运行。

[root@localhost ~]# sleep  3            //表示要等待3秒才能执行后面的命令
[root@localhost ~]# sleep  6000  &     //等待6000秒,在后台运行不占用前台
[1] 2972                                //该进程的pid


2)手动启动不同nice


命令:nice  -n  nice值   命令

[root@localhost ~]# nice -n  -5  sleep 6000&    //将sleep 6000这个进程的nice优先级设为-5
[2] 3012                                        //该进程的pid
[root@localhost ~]# nice -n  -15  sleep 7000&    //将sleep 7000这个进程的nice优先级设为-15
[3] 3019                                        //该进程的pid
[root@localhost ~]# ps axo pid,command,nice|grep sleep    //查看sleep的进程
  3011 sleep 60                      0
  3012 sleep 6000                   -5
  3019 sleep 7000                  -15

五、更改现有进程的nice级别


1、创建一个睡眠示例程序


命令:sleep   8000  &

[root@localhost ~]# sleep 8000&
[4] 3110                            //该进程的pid


2、修改nice值


命令:renice   nice值   pid

[root@localhost ~]# renice  -20  3110                //修改3110进程的nice为-20
3110 (进程 ID) 旧优先级为 0,新优先级为 -20
[root@localhost ~]# top -d 1 -p 3110                //查看3110的动态进程信息
Cpu(s):  6.1 us,  2.0 sy,  0.0 ni, 91.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995676 total,    72252 free,   684976 used,   238448 buff/cache
KiB Swap:  2097148 total,  2070356 free,    26792 used.   153160 avail Mem 
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND            
  3110 root       0 -20  108052    356    280 S  0.0  0.0   0:00.00 sleep       


可以看出3110进程的系统优先级(PR)为0,nice优先级(NI)为-20。PR的值=NI的值+20。














相关文章
|
28天前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
23天前
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
30 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
|
4天前
|
Linux 调度
Linux源码阅读笔记05-进程优先级与调度策略-实战分析
Linux源码阅读笔记05-进程优先级与调度策略-实战分析
|
23天前
|
缓存 监控 Linux
入职必会-开发环境搭建40-Linux常用操作-Linux进程管理
进程是正在执行的程序或命令。每个进程独立的,都有需要占用一定的系统资源。Linux系统中启动进程有两种方式:1.Linux操作系统启动的时自动启动的进程。2.用户在终端输入命令启动的进程。
入职必会-开发环境搭建40-Linux常用操作-Linux进程管理
|
4天前
|
Linux API C语言
Linux源码阅读笔记02-进程原理及系统调用
Linux源码阅读笔记02-进程原理及系统调用
|
7天前
|
Linux Shell 调度
【在Linux世界中追寻伟大的One Piece】Linux进程概念
【在Linux世界中追寻伟大的One Piece】Linux进程概念
16 1
|
18天前
|
算法 调度 UED
深入理解操作系统:进程调度与优先级反转
【8月更文挑战第2天】在操作系统的心脏中,进程调度是维持多任务并发执行的关键机制。本文将通过一个简化的Python代码示例,揭示进程调度背后的逻辑,并探讨优先级反转现象及其对系统性能的影响。我们将从基础概念出发,逐步深入到进程调度算法的实现,最终讨论如何优化调度策略以提升系统响应性和效率。
|
19天前
|
算法 Linux 调度
深入理解操作系统:进程调度与优先级
【7月更文挑战第31天】在计算机科学中,操作系统是连接用户和硬件的桥梁。它管理着计算机的资源,并确保资源的公平分配。本文将深入探讨操作系统的一个重要组成部分——进程调度,以及如何通过优先级来优化系统性能。我们将通过代码示例,展示如何在Linux系统中实现一个简单的优先级调度算法。
24 4
|
5天前
|
Linux
Linux 查找进程所在目录
Linux 查找进程所在目录
17 0
|
7天前
|
缓存 Linux Shell
【在Linux世界中追寻伟大的One Piece】Linux进程控制
【在Linux世界中追寻伟大的One Piece】Linux进程控制
15 0