Linux 中 top信息详解,CPU负载详解

news2024/11/24 15:32:25

 一、top信息的三个参数到底是什么意思?
6.68、7.67、8.08 分别代表前一分钟,五分钟,十五分钟的平均CPU负载,最重要的指标是最后一个数字,即前15分钟的平均CPU负载,这个数字越小越好。所谓CPU负载指的是一段时间内任务队列的长度,通俗的讲,就是一段时间内一共有多少任务在使用或等待使用CPU。

二、哪些工具可以查看CPU负载?
可以使用top命令、uptime命令,特别是top命令,功能强大,不仅仅可以用来查看CPU负载。
 
三、CPU负载怎么理解?是不是CPU利用率?
这里要区别CPU负载和CPU利用率,它们是不同的两个概念,但它们的信息可以在同一个top命令中进行显示。CPU利用率显示的是程序在运行期间实时占用的CPU百分比,而CPU负载显示的是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着负载就一定大。网上有篇文章举了一个有趣比喻,拿打电话来说明两者的区别,我按自己的理解阐述一下。
某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用电话一分钟,若有人一分钟之内没有打完电话,只能挂掉电话去排队,等待下一轮。电话在这里就相当于CPU,而正在或等待打电话的人就相当于任务数。
在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。为了统计平均负载情况,我们5秒钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。
有的人拿起电话就打,一直打完1分钟,而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看作任务,我们就说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。
当然, CPU并不会在前三十秒工作,后三十秒歇着,只是说,有的程序涉及到大量的计算,所以CPU利用率就高,而有的程序牵涉到计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高是低,跟后面有多少任务在排队没有必然关系。
 
四、了解了CPU负载的含义,我们如何来降低服务器的CPU负载呢?
最简单办法的是更换性能更好的服务器,不要想着仅仅提高CPU的性能,那没有用,CPU要发挥出它最好的性能还需要其它软硬件的配合。
在服务器其它方面配置合理的情况下,CPU数量和CPU核心数(即内核数)都会影响到CPU负载,因为任务最终是要分配到CPU核心去处理的。两块CPU要比一块CPU好,双核要比单核好。
因此,我们需要记住,除去CPU性能上的差异,CPU负载是基于内核数来计算的!有一个说法,“有多少内核,即有多少负载”。
 
五、那么,本文开头的CPU负载分担到每个CPU上的负载是多少呢?那就要看我这台服务器有一共有多少个内核了。
Linux里有一个/proc目录,存放的是当前运行系统的虚拟映射,其中有一个文件为cpuinfo,这个文件里存放着CPU的信息。我们可以直接打开查看,或者过滤关键字进行查看,因为文件内容比较多,所以一般我们需要过滤关键字。
/proc/cpuinfo文件按逻辑CPU而非真实CPU分段落显示信息,每个逻辑CPU的信息占用一个段落,第一个逻辑CPU标识从0开始。我们首先要明白这一点,至于什么是逻辑CPU,下面会提到。要理解该文件中的CPU信息,有几个相关的概念要知道:
processor:逻辑CPU的标识
model name:真实CPU的型号信息
physical id:真实CPU和标识
cpu cores:真实CPU的内核数
 
$>grep ‘model name’ /proc/cpuinfo |uniq

$>grep ‘physical id’ /proc/cpuinfo |sort |uniq |wc -l

$>grep ‘cpu cores’ /proc/cpuinfo |uniq

可以看出,该服务器CPU型号为Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz,四个CPU,每个CPU都是单核,相当于服务器有4个内核。
前面我们说CPU负载是基于CPU内核数计算的,那么以前十五分钟的平均负载数10.49为例,我们可以得出,这台服务器每个CPU的负载为5.245,再分配到内核上,每个内核的负载为2.6左右。
这个负载是否是合理的呢?那就要看理想CPU负载的标准是什么样子的了。
 
六、CPU负载为多少才算比较理想?
这个有争议,各有各的说法,我个人比较赞同CPU负载小于等于0.7算是一种理想状态。
不管某个CPU的性能有多好,1秒钟能处理多少任务,我们可以认为它无关紧要,虽然事实并非如此。在评估CPU负载时,我们只以5秒钟为单位为统计任务队列长度。如果每隔5秒钟统计的时候,发现任务队列长度都是1,那么CPU负载就为1。假如我们只有一个单核的CPU,负载一直为1,意味着没有任务在排队,还不错。
上面提到的我那台服务器,是双核又CPU,等于是有4个内核,每个内核的负载为1的话,总负载为4。这就是说,如果我那台服务器的CPU负载长期保持在4左右,还可以接受。但实际上CPU负载已经达到9以上了,所以就很麻烦了。
 
但是每个内核的负载为1,并不能算是一种理想状态!这意味着我们的CPU一直很忙,不得清闲。网上有说理想的状态是每个内核的负载为0.7左右,我比较赞同,0.7乘以内核数,得出服务器理想的CPU负载,比如我这台服务器,负载在3.0以下就可以。
 
七、下面关于逻辑CPU的描述,全部来自网上:
现在的服务器一般都使用了“超线程”(Hyper-Threading,简称HT)技术来提高CPU的性能。超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程。
虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每各CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
具有超线程技术的CPU还有一些其它方面的限制。 

参照:https://blog.51cto.com/share/495067

 

 

 

 

 

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

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

相关文章

蔡春久:主数据标准化如何建设

亿信华辰「2023数字赋能季」主数据管理专场第一期成功举办。我们邀请到了中国数据标准化及治理专家蔡春久为大家带来主数据管理从理论到工具层面的分享,全程干货,深度解读,以下是演讲全文。 蔡春久:中国大数据技术标准推进委员会…

认识AI三大类工具,让你效率加倍

在当今的互联网时代,各种新奇有趣的AI工具充斥着我们的生活。其中,AI写作、AI绘画、AI剪辑等工具更是给运营人带来了前所未有的“速成”体验。今天就来介绍一些好玩有趣的AI工具,让你在各个领域都能快速、轻松地展现自己的创意和才华。 第一…

Docker资源控制

一、CPU 资源控制 cgroups,是一个非常强大的linux内核工具,他不仅可以限制被 namespace 隔离起来的资源, 还可以为资源设置权重、计算使用量、操控进程启停等等。 所以 cgroups(Control groups)实现了对资源的配额和度…

java版本企业电子招投标采购系统源码之登录页面

​ 信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…

无需编程技能:如何快速搭建教育平台网站

随着在线教育的不断发展,越来越多的人开始想要创建自己的教育平台网站。然而,很多人认为创建一个网站需要具备深厚的编程技能和经验,因此望而却步。实际上,现在有很多平台和工具可以帮助人们快速、简单地搭建一个教育平台网站&…

力扣题库刷题笔记496-下一个更大元素

1、题目如下: 2、个人Python代码实现 代码如下: class Solution: def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]: #空列表用于输出结果 ans [] for i in nums1: #如果nums2中不包含或者最后一位元素为当前遍历得…

使用Plist编辑器——简单入门指南

本指南将介绍如何使用Plist编辑器。您将学习如何打开、编辑和保存plist文件,并了解plist文件的基本结构和用途。跟随这个简单的入门指南,您将掌握如何使用Plist编辑器轻松管理您的plist文件。 plist文件是一种常见的配置文件格式,用于存储应…

Chat GPT在全球变暖中的潜在应用

01 摘要 气候变化是一个全球性的重大挑战,需要整合包括大气科学、海洋学和生态学在内的许多不同科学领域。解决这一问题的复杂性和规模需要利用先进的工具和技术来理解、建模和预测未来的气候状况。人工智能和自然语言处理技术,如Chat GPT,…

多数据源 使用 mybatis-plus-generator 3.5.1版本进行代码生成

文章目录 前言多数据源 使用 mybatis-plus-generator 3.5.1版本进行代码生成1. 说明2. 添加依赖2.1. mybatis-plus-generator 自动生成依赖2.2. 多数据源依赖2.3. 建立新项目的完全pom.xml 3. application.yml 多数据源配置 mybatis-plus-generator配置4. 创建一个MybatisPlus…

Cesium项目功能实现记录

目录 1 切换二维地图2 删除默认图层3 隐藏版权信息4 加载cesiumlab切片影像出现栅格阴影5 解决相机控制问题6 cesium中限制地图浏览范围7 鼠标移动显示经纬度8 禁用cesium选取实体操作8.1 禁用操作8.2 双击事件改写8.3 信息隐藏(index.html页面) 9 自定义…

聚合生态 深耕行业——2023用友生态峰会成功举办

近日,2023用友BIP技术大会生态峰会在北京隆重开幕。来自中国电信、毕马威、上海汉得信息、百度、滴滴、金山云、外企德科、上海诺捷、上海熵央等伙伴代表与全国各行业生态伙伴、企业客户等齐聚一堂,解读企业生态新变革,畅谈行业生态新合作&am…

如何使用阿里云短信服务实现登录页面,手机验证码登录?

1:个人如何使用阿里云短信服务? 2022如何使用个人阿里云短信服务?_linxiMY的博客-CSDN博客添加完成之后,等待审核!一般2个小时就会出来审核结果了,这里我因为注册申请时填写规则有误,足足审核了…

MyBatis的缓存、逆向工程、以及分页插件的使用

1、MyBatis的缓存 1.1、MyBatis的一级缓存 一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问 使一级缓存失效的四种情况: 不同的…

Spring简介

二、Spring 1、Spring简介 1.1、Spring概述 官网地址:https://spring.io/ Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Jav…

人工大猩猩部队优化器:一种新的面向全局优化问题的自然启发元启发式算法(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 元启发式在解决优化问题方面发挥着关键作用,其中大多数都受到自然界中自然生物集体智慧的启发。本文提出了一种新的…

流程图的简单操作

流程图是一种对过程进行梳理的工具,利用简单的图形符号来将组织步骤连接起来,从而形成完整信息流转图形。该图直观地描述一个工作过程的具体步骤,对准确了解事情是如何进行的,以及决定应如何改进过程有指导性意义。 流程图如何进行…

SwiftUI 中 TabView 如何原生使用类 UIPageView 的翻页样式?

功能需求 我们知道 TabView 是 SwiftUI 中非常好用的布局组织容器,它可以分类组织视图并依次展示给用户。 从 SwiftUI 2.0 开始(iOS 14.0+),TabView 除了常规的以标签(Tab Label)样式显示外,还可以用类似 UIPageView 的样式分页原生显示视图,显得更加简洁: 如上图所…

远程控制软件有哪些

在当今的数字时代,远程访问软件已成为各种规模企业的必备工具。 它允许员工在任何地方工作并远程访问他们的工作计算机和数据。 当今市场上三种最流行的远程访问软件解决方案是 TeamViewer、Splashtop 和 Microsoft Remote Desktop。 在本文中,我们将深入…

【MYSQL】MYSQL数据库命令大全

文章目录 🌷 1. root 用户登录🌷 2. 数据库的操作🌷 3. 常用数据类型🌷 4. 表的操作⭐ 4.1 创建表🍁 约束类型 ⭐ 4.2 插入⭐ 4.3 查询🍁 去重:DISTINCT🍁 排序:ORDER BY…

Mysql设置表只存储一段时间的数据

使用MySQL的事件调度器(Event Scheduler)来定期删除表中的数据。 假设你要删除的表是mytable,并且表中有一个名为created_at的日期时间类型的列,存储了每条记录的创建时间。你可以通过以下步骤设置表只存储30天的数据&#xff1a…