服务进程 nice值介绍

发布于 2021-11-23  309 次阅读


修改服务/进程 nice值

在 Linux 中,进程的 nice 值用于调整进程的优先级。nice 值越低,进程优先级越高,反之则越低。

一、nice值说明

nice 值是一个与进程优先级相关的参数,通常用来调整进程对 CPU 资源的占用。

它是一个整数值,范围从-20到19,其中-20为最高优先级,19为最低优先级。

在 Linux 系统中,nice 值越低的进程会获得更大的 CPU 时间片,而 nice 值越高的进程的CPU 时间片越小,被调度的越频繁。

因此,通过设置进程的 nice 值,可以调整进程的 CPU 占用率,使得系统中的不同进程能够公平地共享 CPU 资源,避免某些进程占用过多的 CPU 资源导致系统变得卡顿。

1.1 CPU 时间片概念

CPU 时间片是操作系统中用来调度进程的一种机制。
在多任务操作系统中,CPU 资源需要被多个进程共享,为了保证公平性和效率,操作系统采用了分时调度策略。具体地,操作系统将 CPU 时间分割成一小段一小段的时间片,每个进程分配到一个或多个时间片,然后按照时间片顺序轮流使用 CPU 资源。当一个进程的时间片用完后,操作系统会挂起该进程,并分配 CPU 时间片给下一个等待执行的进程。这个过程不断重复,直到所有进程都完成它们的任务。

CPU 时间片的大小通常是操作系统预先设定的,并且可以根据需要进行调整。较小的时间片可以提高系统的响应速度,但也会增加进程切换的次数,从而产生额外的开销而较大的时间片可以减少进程切换的次数,但会降低系统的响应速度,可能导致一些进程长时间占用 CPU 资源。

总结:CPU 时间片是操作系统中用来实现多任务调度的基本单位,它决定了进程能够使用 CPU 资源的时间长度,也影响着系统的响应速度和效率。

1.2 nice 优化建议

一般来说,把进程的 nice 值设置为默认值 0 即可。

如果需要提高某个进程的优先级,可以将其 nice 值设置为负数,如-10 到 -15。反之,如果需要降低某个进程的优先级,可以将其 nice 值设置为正数,如10 到 15。

实际服务器当中,我们应该查看系统得nice 值分布情况,来设置nice 值。

需要注意的是,将进程的 nice 值设置得过低可能会影响系统的整体性能,而将其设置得过高可能会导致进程响应变慢。因此,需要根据实际情况和系统负载来选择合适的 nice 值。

二、修改服务nice值举例

以nginx 服务为例,提供两种修改系统的nice 值得方式

方法一:
#启动方式:
/nice -n  -15  /usr/sbin/nginx
#设置开机自启动
chmod +x /etc/rc.d/rc.local
echo "/usr/bin/nice -n  -15  /usr/sbin/nginx" >> /etc/rc.local

方法二:
#修改 /usr/lib/systemd/system/ 目录下的nginx.service 文件‘
#原有的
ExecStart=/usr/sbin/nginx
##替换为新的,默认启动过程中修改nice值为-15
ExecStart=/usr/bin/nice -n  -15  /usr/sbin/nginx
启动方式:systemctl start nginx
设置开机自启动:systemctl enable  nginx

例如:系统的进程nice 值有 -20,0,19,15,-10(进程nice 值可以通过top进行查看)
0 是默认的linux 默认nice值,19和15都是优先级很低进程

如果只是为解决系统内存100%后杀进程的问题,把nice 设置成-11 或者-19 效果都是一样的,kill 掉-10 进程后,去找比-10更小的,实际也需要考虑cpu 独占的问题,所以可以设置到-15即可。