您的位置:首页 > 运维架构 > Linux

linux 提高进程优先级nice

2015-01-07 15:12 288 查看
进程更改优先级

nice -n 10 bash

如果是超级用户,则-n后面的值可以为负数:-20<=x<=19

renice:

如果您正好启动了一个进程,但意识到它应该以不同的优先级运行,那么有一种方法可以在启动之后对其进行更改,即使用 renice命令。您可以为进程指定一个绝对优先级(不是调整值)

renice +x PID

x指的是一个数字,PID为需要指定的进程的PID值

测试:

先写一个脚本,它可以传入两个参数,保存为count1.sh

#!/bin/bash

x="$1"

echo "$2" $(date)

while [ $x -gt 0 ]; do x=$(( x-1 ));done

echo "$2" $(date)

通过设定不同的优先级运行,发现脚本的完成顺序是不一样的:

(sh count1.sh 5000000 A&);(nice -n 6 sh count1.sh 5000000 B&);\

> (nice -n 12 sh count1.sh 5000000 C&);(nice -n 18 sh count1.sh 5000000 D&);\

> sleep 1;ps -l;sleep 30

执行情况:

A Thu Jan 21 16:06:00 EST 2010

C Thu Jan 21 16:06:00 EST 2010

D Thu Jan 21 16:06:00 EST 2010

B Thu Jan 21 16:06:00 EST 2010

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD

0 R  1000  1422     1 94  80   0 -  1001 -      pts/3    00:00:00 sh

0 R  1000  1424     1 42  86   6 -  1001 -      pts/3    00:00:00 sh

0 R  1000  1427     1 56  92  12 -  1001 -      pts/3    00:00:00 sh

0 R  1000  1431     1 14  98  18 -  1001 -      pts/3    00:00:00 sh

0 R  1000  1435 32408  0  80   0 -  1684 -      pts/3    00:00:00 ps

0 S  1000 32408 32407  0  80   0 -  5368 wait   pts/3    00:00:02 bash

A Thu Jan 21 16:06:14 EST 2010

B Thu Jan 21 16:06:17 EST 2010

C Thu Jan 21 16:06:26 EST 2010

D Thu Jan 21 16:06:30 EST 2010

sched_setscheduler方式:

代码如下:

        int maxRR=0;

        int maxFIFO=0;

        /*

        maxFIFO = sched_get_priority_max(SCHED_FIFO);

        //maxRR = sched_get_priority_max(SCHED_RR);

        if(maxRR == -1 || maxFIFO == -1)

        {

                printf("sched_get_priority_max() error!\n");

                return (1);

        }

        //param.sched_priority = maxRR;

        param.sched_priority = maxFIFO;

        //if(sched_setscheduler(getpid(), SCHED_RR, ¶m) == -1)

        if(sched_setscheduler(getpid(), SCHED_FIFO, ¶m) == -1)

        {

                printf("sched_setscheduler() error!\n");

                return (1);

        }

        printf ("Policy %d\n", sched_getscheduler(0));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: