当前位置: 首页 > news >正文

优化Linux系统性能的必杀技:调整进程优先级!学会使用nice命令,让你的系统飞一般的顺畅!

在这里插入图片描述

文章目录

  • 前言
  • 一. nice命令介绍
    • 1.1 nice的介绍
    • 1.2 cpu资源的调度
    • 1.3 nice是控制内核吗?
  • 二. 语法格式及常用选项
  • 三. 参考案例
    • 3.1 将ls命令的优先级调整为最高
    • 3.2 将 find 命令的优先级调整为最低
    • 3.3 如何查看nice值
  • 四. nice和renice的区别
  • 总结

前言

大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第54篇文章。

专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。

如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

一. nice命令介绍

1.1 nice的介绍

当多个进程同时运行时,系统必须对它们进行调度以确保它们公平地共享系统资源,例如CPU和内存。

进程调度是操作系统中非常重要的一部分,因为它直接影响到系统的整体性能。Linux系统中有一个非常有用的命令,叫做nice。

nice 命令,它可以用来设置进程的优先级,以便在系统资源有限的情况下更好地分配资源。这个命令可以让程序在 CPU 资源有限时的保持响应性,并且可以让低优先级的任务不影响高优先级任务的执行。

1.2 cpu资源的调度

说到这里就不得不提一下CPU资源的调度:

CPU 资源的调度是操作系统中一个非常重要的功能,操作系统通过 CPU 调度算法来决定哪个进程应该获得 CPU 时间片来执行。

CPU 调度算法的目标是最大化系统的吞吐量、最小化进程的等待时间以及提高系统的响应性能。

常见的 CPU 调度算法有以下几种:

  • 先来先服务调度算法(FCFS):按照进程到达的顺序依次执行,不考虑进程的执行时间和优先级,适用于批处理系统。

  • 短作业优先调度算法(SJF):按照进程的执行时间排序,短作业先执行,适用于交互式系统。

  • 优先级调度算法(Priority Scheduling):每个进程都有一个优先级,优先级高的进程先执行,适用于实时系统和多用户系统。

  • 时间片轮转调度算法(Round Robin):为每个进程分配一个时间片,时间片用完后,进程被挂起,给其他进程执行机会,适用于交互式系统和多用户系统。

  • 多级反馈队列调度算法(Multilevel Feedback Queue):将进程按照优先级划分为多个队列,每个队列有不同的时间片大小,适用于各种系统。

在实际应用中,操作系统通常会采用多种调度算法的组合,以达到更好的性能和更高的吞吐量。同时,操作系统也会根据不同的应用场景和硬件环境进行优化和改进。

而nice是用户能够控制的cpu调度的一种方法。

1.3 nice是控制内核吗?

不是的,nice 命令是用户态程序,通过修改进程的优先级来影响内核的进程调度。

在 Linux 操作系统中,进程的调度是由内核实现的,内核会根据一定的调度算法来选择下一个要执行的进程,并将 CPU 时间片分配给该进程。进程的优先级是内核的一个属性,内核会根据进程的优先级来决定进程的调度顺序。

nice 命令可以用来修改进程的优先级,实际上是通过调用 setpriority() 系统调用来修改进程的优先级,setpriority() 系统调用是内核提供的一个函数,可以用来修改进程的优先级。nice 命令实际上就是在调用 setpriority() 系统调用,并将调整值传递给内核,内核再根据调整值来修改进程的优先级。

因此,nice 命令不是直接控制内核,而是通过修改进程的优先级来影响内核的进程调度。

二. 语法格式及常用选项

依据惯例,我们还是先查看帮助,使用 nice --help

[root@mufenggrow docker]# nice --help
用法:nice [选项] [命令 [参数]...]
Run COMMAND with an adjusted niceness, which affects process scheduling.
With no COMMAND, print the current niceness.  Niceness values range from
-20 (most favorable to the process) to 19 (least favorable to the process).Mandatory arguments to long options are mandatory for short options too.-n, --adjustment=N   add integer N to the niceness (default 10)--help		显示此帮助信息并退出--version		显示版本信息并退出

nice的参数比较简单,一共就三个:

参数描述
-n, --adjustment=N指定优先级的调整值,N 的范围是 -20 到 19。-20 表示最高优先级,19 表示最低优先级。
-h, --help显示帮助信息。
-v, --version显示版本信息。

有了具体的参数之后,我们再来看实战案例:

三. 参考案例

3.1 将ls命令的优先级调整为最高

在 Linux 系统中,进程的优先级是通过一个整数值来表示的,称为“nice 值”。nice 值范围从 -20 到 +19,其中 -20 表示最高优先级,+19 表示最低优先级,0 表示默认优先级。

这里要求将ls调整为最高,所以用 -20, 代码如下:

[root@mufeng ~]# nice -n -20 ls

3.2 将 find 命令的优先级调整为最低

最低使用的是+19, 代码如下:

[root@mufenggrow docker]# nice -n 19 find / -name "test"

注意事项:

  • nice 命令需要使用 root 权限才能够修改其他用户的进程优先级。
  • 优先级的调整值只是一个相对值,因此即使设置了最高优先级,也不能保证程序一定能够立即响应。
  • 对于使用多核 CPU 的系统,nice 命令只能够调整程序在一个 CPU 核心上的优先级,而不能够调整在多个 CPU 核心上的优先级。

3.3 如何查看nice值

案例一: 我们先设置vim a.txt 的nice值为15

[root@mufenggrow ~]# nice -n 15 vim a.txt

然后再另一个创建查看nice值

方法一:使用ps命令:使用以下命令可以列出所有正在运行的进程和它们的nice值

[root@mufenggrow ~]# ps -eo pid,command,nice |grep vim80336 vim a.txt                    15

方法二: 使用top命令:使用以下命令可以打开top监视器并查看正在运行的进程及其nice值

四. nice和renice的区别

nice和renice都是Linux/Unix系统中用于控制进程优先级的命令,但它们的作用不同。

nice命令用于在启动进程时设置进程的初始优先级。

可以在命令行上使用nice命令为任何命令指定一个nice值,以控制该命令的优先级。

更具体地说,nice命令允许您增加或降低一个进程的优先级。默认情况下,所有进程的初始nice值都是0,它们在系统中以默认优先级运行。使用nice命令可以在启动进程时将其nice值设置为负值,以使其在系统中以较低的优先级运行,或将其设置为正值,以使其以较高的优先级运行。

renice命令用于更改已经在运行的进程的优先级。与nice命令不同,renice命令可以更改正在运行的进程的nice值,以便在运行时重新调整其优先级。可以使用renice命令将进程的nice值更改为更高或更低的值,以改变其优先级。

总之,nice和renice都是用于控制进程优先级的命令,但它们的作用不同。nice命令用于在启动进程时设置初始优先级,而renice命令用于更改正在运行的进程的优先级。

案例一:我们使用renice把vim a.txt的优先级调到6

  1. 打开一个终端窗口,并运行以下命令查找正在运行的vim a.txt进程的进程ID
ps -ef | grep "vim a.txt"
  1. 找与vim a.txt进程相关的进程ID,然后将其应用于renice命令。

假设您的vim a.txt进程ID为1234,您可以使用以下命令将其nice值设置为6:

sudo renice -n 6 -p 1234

总结

nice命令在日常工作中,应用的比较广泛,一定要认真学习,记熟记牢常用参数。

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

相关文章:

优化Linux系统性能的必杀技:调整进程优先级!学会使用nice命令,让你的系统飞一般的顺畅!

文章目录前言一. nice命令介绍1.1 nice的介绍1.2 cpu资源的调度1.3 nice是控制内核吗?二. 语法格式及常用选项三. 参考案例3.1 将ls命令的优先级调整为最高3.2 将 find 命令的优先级调整为最低3.3 如何查看nice值四. nice和renice的区别总结前言 大家好&#xff0c…...

fastdds router-3.开始

1. 项目概述 DDS路由器是由eProsima开发的跨平台非图形化应用程序,由Fast DDS提供支持,允许创建一个通信桥,连接两个DDS网络,否则将被隔离。DDS路由器的主要用途是通信两个物理或虚拟分离的DDS网络,这些网络属于不同的…...

云服务器ECS 什么是云服务器ECS?

云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。 云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共…...

【socket网络编程】

socket网络编程主机字节序列和网络字节序列套接字地址结构通用socket地址结构专用的socket地址结构IP地址转换函数网络编程接口TCP编程流程代码举例服务器代码客户端服务器并发处理多个客户端多线程多进程主机字节序列和网络字节序列 主机字节序列分为大端模式和小端模式&…...

【验证码逆向专栏】某验三代、四代一键通过模式逆向分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 本文章未经许可禁止转载…...

《MySql学习》 MySQL的 加锁规则

MySQL加锁原则 两个原则 原则 1:加锁的基本单位是 next-key lock。next-key lock 是前开后闭区间(区间锁和行锁)。原则 2:查找过程中访问到的对象(索引)才会加锁。 两个优化 1.优化 1:索引上…...

软件测试(linux命令篇-01文件操作命令)

linux文件篇命令linux系统常用文件操作命令1、查看目录内容及常用参数:ls2、目录切换:cd 3、创建文件:touch 4、创建目录 :mkdir5、 删除文件或目录:rm6、文件或目录的复制:cp7、文件或目录的移动&#xff…...

Code Virtualizer 3.1.4 Crack

Code Virtualizer 是一个强大的 Windows 应用程序代码混淆系统,它可以帮助开发人员保护他们的敏感代码区域免受逆向工程的影响,基于代码虚拟化的非常强大的混淆代码。 Code Virtualizer 会将您的原始代码(Intel x86/x64 指令)转换…...

Torch同时训练多个模型

20230302 引言 在进行具体的研究时,利用Torch进行编程,考虑到是不是能够同时训练两个模型呢?!而且利用其中一个模型的输出来辅助另外一个模型进行学习。这一点,在我看来应该是很简单的,例如GAN网络同时训…...

LCR数字电桥软件下载安装教程

软件:LCR数字电桥软件NS-LCR 语言:简体中文 环境:NI-VISA 安装环境:Win10以上版本(特殊需求请后台私信联系客服) 硬件要求:CPU2GHz 内存4G(或更高)硬盘500G(或更高) …...

C++模板写法详解

模板 概念 模板就是建立通用的模具,大大提高复用性 模板主要体现了cpp编程的另外一种思想泛型编程cpp提供两种模板机制 函数模板类模板 函数模板 作用 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表 语…...

【备战面试】每日10道面试题打卡-Day2

本篇总结的是Java基础知识相关的面试题,后续也会更新其他相关内容 文章目录1、 和 equals 的区别是什么?2、你重写过 hashcode 和 equals 吗,为什么重写equals时必须重写hashCode方法?3、为什么Java中只有值传递?4、BI…...

“数字档案室测评”相关参考依据梳理

数字档案室建设无疑比数字档案馆建设应用范围更为广泛,涉及的单位类型和专业领域也更多。这一点从国家档案局的机构设置上也可以看出端倪: 国家档案局两个内设业务指导司中,档案馆(室)业务指导司主要针对档案馆和机关档案室,而经济…...

android 动态加载jar包

什么时候需要用到动态加载jar包呢? 减少apk本身大小,某些界面才需要用jar里的功能jar中的功能可以独立开发,不要依赖其它的东西,能适用各个项目和第三方公司合作,人家不提供项目源码给你,但又要开发他们使…...

JAVA版B2B2C商城源码多商户入驻商城

三勾商城多商户是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS Android 公众号 H5 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开神器, 为大中小企业提供极致的移…...

测试人员如何在测试环境数据库批量生成测试数据?方案分享

测试人员为了测试某个特定场景,往往需要在测试环境数据库中插入特定的测试数据来满足需求;性能测试时,常需要在测试环境生成大量可用测试数据来支持性能测试;建设持续集成持续交付体系时,我们往往也需要在测试环境生成…...

【el】表单

elementUI中的表单相关问题一、用法1、动态表单调用接口返回表单&#xff0c;后端的接口返回值如下&#xff1a;这些是渲染后的效果页面使用&#xff08;父组件&#xff09;<el-button size"small" class"Cancelbtn" click"sub(true)">发起…...

【Flutter入门到进阶】Flutter基础篇---布局

1 GridView网格布局组件 1.1 说明 1.1.1 图例 1.1.2 说明 GridView网格布局在实际项目中用的也是非常多的&#xff0c;当我们想让可以滚动的元素使用矩阵方式排列的时 候。此时我们可以用网格列表组件GridView实现布局 GridView创建网格列表主要有下面三种方式 1、可以通过Gr…...

python海龟绘图

一、基础 &#xff08;一&#xff09;介绍 海龟绘图&#xff08;Turtle Graphics&#xff09;&#xff1a;“小海龟”turtle是Python语言中一个很流行的绘制图像的函数库&#xff0c;想象一个小乌龟&#xff0c;在一个横轴为x、纵轴为y的坐标系原点&#xff0c;(0,0)位置开始…...

【计算机网络】数据链路层

概述 封装成帧 差错检验 可靠传输 实现机制 可靠传输的实现机制 停止等待协议 回退N帧协议 选择重传协议 【计算机网络】MAC帧和PPP帧&#xff08;定义使用范围区别共同点&#xff09;_GPNU_Log的博客-CSDN博客_ppp帧 PPP帧和以太网帧 | Mixoo 数据链路层的协议有PPP协…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...