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

《Linux从小白到高手》综合应用篇:深入理解Linux进程调优

本篇深入介绍Linux进程调优.

1. Linux系统进程类型:

Linux的进程可能有成千上万个:
在这里插入图片描述
‌新建状态‌:进程刚刚被创建,但尚未运行。
‌就绪状态‌:进程已经准备好运行,等待CPU分配。
‌运行状态‌:进程正在CPU上执行。
‌等待状态‌:进程等待某个事件或资源,如I/O操作完成。
‌终止状态‌:进程已经结束,等待系统回收资源。
Linux系统进程状态有以下几种:
‌可中断的睡眠状态(S浅度睡眠状态)‌:进程正在等待某个事件或资源,可以被信号或中断唤醒。
‌不可中断的睡眠状态(D深度睡眠状态)‌:进程正在等待磁盘I/O或其他硬件操作完成,无法被中断。
‌停止状态(T)‌:进程已经被停止执行,通常是因为接收到了某种信号而停止。
‌进程跟踪状态(t)‌:用于调试和跟踪进程。
进程之间也是有着错综复杂的关系的,我们可以用pstree来查看进程结构:
在这里插入图片描述

2. 进程优先级调整

nice 值和 renice 命令:
在这里插入图片描述
–nice 值是一个进程的优先级调整参数,范围从 -20 到 19,数值越低优先级越高。默认情况下,新进程的 nice 值为 0。
–使用nice命令可以在启动新进程时指定 nice 值。例如:

nice -n 10 myprogram
//将以 nice 值为 10 启动myprogram

–使用renice命令可以调整正在运行的进程的 nice 值。例如:
renice -n 5 -p [进程 ID]将指定进程的 nice 值调整为 5。
实时进程优先级:
–Linux 还支持实时进程,实时进程的优先级高于普通进程。实时进程的优先级范围从 0 到 99,数值越低优先级越高。
–使用sched_setscheduler系统调用可以将进程设置为实时进程。这需要在程序中使用特定的编程接口进行设置,通常只有特定的应用场景才需要使用实时进程。

3. 进程资源限制

ulimit 命令:
–ulimit命令可以限制用户或进程的资源使用。例如,可以使用ulimit -n查看当前用户可以打开的最大文件描述符数量,使用ulimit -n [新的限制值]可以设置新的限制。
–可以在 shell 启动脚本(如.bashrc或.profile)中设置ulimit参数,以确保用户在每次登录时都有特定的资源限制。
cgroups(Control Groups):
–cgroups 是 Linux 内核提供的一种机制,可以对一组进程的资源使用进行限制和管理。
–可以使用 cgroups 限制进程的 CPU、内存、磁盘 I/O 等资源的使用。例如,可以限制一组进程使用的 CPU 时间份额,防止某个进程过度占用 CPU 资源。
–通过修改/sys/fs/cgroup/[资源类型]/[控制组名称]/[参数文件]中的值来设置资源限制。例如,要限制一个控制组中的进程使用的 CPU 时间份额,可以修改/sys/fs/cgroup/cpu/[控制组名称]/cpu.cfs_quota_us和cpu.cfs_period_us文件。

4. 进程调度优化

内核调度算法:
–Linux 内核提供了几种进程调度算法,如完全公平调度算法(CFS)和实时调度算法。
–可以通过调整内核参数来影响调度算法的行为。例如,可以调整/proc/sys/kernel/sched_min_granularity_ns和/proc/sys/kernel/sched_wakeup_granularity_ns参数来控制 CFS 调度器的时间粒度,减少不必要的上下文切换。
进程绑定 CPU 核心:
–使用taskset命令可以将特定的进程绑定到特定的 CPU 核心上,避免进程在不同核心之间频繁切换,减少上下文切换开销。例如,taskset -c 0,1 myprogram将myprogram绑定到 CPU 核心 0 和 1 上。

5. 进程监控和分析

top、htop 等工具:
–top和htop是常用的系统监控工具,可以实时显示系统中进程的资源使用情况,包括 CPU 使用率、内存使用量、磁盘 I/O 等。
–通过这些工具可以快速了解系统中哪些进程占用了较多的资源,以便进行优化。
strace 和 ltrace 命令:
–strace命令可以跟踪进程的系统调用,帮助了解进程在运行过程中与操作系统的交互情况。
–ltrace命令可以跟踪进程的库函数调用,有助于分析进程的行为和性能瓶颈。
perf 工具:
–perf是 Linux 内核提供的性能分析工具,可以对系统和应用程序的性能进行详细的分析。
–可以使用perf top查看系统中最耗时的函数,使用perf record和perf report进行更深入的性能分析。

6. 进程调优需要注意的事项

谨慎调整优先级和资源限制:
–过高或过低的优先级可能会导致某些进程无法获得足够的资源,影响系统的整体性能和稳定性。在调整进程优先级和资源限制时,需要根据实际情况进行测试和调整,避免出现资源竞争或饥饿问题。
考虑应用程序的特性:
–不同的应用程序对资源的需求和行为可能不同。在进行进程优化时,需要考虑应用程序的特性,例如是否是 CPU 密集型、内存密集型或 I/O 密集型,以便采取合适的优化措施。
监控和调整:
进程优化是一个持续的过程,需要不断地监控系统性能和进程行为,根据实际情况进行调整。可以使用各种监控工具和性能分析工具,及时发现问题并采取相应的优化措施。
结合不同应用特点做调整:
比如Oracle和Mysql,还有一些java应用,它们都有许多的后台进程,需要结合各自的作用做谨慎调整。

本篇完结。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,家人们的点赞和关注是我笔耕不辍的动力。

相关文章:

《Linux从小白到高手》综合应用篇:深入理解Linux进程调优

本篇深入介绍Linux进程调优. 1. Linux系统进程类型: Linux的进程可能有成千上万个: ‌新建状态‌:进程刚刚被创建,但尚未运行。 ‌就绪状态‌:进程已经准备好运行,等待CPU分配。 ‌运行状态‌&#xff1…...

Linux安装elasticsearch单机版

下载地址: Download Elasticsearch | Elastic 下载的安装包是elasticsearch-7.12.0-linux-x86_64.tar.gz 解压缩文件 tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz #编辑文件 vim config/elasticsearch.yml# 加入如下配置 # 集群名称,一个…...

el-table表头加红色星标

代码&#xff1a; <el-table-column prop"name" label"姓名" width"auto"><template #header><span style"color: red; margin-right: 4px">*</span><span>姓名</span></template></el…...

2.1 HTML5 - Canvas标签

文章目录 引言Canvas标签概述定义实例&#xff1a;创建画布 理解Canvas坐标系概述实例&#xff1a;获取Canvas坐标 获取Canvas环境上下文概述实例&#xff1a;获取Canvas环境上下文设置渐变色效果 结语 引言 大家好&#xff0c;今天我们要一起探索HTML5中一个非常有趣且强大的…...

T-Box联网安全定义

T-Box&#xff0c;即Telematics BOX&#xff0c;也称远程信息处理控制单元&#xff08;Telematics Control Unit&#xff0c;TCU&#xff09;&#xff0c;是车联网中的重要组成部分。它集成了GPS、外部通信接口、电子处理单元、微控制器、移动通信单元和存储器等功能模块&#…...

7. 整数反转【数学】

文章目录 7. 整数反转解题思路Go代码 7. 整数反转 7. 整数反转 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [−231,231−1] &#xff0…...

Windows环境NodeJS下载配置安装运行

Windows环境NodeJS下载配置安装运行 &#xff08;1&#xff09;下载 Node.js — Run JavaScript Everywhere 安装文件。 一路傻瓜式安装。 如果安装正常&#xff0c;输入命令可显示版本号&#xff1a; &#xff08;2&#xff09;可以查询nodejs默认的后续依赖安装包位置及缓存…...

石化巡检必备神器,AORO A30防爆手机让“跑冒滴漏”无处藏身!

在石油化工企业生产现场&#xff0c;设备种类繁多&#xff0c;巡检项目错综复杂&#xff0c;任何微小的疏忽都可能引发严重的安全事故。遨游通讯推出了AORO A30防爆手机&#xff0c;精准定位细微故障&#xff0c;在源头上有效控制或消除“跑冒滴漏”等安全隐患。 AORO A30防爆手…...

Smartfusion2开发环境的搭建

Libero软件安装包括libero安装、bibero补丁安装、bibero的license添加和官方ip库的添加等4部分内容组成。具体内容如下所示&#xff1a; 1 Libero软件安装 1、解压LiberoSoC_v11.8的安装包到当前目录&#xff0c;然后运行Libero中的可执行软件进行安装&#xff1b; 图1 双击l…...

使用C++编写一个语音播报时钟(Qt)

要求&#xff1a;当系统时间达到输入的时间时&#xff0c;语音播报对话框中的内容。定时可以取消。qt界面如上图所示。组件如下&#xff1a; countdownEdit作为书写目标时间的line_edit start_btn作为开始和停止的按钮 stop_btn作为取消的按钮 systimelab显示系统时间的lab tex…...

架构师之路-学渣到学霸历程-11

权限管理 我们可以通过一下命令来了解Linux的用户权限&#xff1b; Linux的用户权限真的涉及得非常好&#xff0c;让我们了解一下用户权限的知识吧&#xff1b; let’s go go go~&#xff01; chmod命令&#xff1a; 作用&#xff1a;变更文件或者目录的权限语法&#xff1a…...

Java Mail腾讯企业邮箱或其他邮箱发送邮件失败bug记录

问题出现情况 邮件发送时debug用F8逐步运行可以成功发送邮件&#xff0c;但是用F9或者直接运行程序却发送失败未开启mail的debug模式的报错日志是下面这个&#xff1a;org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is java…...

【大数据】HBase集群断电文件坏块导致集群无法启动处理

hfile文件有坏块 Corrupt文件目录&#xff1a;/hbase/data/… HBase异常&#xff1a;region无法在正常上线&#xff0c;http://master:16010页面看region 一直处于transition状态 wal文件损坏 Corrupt文件目录&#xff1a;/hbase/oldWALs/…或/hbase/WALs/… HBase异常&…...

400行程序写一个实时操作系统(三):Sparrow的学习方法

千里之行始于足下&#xff0c;为了让大家的学习更加事半功倍&#xff0c;笔者将会介绍RTOS的学习方法。 可能很多人拿到一份源码&#xff0c;就想通过各种方式搞懂它&#xff0c;例如抄代码或者读代码。 笔者认为&#xff0c;单纯抄一个实时操作系统是没有任何用处的。比如对…...

为什么人工智能用 Python?

人工智能领域倾向于使用Python&#xff0c;主要归因于Python的多个显著优势&#xff1a; 简洁性与可读性&#xff1a;Python的语法设计简洁明了&#xff0c;代码易于阅读和理解&#xff0c;这对于涉及复杂算法和逻辑的人工智能项目尤为重要。它降低了编程门槛&#xff0c;使得…...

【C++差分数组】P1672何时运输的饲料

本文涉及知识点 C差分数组 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 P1672何时运输的饲料 原文比较啰嗦&#xff0c;我简述一下&#xff1a; 第x天运来F1(1<F1<1e6)千克的饲料&#xff0c;第D&#xff08;1<2e3)天还剩F2&…...

Go基础知识:切片

数组 Go 数组的大小是固定的&#xff0c;其长度是其类型的一部分&#xff08;[4]int并且[5]int是不同的、不兼容的类型&#xff09; var a [10]intb : [2]string{"Penn", "Teller"} b : [...]string{"Penn", "Teller"}package maini…...

Redis配置篇 - 指定Redis配置的三种方式,以及Redis配置文件介绍

文章目录 1 指定Redis配置的三种方式1.1 通过命令行参数来指定Redis配置1.2 通过配置文件来指定Redis配置1.3 在服务器运行时更​​改 Redis 配置 2 关于Redis配置文件 1 指定Redis配置的三种方式 1.1 通过命令行参数来指定Redis配置 在redis启动时&#xff0c;可以直接通过命…...

探索scikit-learn的datasets模块:数据集的加载与使用

引言 在机器学习和数据分析领域&#xff0c;数据集的选择和准备是至关重要的一步。scikit-learn库的datasets模块为我们提供了多种内置的数据集&#xff0c;方便我们进行模型训练和测试。这些数据集既有大型的数据集&#xff0c;也有便于教学和初步探索的小型数据集。本文将重…...

手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]

有时候&#xff0c;您会被锁定在自己的 Android 设备之外&#xff0c;而且似乎不可能重新进入。 一个例子就是你买了一部二手手机&#xff0c;后来发现无法使用。另一种情况是你忘记了屏幕锁定密码和用于验证密码的 Google 帐户凭据。这种情况很少见&#xff0c;但确实会发生&…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...

FTPS、HTTPS、SMTPS以及WebSockets over TLS的概念及其应用场景

一、什么是FTPS&#xff1f; FTPS&#xff0c;英文全称File Transfer Protocol with support for Transport Layer Security (SSL/TLS)&#xff0c;安全文件传输协议&#xff0c;是一种对常用的文件传输协议(FTP)添加传输层安全(TLS)和安全套接层(SSL)加密协议支持的扩展协议。…...