zoukankan      html  css  js  c++  java
  • 9.8-9 nice & renice

    nice:调整程序运行时的优先级

           nice命令是一个当程序启动时,修改程序运行优先级的命令。
      Linux的优先级范围是从-20(最大优先级)到19(最小优先级)。优先级越高的程序占用CPU的次数越多,反之亦然。

    nice命令的参数选项及说明

    -n num设置    nice增加的数值,num取值从-20~19。不使用n选项相当于-n 10 的效果
                  说明:
                  ①root用户可随意调整自己或他人程序的nice值,且范围为-20~19
                  ②普通用户仅可调整自己程序的nice值,且范围仅为0~19(避免普通用户抢占系统资源)
                  ③普通用户仅可将nice值往高调,例如nice值原本为5,则未来仅能调整到大于5的值
     

    使用范例

     
    单独使用nice命令
    [root@cs6 ~]# nice    #<=命令不接任何内容时,显示出当前系统默认的程序运行优先级为0。
    0
     
    默认增加优先级10
    [root@cs6 ~]# nice nice
    10
     
        其中,第1个nice命令以默认值10来调整第2个nice命令运行的优先级,即在系统默认的程序运行优先级0的基础之上增加10,得到新的程序运行优先级10,然后以优先级10来运行第2个nice命令,最后第2个nice命令显示当前程序运行的优先级为10。
     
    [root@cs6 ~]# nice nice nice
    19
     
        其中,第1个nice命令以默认值10来调整第2个nice命令运行的优先级,即在系统默认的程序运行优先级0的基础之上增加10,得到新的程序运行优先级10,然后以优先级10来运行第2个nice命令,随后第2个nice命令又以默认值10来调整第3个nice命令运行的优先级,即在第2个nice命令运行优先级的基础之上再增加10,得到新的程序运行优先级20,但20大于最小程序运行优先级19,所以最终是以优先级19来运行第3个nice命令,最后第3个nice命令显示当前程序运行的优先级为19。
     

    查看进程优先级

    [root@cs6 ~]# ps -l
    F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0   1492   1488  0  80   0 - 27079 do_wai pts/0    00:00:00 bash
    4 R     0   1703   1492  0  80   0 - 27033 -      pts/0    00:00:00 ps
    前面已经学过ps命令了,这里使用ps-1查看进程的优先级。
    在上面的输出结果中,需要重点关注以下两列。
      PRI:代表这个进程的优先级,通俗点说就是进程被CPU执行的先后顺序,此值越小进程的优先级别就越高,就能越早执行。
           NI:代表这个进程的nice值,表示进程可被执行的优先级的修正数值,在加入nice值后,将会使得PRI变为:PRI(new)=80(PRI初始默认值)+nice。这样一来,如果nice值为负值,那么该进程的优先级值将变小,即其优先级会变高,也表示其越快被执行。
      NI是优先值,是用户层面的概念,PR是进程的实际优先级,是给内核(kemel)看(用)的。
      进程的nice值不是进程的优先级,它们不是一个概念,但是进程的nice值会影响到进程的优先级变化。

    测试PRI和NI的关系

    [root@cs6 ~]# vim test1 & #<=通过这个后台任务创建一个进程。
    [1] 1704
    [root@cs6 ~]# ls
    fav.jpg  lewen.log  lewen.nc  test.txt  web.sh
     
    [1]+  Stopped                 vim test1
    [root@cs6 ~]# ps -l
    F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0   1492   1488  0  80   0 - 27079 do_wai pts/0    00:00:00 bash
    0 T     0   1704   1492  0  80   0 - 34223 do_sig pts/0    00:00:00 vim
    4 R     0   1706   1492  0  80   0 - 27035 -      pts/0    00:00:00 ps
    在上面的命令中,默认情况下,NI的值都为0,PRI的值都为80。
    现在使用nice命令调整一下进程的优先级。
     
    [root@cs6 ~]# nice -n -10 vim test2 &  #<=使用nice调整为-10。
    [2] 1707
    [root@cs6 ~]# ps -l
    F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0   1492   1488  0  80   0 - 27079 do_wai pts/0    00:00:00 bash
    0 T     0   1704   1492  0  80   0 - 34223 do_sig pts/0    00:00:00 vim
    4 T     0   1707   1492  0  70 -10 - 34223 do_sig pts/0    00:00:00 vim
    4 R     0   1708   1492  0  80   0 - 27033 -      pts/0    00:00:00 ps
     
    [2]+  Stopped                 nice -n -10 vim test2

     经过nice命令调整,可以发现NI列变为-10,而PRI列变化为70=80+(-10)。

     renice:调整运行中的进程的优先级

        nice命令常用于修改未运行的程序运行时的优先级,但是对于正在运行的进程,若想要修改其优先级,就需要用到renice命令。
        在系统运行中,有时会发现某个不是很重要的进程占用了太多的CPU资源,因此会希望限制这个进程或者是希望某个进程优先运行。这些都是renice命令的使用场景。
     

    renice 命令的参数

    -n num    设置nice增加的数值,num取值范图从-20~19
    -g        修改指定用户组的进程的优先级
    -u        修改指定用户的进程的优先级
    -p        修改指定pid的进程的优先级
     
    [root@cs6 ~]# ps -l
    F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0   1492   1488  0  80   0 - 27079 do_wai pts/0    00:00:00 bash
    0 T     0   1704   1492  0  80   0 - 34223 do_sig pts/0    00:00:00 vim
    4 T     0   1707   1492  0  70 -10 - 34223 do_sig pts/0    00:00:00 vim
    4 R     0   1719   1492  0  80   0 - 27033 -      pts/0    00:00:00 ps
    [root@cs6 ~]# renice -n 5 -p 1707    #<==使用renice的一p参数指定值为1707的进程,将其NI值调整为5。
    1707: old priority -10, new priority 5
    [root@cs6 ~]# ps -l
    F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0   1492   1488  0  80   0 - 27079 do_wai pts/0    00:00:00 bash
    0 T     0   1704   1492  0  80   0 - 34223 do_sig pts/0    00:00:00 vim
    4 T     0   1707   1492  0  85   5 - 34223 do_sig pts/0    00:00:00 vim
    4 R     0   1726   1492  0  80   0 - 27033 -      pts/0    00:00:00 ps

     通过测试可以发现,PRI值并不是在上一次的基础上进行变化,而是一直在初始默认值80这个值之上变动。

     
     
     
  • 相关阅读:
    【函数】wm_concat包的订制
    【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)
    【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章
    【故障处理】队列等待之TX
    【转载】TX
    【转载】Linux磁盘管理:LVM逻辑卷管理
    【索引】Oracle之不可见索引和虚拟索引的比对
    小麦苗微信公众号文章链接地址
    Oracle 11g新特性direct path read引发的系统停运故障诊断处理
    常识之外:全表扫描为何产生大量 db file sequential read 单块读?
  • 原文地址:https://www.cnblogs.com/wenyule/p/12214058.html
Copyright © 2011-2022 走看看