Linux top命令cpu使用率计算底层原理
在Linux中,top命令通过读取内核提供的统计数据来计算CPU使用率。其底层原理可以概括为以下几步:
1. 读取 /proc/stat
top命令主要从/proc/stat文件中获取CPU的统计信息。这个文件包含了每个CPU核心(或所有核心合计)的各种状态下的时间计数,单位是jiffies(一个jiffy是内核时间单位,通常是1/100秒或1/1000秒,取决于Hertz配置)。
/proc/stat中包含的关键信息有:
-
user (us) - 普通进程在用户态消耗的时间。
-
nice (ni) - 优先级调整过的进程在用户态消耗的时间。
-
system (sy) - 内核进程在内核态消耗的时间。
-
idle (id) - CPU空闲时间。
-
iowait (wa) - CPU等待I/O完成的时间。
-
irq (hi) - 硬件中断处理时间。
-
softirq (si) - 软件中断处理时间。
-
steal (st) - 在虚拟化环境中,虚拟CPU被其他操作系统偷走的时间(若适用)。
-
guest (guest) - 运行虚拟CPU的时间(若适用)。
2. 计算时间差
top会周期性地(通常是每秒一次)读取/proc/stat的数据,然后计算两次读取之间的时间差。这样可以获得每个状态下CPU使用的时间增长。
3. CPU使用率计算
使用这些时间差,top计算CPU使用率如下:
-
总时间(total time)计算:将所有状态的时间差加起来(user + nice + system + idle + iowait + irq + softirq + steal + guest)。
-
CPU使用率(某一状态的使用率)= (该状态的时间差 / 总时间差)* 100。
例如,CPU的用户态使用率计算公式为:
用户态使用率=(user新的−user旧的total新的−total旧的)×100
其中,user代表用户态时间,total代表总时间。
4. 多核处理
对于多核CPU,top会为每个核心独立计算使用率,然后可以显示单核或所有核心的总体使用率。/proc/stat中会为每个CPU核心提供单独的行数据,以cpu0, cpu1, ..., cpuN命名。
5. 显示
top会将这些百分比转换成易读的格式,并在屏幕上实时更新显示。
这种计算方式允许top命令给出精确的、瞬时和历史的CPU使用率数据,帮助用户监控系统性能。
相关文章:
Linux top命令cpu使用率计算底层原理
在Linux中,top命令通过读取内核提供的统计数据来计算CPU使用率。其底层原理可以概括为以下几步: 1. 读取 /proc/stat top命令主要从/proc/stat文件中获取CPU的统计信息。这个文件包含了每个CPU核心(或所有核心合计)的各种状态下的…...
vue知识点总结
vue2知识点总结 watch: watch 是 Vue 提供的一个选项,它允许你观察 Vue 实例上的数据变化。当观察的数据发生变化时,会执行相应的回调函数,这样你就可以对数据的变化做出响应,执行一些特定的操作。 export default {data() {re…...
[实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()
目录 1. 项目介绍 2. 技术选型 3. 开发环境和环境搭建 Ubuntu-22.04环境搭建 1. 安装 wget(一般情况下默认会自带) 2. 更换国内软件源 ① 备份原始 /etc/apt/sources.list 文件 ② 编辑软件源文件 ③ 更新软件包列表 3. 安装常用工具 3.1 安装…...
llamafactory使用8张昇腾910b算力卡lora微调训练qwen2-72b大模型
说明 我需要在昇腾服务器上对Qwen2-72B大模型进行lora微调,改变其自我认知。 我的环境下是8张910B1卡。显存约512GB。 准备:安装llamafactory 请参考官方方法安装llamafactory:https://github.com/hiyouga/LLaMA-Factory 特别强调下&…...
C++,设计模式,【目录篇】
文章目录 1. 简介2. 设计模式的分类2.1 创建型模式(Creational Patterns):2.2 结构型模式(Structural Patterns):2.3 行为型模式(Behavioral Patterns): 3. 使用设计模式…...
《目标检测数据集下载地址》
一、引言 在计算机视觉的广袤领域中,目标检测宛如一颗璀璨的明星,占据着举足轻重的地位。它宛如赋予计算机一双锐利的 “眼睛”,使其能够精准识别图像或视频中的各类目标,并确定其位置,以边界框的形式清晰呈现。这项技…...
C 语言的void*到底是什么?
一、void* 的类型任意性 void* 是一种通用指针类型。它可以指向任意类型的数据。例如,它可以指向一个整数(int)、一个浮点数(float)、一个字符(char)或者一个结构体等。在C语言中,当…...
Linux中的文件上传和下载
Linux中的文件上传和下载 一、连接 SFTP 在 SecureCRT 中,将鼠标移动到连接窗口的标题上,按鼠标右键,选择“连接 SFTP”标签,即可进入 SFTP 模式。 二、基本指令及用途 1. 显示当前目录 显示本地当前目录:lpwd 示例…...
DDD - 微服务落地的技术实践
文章目录 Pre概述如何发挥微服务的优势怎样提供微服务接口原则微服务的拆分与防腐层的设计 去中心化的数据管理数据关联查询的难题Case 1Case 2Case 3 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服…...
fgets、scanf存字符串应用
题目1 夺旗(英语:Capture the flag,简称 CTF)在计算机安全中是一种活动,当中会将“旗子”秘密地埋藏于有目的的易受攻击的程序或网站。参赛者从其他参赛者或主办方偷去旗子。 非常崇拜探姬的小学妹最近迷上了 CTF&am…...
鸿蒙动态路由实现方案
背景 随着CSDN 鸿蒙APP 业务功能的增加,以及为了与iOS、Android 端统一页面跳转路由,以及动态下发路由链接,路由重定向等功能。鸿蒙动态路由方案的实现迫在眉睫。 实现方案 鸿蒙版本动态路由的实现原理,类似于 iOS与Android的实…...
Spring-boot3.4最新版整合swagger和Mybatis-plus
好家伙,今天终于开始用spring-boot3开始写项目了,以后要彻底告别1.x和2.x了,同样的jdk也来到了最低17的要求了,废话不多说直接开始 这是官方文档的要求jdk最低是17 maven最低是3.6 一. 构建工程,这一步就不需要给大家解释了吧 二. 整合Knife4j 1.大于…...
基于Java的高校实习管理平台
基于Java的高校实习管理平台是一个专为高校设计的信息化管理工具,旨在通过信息化手段简化实习管理流程,提高管理效率,增强学校、企业与学生之间的沟通与协作。: 一、系统背景与意义 随着教育体系的不断完善和就业市场的日益竞争…...
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用技巧)
二、一维数组应用技巧2:打标记 实战训练1—开关灯 问题描述: 有 M个从1到M依次编号的人参加一项游戏。将K 盏从1到K依次编号的灯(K和M均为正整数,M≤K≤5000)进行一系列的熄灭与打开的操作,游戏开始时均处于亮灯的状态…...
【2024年华为OD机试】 (B卷,100分)- 路灯照明问题(Java JS PythonC/C++)
一、问题描述 路灯照明问题 题目描述 在一条笔直的公路上安装了 ( N ) 个路灯,从位置 0 开始安装,路灯之间间距固定为 100 米。每个路灯都有自己的照明半径。请计算第一个路灯和最后一个路灯之间,无法照明的区间的长度和。 输入描述 第一…...
SVGAPlayer error 处理
提示错误 Call to undeclared function OSAtomicCompareAndSwapPtrBarrier; ISO C99 and later do not support implicit function declarations Conflicting types for OSAtomicCompareAndSwapPtrBarrier Declaration of OSAtomicCompareAndSwapPtrBarrier must be imported …...
2024年12月电子学会青少年机器人技术等级考试(二级)实际操作试卷
2024.12 青少年机器人技术等级考试(二级)实际操作试卷 一、多选题 第 1 题 关于后轮驱动车说法正确的有哪些?( ) A.起步加速表现比前轮驱动好 B.容易转向过度 C.车身重量比前轮驱动更均衡 D.造价比前轮驱动车更高…...
Swift 专题二 语法速查
一 、变量 let, var 变量是可变的,使用 var 修饰,常量是不可变的,使用 let 修饰。类、结构体和枚举里的变量是属性。 var v1:String "hi" // 标注类型 var v2 "类型推导" let l1 "标题" // 常量class a {…...
Api网关Zuul
网关分类与开放API 开放API (OpenAPI) 企业需要将自身数据、能力等作为开发平台向外开放,通常会以REST的方式向外提供,最好的例子就是淘宝开放平台、腾讯公司的QQ开发平台、微信开放平台。开放API平台必然涉及到客户应用的接入、API权限的管理、调用次数…...
01设计模式(D3_设计模式类型 - D3_行为型模式)
目录 一、模版方法模式 1. 基本介绍 2. 应用案例一:豆浆制作问题 需求 代码实现 模板方法模式的钩子方法 3. View的draw(Android) Android中View的draw方法就是使用了模板方法模式 模板方法模式在 Spring 框架应用的源码分析 知识小…...
Spring Cloud进阶--分布式权限校验OAuth痉
一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...
遗留系统改造:逐步重构与接口适配的策略
遗留系统改造:逐步重构与接口适配的策略 在数字化转型浪潮中,企业常面临老旧系统难以适应新业务需求的挑战。直接替换遗留系统成本高、风险大,而逐步重构与接口适配成为平衡效率与稳定性的关键策略。这一策略通过渐进式优化,既保…...
Qwen2_5_VLProcessor架构解析:多模态处理器的设计与实现
1. Qwen2_5_VLProcessor架构概览 Qwen2_5_VLProcessor是一个专门设计用于处理多模态数据的处理器,它能够同时处理文本、图像和视频输入。这个处理器的核心思想是将不同类型的数据统一到一个框架下进行处理,使得模型能够更好地理解和生成包含多种模态的内…...
《数字孪生90%都是假的,只有空间智能体才是真的》——从“可视化幻觉”到“空间计算现实”的范式重构
摘要过去五年,“数字孪生”几乎成为智慧城市、园区、港口、工业、水利、矿山等领域的标准配置: 三维模型 大屏可视化 数据接入 数字孪生。但问题在于:绝大多数系统,只是“看起来像真的”,并不“真的在运行现实”。镜…...
ESP8266红外MQTT网关:基于Homie协议的轻量级IoT封装
1. 项目概述simple-homie-iot-ir是一个面向 ESP8266 平台(亦可适配 ESP32)的轻量级嵌入式 IoT 封装库,其核心定位并非从零实现 Homie 规范,而是作为homie-iotESP 库的简化抽象层,专为红外(IR)设…...
吃灰安卓机变身 OpenClaw 服务器 — 完整手册纲
前言 在使用 kubectl get $KIND -o yaml 查看 k8s 资源时,输出结果中包含大量由集群自动生成的元数据(如 managedFields、resourceVersion、uid 等)。这些信息在实际复用 yaml 清单时需要手动清理,增加了额外的工作量。 使用 kube…...
使用Alpine配置WSL ssh门户狙
1. 哑铃图是什么? 哑铃图(Dumbbell Plot),有时也称为DNA图或杠铃图,是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中,我们通常使用两条折…...
模型不是壁垒,Harness 也不是
文章目录前言一、先从那个" accidents "说起吧二、Harness 到底是个啥?别被唬住了三、OpenAI 和 Google 早就跟上了四、源码泄漏后我发现了啥秘密五、真正的壁垒到底在哪儿?六、我实际用起来是啥感受七、给开发者的一些大实话八、这事儿还没完…...
两台 H.323 终端点对点直连通信完整步骤
下面给你最精简、最标准、可用于考试/开发/调试的: 两台 H.323 终端点对点直连通信完整步骤 无网守(Gatekeeper)、纯终端对终端,一步不落。一、前提条件 终端A:主叫(比如 192.168.1.10)终端B&am…...
一键生成多语言字幕:用Open-Lyrics轻松实现音频视频AI翻译
一键生成多语言字幕:用Open-Lyrics轻松实现音频视频AI翻译 【免费下载链接】openlrc Transcribe and translate voice into LRC file using Whisper and LLMs (GPT, Claude, et,al). 使用whisper和LLM(GPT,Claude等)来转录、翻译你的音频为字幕文件。 …...
