Linux进程优先级

Linux 是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。但是 CPU 在一个时钟周期内只能运算一条指令(现在的 CPU 采用了多线程、多核心技术,所以在一个时钟周期内可以运算多条指令。 但是同时运算的指令数也远远小于系统中的进程总数),所以需要由进程的优先级来决定哪一个进程的运算指令先执行,哪一个进程的运算指令后运行。

在 Linux 系统中,表示进程优先级的有两个参数:Priority 和 Nice。通过"ps -l"命令可以查看参数对应的值:

  1. [root@localhost ~]# ps -le
  2. F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
  3. S - ep_pol ? :: systemd
  4. S - kthrea ? :: kthreadd
  5. ...省略部分输出...

其中,PRI 代表 Priority,NI 代表 Nice。这两个值都表示优先级,数值越小代表该进程越优先被 CPU 处理。不过,PRI值是由内核动态调整的,用户不能直接修改。所以我们只能通过修改 NI 值来影响 PRI 值,间接地调整进程优先级。

PRI 和 NI 的关系 :PRI (最终值) = PRI (原始值) +NI

所以修改 NI 的值就可以改变进程的优先级。NI 值越小,进程的 PRI 就会降低,该进程就越优先被 CPU 处理;反之,NI 值越大,进程的 PRI 值就会増加,该进程就越靠后被 CPU 处理。

修改 NI 值时有几个注意事项:

  • NI 范围是 -20~19。
  • 普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
  • 普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
  • 只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。

nice命令:改变进程优先级

nice 命令可以给新执行的命令直接赋予 NI 值,但是不能修改已经存在进程的 NI 值。nice 命令格式如下:

  1. [root@localhost ~] # nice [选项] 命令

选项:

  • -n NI值:给命令赋予 NI 值;

nice命令改变进程优先级

用默认优先级启动并apache服务,查看 PRI值是80,而NI值是0

  1. [root@localhost ~]# service httpd start
  2. [root@localhost ~]# ps -le grep "httd" | grep -v grep
  3. F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
  4. S - - ? :: httpd
  5. S - - ? :: httpd
  6. S - - ? :: httpd
  7. S - - ? :: httpd
  8. S - - ? :: httpd
  9. S - - ? :: httpd

停止apache服务,并重启动apache服务,同时修改apache服务进程的NI值为-5

  1. [root@localhost ~]# service httpd stop
  2. [root@localhost ~]# nice -n - service httpd start
  3. [rooteiocdlhost ~]# ps -le | grep "httpd" | grep -v grep
  4. F S UID PID PPID C FRI NI ADDR SZ WCHAN TTY TIME CMD
  5. S - - - ? :: httpd
  6. S - - - ? :: httpd
  7. S - - - ? :: httpd
  8. S - - - ? :: httpd
  9. S - - - ? :: httpd
  10. S - - - ? :: httpd

httpd进程的PRI值变为了75,而NI值为-5

renice 命令:改变进程优先级

renice 命令可以修改已经存在进程的 NI 值。renice 命令格式如下:

  1. [root@localhost ~] # renice [优先级] PID

renice 命令改变进程优先级

  1. [root@localhost ~]# renice -
  2. : old priority -, new priority -
  3. [root@localhost ~]# ps -le | grep "httpd" | grep -v grep
  4. S - - 113.0 - ? :: httpd
  5. S - - - ? :: httpd
  6. S - - - ? :: httpd
  7. S - - - ? :: httpd
  8. S - - - ? :: httpd
  9. S 2.127 - - - ? :: httpd

PID为2125的进程的PRI值为70,而NI值为-10

Linux 进程管理 进程优先级管理的更多相关文章

  1. linux进程查看及管理的工具

     介绍Linux进程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, jo ...

  2. Linux - 进程查看与管理

    标签(空格分隔): Linux 进程的静态查看 查看系统所有进程 ps -ef -- 输出来好乱,看不懂..: ps aux -- a表示所有与终端相关的进程,u表示所有以用户组织的进程状态的信息,x ...

  3. Linux进程虚拟地址空间管理2

    2017-04-12 前篇文章对Linux进程地址空间的布局以及各个部分的功能做了简要介绍,本文主要对各个部分的具体使用做下简要分析,主要涉及三个方面:1.MMAP文件的映射过程 2.用户 内存的动态 ...

  4. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

  5. Linux进程管理子系统分析【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...

  6. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  7. 12个Linux进程管理命令介绍

    导读 执行中的程序称作进程.当程序可以执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作 ...

  8. 十二 个经典 Linux 进程管理命令介绍

    执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作系统 ...

  9. 12 个 Linux 进程管理命令介绍

    执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作系统 ...

随机推荐

  1. HTML 文档的基本结构

    HTML文件是什么? q  HTML表示超文本标记语言(Hyper Text Markup Language). q  HTML文件是一个包含标记的文本文件. q  这些标记保速浏览器怎样显示这个页面 ...

  2. css !import

    !important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权,语法格式{ sRule!important },即写在定义的最后面,并且在分号之前,比如: {font-color: r ...

  3. EntityFramework增删改查

    http://www.cnblogs.com/libingql/archive/2013/01/29/2881988.html

  4. 标C编程笔记day05 函数声明、文件读写、联合类型、枚举类型

    函数声明:     1.隐式声明:在没有声明的情况下,系统可依据參数类型推断去调用函数(有可能出错)     2.显式声明:声明在被调用之前.如:double add(double,double);  ...

  5. Qt 配置文件QSettings读取以及中文问题

    QSettings settings("xxxx.ini",QSettings::IniFormat);settings.setIniCodec(QTextCodec::codec ...

  6. ios APP 在 waiting for review时重新上传程序

    今天上传程序后发现了一个挺大的bug,想重新上传app,于是搜了一下,现记录一下: 点击details进入后在link点击binary details,进入之后点击右上角reject this bin ...

  7. 【BZOJ1822】[JSOI2010]Frozen Nova 冷冻波 几何+二分+网络流

    [BZOJ1822][JSOI2010]Frozen Nova 冷冻波 Description WJJ喜欢“魔兽争霸”这个游戏.在游戏中,巫妖是一种强大的英雄,它的技能Frozen Nova每次可以杀 ...

  8. JRE not compatible with workspace .class file compatibility: 1.7

    在进行Eclipse开发的时候,经常会遇到一些小问题,现在开始每天积累一些小问题的解决方法.出现:JRE not compatible with workspace .class file compa ...

  9. PIP源使用国内镜像

    对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成 ...

  10. Python IDLE或shell中切换路径

    在Python自带的编辑器IDLE中或者python shell中不能使用cd命令,那么跳到目标路径呢.方法是使用os包下的相关函数实现路径切换功能. import os  os.getcwd() # ...