Linux进程nice值的作用及调整方法 (linux进程nice)

在Linux系统中,每个正在执行的进程都有一个nice值,它的作用是调整进程在CPU中被调度的优先级。在本文中,我们将探讨进程nice值的作用,以及如何调整它来优化系统性能。

进程nice值的基本概念

Linux进程nice值是一个整数值,通常范围在-20到20之间。正值表示较低的优先级,而负值表示较高的优先级。默认情况下,所有进程都有一个0的nice值,表示正常优先级。

在Linux系统中,当CPU空闲时,调度程序会寻找可运行进程,选择优先级更高(nice值更低)的进程运行。如果在CPU使用率高的情况下,CPU会更频繁地切换进程,以便更多的进程能够接收到处理时间。

调整进程优先级的原因主要是为了在一些紧急的、重要的任务需要立即完成时分配更多的CPU时间片,同时避免一些低优先级进程的浪费。例如,如果一个进程负责处理用户请求,那么它需要比其他进程具有更高的优先级。

调整nice值

在Linux系统中,可以使用nice或renice命令来调整进程的优先级:

– 使用nice命令调整进程nice值,例如,将进程pid的nice值设置为10:

nice -n 10 pid

– 使用renice命令更改已有进程的nice值,例如,将进程pid的nice值增加到5:

renice 5 pid

需要注意的是,这些命令只对普通用户进程起作用,无法对实时进程和内核线程进行调度优化。

优先级类别

Linux优先级分为4种类别,可通过sysctl命令调整。默认情况下,Linux系统启用的多进程优化策略为进程时间片最小化(即,进程的优先级越高,它的时间片就越小,因此需要更频繁地执行),其中,四个进程优先级类别为:

1.实时类(RT)

该类别为实时进程提供更高优先级。当需要立即完成某些任务时,可以设置进程为实时优先级。

2.实时优先级(FIFO)

该类别为其他实时进程提供高优先级。与实时类进程相比,实时优先级进程需要分配的时间更少。

3.普通类(Normal)

大多数用户进程属于此类别。这些进程的优先级由nice值和其他参数决定。

4.Idle类

该类别为睡眠进程提供优先级,这些进程可以执行更低优先级,从而降低整个系统的负载。

信号

Linux系统中还有一些信号,可以通过kill命令或其他工具向进程发送。一些信号可以调整进程的优先级,例如:

– SIGSTOP(stop)

该信号可用于暂停任何进程。进程的优先级将被暂停,并在收到SIGCONT(continue)信号后恢复。

– SIGCONT(continue)

该信号可用于继续被暂停的进程。

– SIGTERM(terminate)

该信号可用于请求进程终止,进程的优先级将被调整为更低。

本文讨论了。通过设置nice值和调整优先级类别,可以改善系统性能和响应度。合理使用信号也可以有效管理进程的优先级。理解这些基本概念和方法,将使管理员可以更好地调整和管理系统中的进程。

相关问题拓展阅读:

linux线程怎样调整nice值

nice()系统调用,改变进程执行优先顺序

Linux下程序运行期CPU nice很高,怎么破

关键是nice高的厅罩话,是否是对CPU利用不充分的标志,这个查了一些资料,没太理解到。

us + ni 才是扮知闹真正 user mode 占用的时间,你机器的 cpu 几乎是猛此满负载运行,而且时间基本都是消耗在了 user mode 中。

linux 调整CPU程序调度的几种方法

一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上

#taskset

-p, 设定一个已存在的pid,而不是重新开启一个新任务

-c, 指定一个处理,可以指定蠢族升多个,以逗号分隔,也可指定范围,如:2,4,5,6-8。

1,切换某个进程到指定的cpu上

taskset -cp

2,让某程序运行在指定的cpu上

taskset -c 1,2,4-7 tar jcf test.tar.gz test

需要注意的是,taskset -cp在设定一个已经存在的pid时,子进程并不会继承父进程的,

因此像tar zcf .tar.gz 这样的命令,更好在启动时指定cpu,如果在已经带老启动的情况下,则需要指定tar调用的gzip进程。

二,使用nice和renice设置程序执行的优先级

格式:nice 命令

nice 指令可以改变程序执行的优先权等级。指令让使用者在执行程序时,指定一个优先等级,称之为 nice 值。

这个数值从更高优先级的-20到更低优先级的19。负数值只有 root 才有权力使。

一般使用者,也可使用 nice 指令来做执行程序的优先级管理,但只能将nice值越调越高。

可以通过二种方式来给某个程序设定nice值:

1,开始执行程序时给定一个nice值,用nice命令

2,调整某个运行中程序的PID的nice值,用renice命令

通常通过调高nice值来备份,为的是不占用非常多的系统资源。

例:

nice -n 10 tar zcf test.tar.gz test

由nice启动的程序,其子进程会继承父进程的nice值。

查看nice值

# nice -n -6 vim test.txt &

# ps -l

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

4 S0 –wait pts/:00:00 bash

4 T6 –finish pts/:00:00 vim

renice调整运行中程序的nice值

格式:renice PID

三,使用ulimit限制cpu占用时间

注意,ulimit 限制的是当前shell进程以及其派生的子进程。因此可以在脚本中调用ulimit来限制cpu使用时间。

例如,限制tar的cpu占用时间,单位秒。

# cat limit_cpu.sh

ulimit -SHt 100

tar test.tar.gz test

如果tar占用时间超过了100秒,tar将会退出,这可能会导致打包不完全,因此不推荐使用ulimit对cpu占用时间进行限制。

另外,通过修改系统的/etc/security/limits配置文件,可以针对用户进行限制。

四,使用程序自带的对cpu使用调整的功能

某些程序自带了穗橡对cpu使用调整的功能,比如nginx服务器,通过其配置文件,可以为工作进程指定cpu,如下:

worker_processes 3;

worker_cpu_affinity0 1000;

关于linux进程nice的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux进程nice值的作用及调整方法 (linux进程nice)