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));
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));
相关文章推荐
- linux 提高进程优先级nice
- Linux改变进程优先级的nice命令
- linux进程优先级、进程nice/renice设置
- linux nice命令: 设置进程优先级
- Linux环境下提高进程优先级
- Linux改变进程优先级的nice及renice命令
- linux nice与renice进程优先级调度命令学习与示例
- Linux环境下提高进程优先级
- Linux改变进程优先级的Nice命令
- Linux 下nice 函数用法提高一个进程的友善值
- Linux改变进程优先级 linux Nice命令
- Linux改变进程优先级的nice命令
- linux 提高进程优先级nice+ 进程调度CFS
- Linux的进程优先级 Nice 和 priority
- linux 使用nice命令设置进程优先级
- Linux改变进程优先级的nice命令
- 【Linux】进程优先级、进程nice值和%nice
- Linux系统进程优先级
- linux 进程优先级
- Linux系统下提升进程优先级的办法