运行多任务?学会 nice 和 renice,让资源分配更有序


hello大家好😊

Linux 进程调度和多任务 🚩

现代计算机系统中既包含只有单个CPU 且任何时候都只能执行单个指令的低端系统,也包含高性能超级计算机,这些超级计算机每台配备数百个CPU,且每个 CPU 上有数十甚至数百个处理核心,可并行执行大量指令。所有这些系统还有一个共同点:它们需要运行的进程线程数量超出了其CPU 数量。
通过使用称为时间片或多任务的技术,Linux和其他操作系统可运行超出其处理单元数的进程。操作系统进程调度程序在单个核心上的进程之间快速切换,从而给人一种有多个进程在同时运行的印象。

在多任务操作系统中,多个进程需要共享有限的系统资源。为了实现公平的资源分配,每个进程都分配了一个优先级。这个优先级通常由操作系统根据不同的因素自动分配。较低的优先级值表示更高的优先级,进程有更大的机会在资源分配时被优先选择执行。

进程的调度算法决定了哪个进程应该在特定时间执行。不同的调度算法可以有不同的目标,如优化响应时间、最大化吞吐量或公平分配资源。在这个背景下,nice 和 renice 命令允许你控制进程的优先级,从而影响它在系统中的调度顺序。

nice ❓

nice 值是一个调整因子,用于控制进程在系统中分配CPU时间的优先级。在Linux系统中,进程的优先级值可以在范围 -20 到 19 之间取值,其中 -20 表示最高优先级,19 表示最低优先级。更低的优先级值意味着进程将获得更多的CPU时间,而更高的优先级值则意味着进程将获得较少的CPU时间。

默认情况下,新创建的进程的优先级为 0。

为很占CPU 资源的进程设置较低的 nice 级别可能对会同一系统上运行的其他进程的性能造成负面影响,所以只有 root 用户可以降低进程的 nice 级别
非特权用户的权限仅限于提高自己进程的 nice 级别。他们不能降低自己进程的 nice 级别,也不能修改其他用户进程的 nice 级别。

显示nice级别

有几个工具可以显示正在运行的进程的 nice 级别。进程管理工具 (如 top)默认显示 nice 级别。其他工具(如ps 命令) 可在使用适当选项的情况下显示 nice 级别。

使用top显示nice级别

这里我先使用循环命令启动 sha1sum /dev/zero & 命令的三个实例。终端将显示进程实例的PID值:
在这里插入图片描述

然后使用top命令动态查看进程:
在这里插入图片描述
NI列显示进程的nice值,而PR列则显示其调度的优先级。nice级别-20映射至PR列中的0,nice级别19映射至PR列中的优先级39

使用ps命令显示nice级别

示例:
在这里插入图片描述

ps u $(pgrep sha1sum) 命令会执行以下操作:

  • 使用 pgrep 命令查找名为 “sha1sum” 的进程的PID
  • 将 pgrep 命令的输出作为参数传递给 ps u 命令,以显示与找到的进程相关的详细信息,包括用户、PID、CPU占用、内存占用等

$(…): 这是一个命令替换结构,它允许在命令行中执行子命令,并将其输出插入到当前命令中

示例:
在这里插入图片描述

ps -o pid,pcpu,nice,comm $(pgrep sha1sum) 命令会执行以下操作:

  • 使用 pgrep 命令查找名为 “sha1sum” 的进程的PID
  • 将找到的进程的PID作为参数传递给 ps 命令,并使用 -o 选项指定要显示的列
  • 显示与找到的进程相关的详细信息,包括进程ID、CPU使用率、优先级和命令名

启动具有不同nice级别的进程

所有用户都可以使用 nice 命令来启动具有默认或更高 nice 级别的命令。在不带选项的情况下,nice 命令将启动一个默认 nice 值为 10 的进程。-n 选项可以指定nice级别。

以下示例将启动 sha1sum 命令作为具有nice 级别为10的后台作业,并显示该进程的 nice 级别:
在这里插入图片描述
在这里插入图片描述

renice ❓

尽管通过 nice 命令可以设置进程的初始优先级,但在进程运行时,系统可能会出现不同的情况。这时,我们可以使用 renice 命令来动态调整进程的优先级,以适应实际需求。

命令的基本语法如下:renice -n <优先级值> <进程ID>

下面的示例中,我们将进程ID为1281的进程的nice级别降低至5
在这里插入图片描述

然后使用ps 和 pgrep命令,显示前面四个进程的CPU百分比和nice级别:

在这里插入图片描述

总结 💯

在多任务操作系统中,合理分配和优化资源至关重要。nice 和 renice 命令为我们提供了控制系统行为的强大工具,使我们能够在多变的环境中优化系统性能和响应性。无论是在个人计算机上还是服务器环境中,深入理解这些命令将使我们能够更好地利用系统资源,提升效率。

感谢 💖

好啦,这次的分享就到这里,感谢大家看到这里🤞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不怕娜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值