Linux环境下的性能分析 之 CPU篇(二)

2、CPU的使用情况分析

a、类似任务管理器的top & htop

说到对CPU的性能分析,大家一定不会忘记windows下那个最熟悉的工具:任务管理器。

7b6bec2b235d4272bcff0c3a15d40a5c.png

 有了这个玩意儿,我们就可以看到CPU的利用率,以及每一个进程所占用的CPU资源。那在Linux下也有类似的工具,最出名的当然是top这个工具。

a583d5d4065f49358c29be23bc8bfce6.png

 

 

看起来是不是很windows的任务管理器很相似呢。在这个命令里,我们最关注的可能是这几样东东:

 

· load average:这里三个数字分别表示最近1分钟、5分钟和15分钟的负载。数值越高负载越重。一般要求最好不要超过cpu的核数。比如,单核就最好小于1。如果看到机器长期出于高于核数的情况,说明机器的cpu排队严重。

 

· cpu使用情况:这一行可以看出cpu的利用率、空闲等信息。如果按下数字键“1”,还可以看到每一个核的情况。

 

· 每一个进程的情况:这个能帮我们看清每一个进程的情况。如果想按照某种方式排序,只需要按下大写的字母“O”,即可选择排序。如果要看具体某个进程,可以运行的时候加上-p参数:top -p pid即可。

 

另一个工具,htop是一个改进型的,使用起来比top更方便。但大部分linux默认不会安装,可以使用yum或者apt-get安装即可使用。使用方法类似。

b5f88c4968b6485f8475ca84a0cf3ba2.png

 

 

b、vmstat

vmstat是老王用的最多的命令之一。通过这个命令,能基本看出当前机器的运行状态和问题。

73774eb4c67c412dabc5d8b20d4b23c0.png

 

运行vmstat 1,就会每隔1秒显示出现在系统的状态,包括cpu的,内存的,io的等等信息。因为今天只是介绍cpu的,所以我们今天先介绍如何看cpu的情况。

 

· r值:这个值是一个很关键的cpu运行数据,表示在cpu运行队列中等待的进程数。如果这个值很大,则说明很多进程在排队等待执行。更说明现在cpu忙的很,压力山大。

 

· in和cs:这两个值分别代表中断次数和上下文切换次数。这两个值越大,代表系统在进行大量的进程切换。这说明我们的进程数(或者线程数)太大,导致系统不断的在切换进程,应该尽量减少进程或线程数量。任何切换都是有代价的!

 

· us、sy、id和wa:这四个值分别代表用户进程、系统进程、空闲和等待的cpu时间占比。us越高说明用户进程占用cpu越高、sy则代表系统进程占用。如果id很高,恭喜你,你的机器很闲;如果wa很高,则说明你的机器因为io很忙而造成cpu等待。

 

这个工具除了分析cpu以外,还可以分析内存和io。特别是io性能的分析,能帮助我们对io型的程序优化有极大帮助(等到我们讲io分析的时候,再详细的来讲)。

 

c、ps和pstree

说到cpu分析,不得不说ps这个命令。这个命令类似于top一样,可以将所有进程(或某一进程)的信息打印出来。

 

这个命令配合watch命令,可以达到跟top一样的效果。比如:watch -n 1 "ps axu | grep java",就能看到如下效果:

a53b752dd262410db2cc2bc98c900eab.png

 每隔一秒中,就会更新一下名字叫java的进程的信息。

而pstree则可以打印出进程树的信息:

57d7d773e0134482886cc4b6213be52e.png

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刷题第1天:LeetCode27--移除数组元素--双指针法(快慢指针法)

LeetCode27移除元素:给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组…

LeetCode 15 三数之和

LeetCode15 三数之和 在解决算法问题时,三数之和问题是一个经典且常见的挑战之一。给定一个整数数组,任务是找出所有不重复的三元组,使得三元组中的元素之和为零。 问题描述 给定一个整数数组 nums,判断是否存在三元组 [nums[i…

【论文精读】LLaMA1

摘要 以往的LLM(Large Languages Models)研究都遵从一个假设,即更多的参数将导致更好的性能。但也发现,给定计算预算限制后,最佳性能的模型不是参数最大的,而是数据更多的。对于实际场景,首选的…

缺省参数(默认参数)

概念&#xff1a;定义或声明函数时为函数的参数指定一个缺省值&#xff08;默认值&#xff09;。 使用规则&#xff1a;如果调用时没有实参则用缺省值&#xff0c;有则用指定实参。如下。 void Func(int a 0) {cout<<a<<endl; } int main() {Func(); // 没有…

FPS游戏之漫谈Shader.globalMaximumLOD

为什么要谈Shader.globalMaximumLOD 因为需要啊 不知道有没有发现某某场景在某个显卡上帧率很低 其他显卡就没有低帧率。怎么办呢&#xff1f;有没有快的办法 那就直接硬编码检测 某地图 某显卡直接降低globalMaximumLOD Shader.globalMaximumLOD是Unity中的一个属性&#xff…

Python 中生成多种有规律的数字序列

在 Python 编程中&#xff0c;生成数字序列是一项常见且重要的任务。Python 提供了多种方法来生成具有不同规律的数字序列&#xff0c;例如等差数列、等比数列、斐波那契数列等。本文将深入探讨如何使用 Python 中的内置函数、列表推导式、生成器等方式来生成多种有规律的数字序…

Huggingface学习笔记

课程地址&#xff1a;【HuggingFace简明教程,BERT中文模型实战示例.NLP预训练模型,Transformers类库,datasets类库快速入门.】 什么是huggingface&#xff1f; huggingface是一个开源社区&#xff0c;提供了先进的NLP模型、数据集以及工具。 主要模型&#xff1a; 安装环境&…

【Java程序设计】【C00284】基于Springboot的校园疫情防控管理系统(有论文)

基于Springboot的校园疫情防控管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的校园疫情防控系统 本系统分为系统功能模块、管理员功能模块以及学生功能模块。 系统功能模块&#xff1a;在系统首页可以查…

13.openEuler 操作系统日志管理

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议安装麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 1.常用系统日志介绍 ● dmesg 主要记录系统在开机时内核检测过程所产生的信息,通过执行dmesg命令查看. ● /…

树结构数据

背景 页面展示树结构 思路 后端返回树结构数据给前端 参数entity public class TestEntity {/*** 维度*/private String dim;/*** 值*/private BigDecimal value;/*** 子节点*/private List<TestEntity> children; } 代码 String treeJsonFileName "goalCost.…

LeetCode 1038.从二叉搜索树到更大和树

给定一个二叉搜索树 root (BST)&#xff0c;请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下&#xff0c; 二叉搜索树 满足下列约束条件&#xff1a; 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左…

Spring Cloud与Docker集成:微服务容器化解决方案详解

推荐一款AI网站 AI写作与AI绘画智能创作平台 - 海鲸AI | 智能AI助手&#xff0c;可以免费领取GPT3.5无限卡 Spring Cloud 和 Docker 是两个不同的技术&#xff0c;但它们可以一起工作以构建、部署和管理微服务架构。下面是它们各自的简介以及它们如何协同工作的原理解析。 Sp…

Flutter 中 Gap 和 SizedBox 的比较与区别

在 Flutter 中&#xff0c;两个小部件在控制应用设计布局尺寸和空间方面起着至关重要的作用&#xff0c;它们是 SizedBox 和 Gap 小部件。 在 Flutter 中构建响应式布局时&#xff0c;间距和大小很重要。框架提供了一些简单但功能强大的小部件来控制间距和大小&#xff0c;Siz…

代码随想录day26||● 39. 组合总和● 40.组合总和II● 131.分割回文串

39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; class Solution {private:vector<int> path;vector<vector<int>> result; public:void trackbacking(vector<int>& candidates,int target,int sum,int startIndex){if(sum>target)retur…

蜘蛛蜂优化算法SWO求解不闭合MD-MTSP,可以修改旅行商个数及起点(提供MATLAB代码)

1、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&#xff0c;具有搜索速度快&#xff0c;求解精度高的优势。VRPTW&#x…

043 多态

示例 public class A {public void say(){System.out.println("I am A");} } public class B extends A {Overridepublic void say(){System.out.println("I am B");} } public class Test {public static void main(String[] args) {A a new B(); // …

【Spring Boot 源码学习】深入 BootstrapContext 及其默认实现

《Spring Boot 源码学习系列》 深入 BootstrapContext 及其默认实现 一、引言二、往期内容三、主要内容3.1 BootstrapContext3.1.1 源码初识3.1.2 get 方法3.1.3 getOrElse 方法3.1.4 getOrElseSupply 方法3.1.5 getOrElseThrow 方法3.1.6 isRegistered 方法 3.2 ConfigurableB…

Windows预定义阴影画刷学习

画刷是一个8*8位图;用来重复填充区域内部; 有实心和阴影画刷;实心就是SolidBrush; 有6种预定义阴影画刷; void CHatchdemoView::OnDraw(CDC* pDC) {CHatchdemoDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCRect rect1(4…

构建企业多维模型,助力财务战略规划

财务规划与分析是一个企业需要广泛实践、改革优化的领域。战略规划对于财务管理来说&#xff0c;对企业的未来发展具有长期且不可逆的影响。一般企业在做重要战略决策时面临的主要挑战是对于可能结果复杂性的预测&#xff0c;其干涉因素很多&#xff0c;规划范围也十分广泛&…

【Unity】如何从现有项目中抽取好用的资源

【背景】 在做Unity项目的过程中引入各种各样的Package&#xff0c;有的Package很大&#xff0c;但是觉得非常有用的可能只是几个Prefab或者Material等。如果直接拷贝想要的Prefab和Material&#xff0c;又需要自己确认所有有依赖关系的资源。 如果能将所有日常经受项目中自己…