代码编织梦想

CPU相关概念:

  • 处理器:物理芯片,一个或者多个
  • 核数:一个物理芯片上实现多个CPU功能,又称为芯片级多处理(chip-levelmultiprocessing,CMP)
  • 线程数:利用单个CPU中断间隙实现多线程,提升CPU效率,也就是我们说的开超线程(1*2)
  • 指令:一些列的命令,告诉CPU需要做什么操作,比如资源I/O、算术、逻辑控制。
  • 中断:中断是系统实现CPU能合理的服务计算机的资源,由于CPU中断和执行的快速,我们才能感觉到电脑上的程序都是同时运行的。
    • 硬中断:由硬件设备引发的中断,跟操作系统没关系
    • 软中断:由系统引发的中断
    • 参考:https://blog.csdn.net/yue530tomtom/article/details/76095739

性能指标:基础

  • 负载(饱和度):反应CPU的繁忙程度,占用CPU时间线程数和等待CPU时间线程数计算得出,负载为1,说明CPU已经饱和运转(单核)
  • 使用率:CPU一段时间内的忙于执行的时间,百分比表示
  • 用户时间/内核时间:
    • 用户时间:CPU用户执行用户态的代码时间
    • 内核时间:CPU用户执行内核态的代码时间
    • 计算密集性体现在用户态占用一般用户/内核时间之比接近99/1,I/O密集型体现系统调用频率较高,可能是用户/内核时间之比接近70/30
  • 进程/线程
    • 进程是系统资源分配最小的单元
    • 线程是代码执行的最小单元

性能工具使用
在这里插入图片描述

uptime
在这里插入图片描述

平均负载,后面的3个数值分别是1分、5分钟、15分钟的平均负载
值的意义,平均负载大于CPU 数量表示CPU 不足以服务线程,有些线程在等待

判断方向:

  • CPU饱和度影响性能

备注:Linux 目前把在不可中断状态执行磁盘I/O 的任务也计入了平均负载,所以还需要借助vmstat和mpstat提供一些数据观察

vmstat
在这里插入图片描述

vmstat从整体上查看资源情况,进程、内存、交换分区、I/O、系统、CPU
r:可运行进程的数量(正在运行或等待运行时)
b:等待 I/O 完成的阻塞进程数
CPU:CPU总时间的百分比
us:用户态的时间
sy:内核态的时间
id:闲置时间
wa:等待I/O 时间,即线程被阻塞等待磁盘I/O 时的CPU 空闲时间

判断方向:

  • 是否进程数太多,导致性能问题
  • CPU的性能是单个导致还是整个(%usr + %sys)
  • CPU密集类型(计算或I/O)

参考:https://www.man7.org/linux/man-pages/man8/vmstat.8.html

mpstat
在这里插入图片描述

查看单个CPU的详细情况(-P ALL用来打印每个CPU 的报告)
CPU:逻辑CPU ID,或者all 表示总结信息。
● %usr:用户态时间
● %nice:以nice 优先级运行的进程用户态时间
● %sys:系统态时间(内核)
● %iowai:I/O 等待
● %irq:硬件中断CPU 用量
● %soft:软件中断CPU 用量
● %steal:耗费在服务其他租户的时间
● %guest:花在访客虚拟机的时间
● %idle:空闲

重要指标:%usr、%sys、%iowai、%irq、%soft、%idle
判断方向:

  • CPU的性能是单个导致还是整个(%usr + %sys)
  • CPU密集类型(计算或I/O)
  • CPU中断导致的性能问题

ps
在这里插入图片描述

用于查看进程资源使用情况
● %CPU:进程使用CPU资源总和,一个CPU显示100%
● %MEM:进程使用的总内存资源比例
● TIME:进程消耗CPU总时长
● VSZ:进程申请的内存(kb),并不是真正使用这么多
● RSS:进程固定使用的内存(kb)
● TTY:进程在哪个终端运行
Stat状态:
S 可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
R 运行,严格来说,应是“可运行”,即在运行队列中,处于正在执行或即将运行状态
D 不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生
T (terminate)停止。通常是被shell作业控制所停止,或者进程正处于调试器的控制之下
Z (zombie)僵尸进程,通常是该进程已经死亡,但父进程没有调用wait类函数来释放该进程的资源
N (nice)低优先级任务
s 进程是会话期首进程
+ 进程属于前台进程组
l 进程是多线程的
< 高优先级任务

参考:https://linuxconfig.org/ps-output-difference-between-vsz-vs-rss-memory-usage

top

以上工具的各种资源集合
top进去后,按1 可以查看到单个CPU的资源
第一行:负载(uptime类似)
第二行:进程(ps类似)
第三行:CPU信息(hi硬中断,si软中断)
第四行:内存信息
第五行:交换分区信息
第六行:系统进程信息(
VIRT:申请内存,RES:使用内存,S:状态,SHR:共享内存(kb),
NI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的,一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(nice)值就是20-20=0,可以通过改变NI来改变PR: PRI(new) = PRI(old) + nice)

pidstat
在这里插入图片描述

查看进程的CPU、内存、线程、设备IO资源占用情况
-r 显示各个进程的内存使用统计
-d 显示各个进程的IO使用情况
-p 指定进程号(ALL 所有)
-t 显示选择任务的线程的统计信息外的额外信息

使用技巧:

  • watch -n 1 -d “vmstat 1 1 | column -t” #可以实时看到变换和显示平整的数据
  • ps aux | sort -k 3 -r | head #查看进程使用CPU资源的前10
  • time ls #real:CPU执行总时间 user和sys(用户态和内核态)

参考书籍:性能之巅:洞悉系统、企业与云计算

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yangshihuz/article/details/124704593

linux 性能监测:cpu-爱代码爱编程

CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 DMA(Direct Memory Access)完成,只是在完成拷贝以后给一个中断让 CPU 知道拷贝已经完成;科学计算通常占用较多的 CPU,大部分计算工作都需要在 CPU 上完成,内存、硬盘等子系统只做暂时的数据存储工作。要想监测和理

【总结】性能调优:cpu消耗分析-爱代码爱编程

转载请注明出处: http://blog.csdn.net/supera_li/article/details/45221367 性能调优系列的其他篇幅,请查阅。 性能调优:CPU消耗分析 性能调优:IO消耗分析

linux sysbench (一): cpu性能测试详解_老叶茶馆_的博客-爱代码爱编程

网上sysbench教材众多,但没有一篇中文教材对cpu测试参数和结果进行详解。 本文旨在能够让读者对sysbench的cpu有一定了解。 小慢哥的原创文章,欢迎转载 1.sysbench基础知识 sysbench的cpu测试是在指定时间内,循环进行素数计算 素数(也叫质数)就是从1开始的自然数中,无法被整除的数,比如2、

cpu套路篇:cpu性能优化的几个思路???_heart18335101121的博客-爱代码爱编程

性能优化方法论:   找到系统瓶颈后, 怎么判断优化是否有效,并且能提升多少性能??如果有多个性能问题,应该先优化哪一个??提升性能的方法并不是唯一的,当有多种方法可以选择时,你会选择哪一种?是不是总选那个最大程度提升性能的方法就行了呢??       性能评估指标三步走:   确定性能的量化指标测试优化前的性能指标测试优化后的性能指标  

iSCSI网络存储之IPSAN-爱代码爱编程

存储的三种方式 直连存储(DAS) 最常见存储方式,也就是主机主板总线通过SCSI接口连接存储设备设备:块设备 iSCSI存储(共享块设备,基于san网络) IPSAN 主机通过IP网络连接到存储阵列设备最常见使用方式 FCSAN 主机通过SAN网络光纤线连接到存储阵列设备成本高 设备:块设备 NAS存储(共享文件系

Unity3D性能优化——CPU篇-爱代码爱编程

请注意,单独观看本文是不太容易吸收的。正确的食用方式,是手边打开一个具体的项目,然后结合项目参考文章看看是否有能改进的地方,再对症下药。 我们在前一篇文章中讲到了Unity性能分析工具的用法,以及在我们实际项目中所用到性能分析的思路。从这篇文章开始,我们从Unity性能优化的几个方面来逐步讲解unity中具体的优化方法和作用。就当前的游戏优化而言,主要是

RedHat8 解决不能使用yum问题-爱代码爱编程

yum remove subscription-manager 卸载redhat订阅提示,不然每次都提示你去注册This system is not registered to Red Hat Subscription Management curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors

cpu性能指标和测试工具-爱代码爱编程

本文是在学习了Linux性能优化实战cpu性能篇后的一些总结。 首先确定cpu性能的指标有哪些 1.cpu使用率 用户cpu使用率系统使用率等待I/O的cpu使用率软中断和硬中断的cpu使用率2.平均负载 即系统的平均活跃进程数。理想情况下,平均负载等于逻辑cpu个数,表示每个cpu都被使用到。 3.进程上下文切换 无法获取资源而导致的自愿上下

低功耗服务器cpu性能排行,电脑CPU天梯图性能排行榜 CPU性能天梯图2018年6月最新版...-爱代码爱编程

年中618网购狂欢节临近,受不少商家降价促销活动利好,近期DIY装机的朋友也明显多了起来。对于装机朋友来说,最重要的是选CPU和显卡了,今天“脚本之家”带来了CPU天梯图2018年6月最新版,可以秒懂各平台各型号处理器性能排行,这对于很多小白装机朋友来说,会很有帮助。 CPU天梯图2018年6月最新版 六月电脑CPU天梯图性能排行,主要是基于五

服务器虚拟机睿频,虚拟机性能调优-CPU篇-爱代码爱编程

CPU优化分析主要是两个阶段,虚拟化层和宿主机层。 前期主要怀疑是虚拟化层的影响,主要的怀疑点包括: 1.超线程的影响 关闭超线程之后单核性能有略微提升,但多核性能反而更差,排除超线程的因素 2.NUMA架构和核迁移的影响 按理说如果不按照NUMA的架构来做核绑定,由于缓存和迁移的影响,或造成较大的性能损失,通过绑定物理核测试发现并没有大的提

Unity性能优化 :合批篇-爱代码爱编程

前言 本系列为一些性能优化的小知识,是日常游戏开发中与性能表现的一些点,本篇为该系列文章的第二篇,前篇链接: 第一篇: Unity性能优化:资源篇 在早期Unity中,对于合批的处理手段主要是下面三种: Static BatchingDynamic BatchingGPU Instancing并且对于他们有着严格的使用限制,而在Unity推出SPR

(一文了解)linux性能分析之CPU篇-爱代码爱编程

目录 前言 一、CPU 性能指标 1、CPU使用率 2、负载均衡 3、上下文切换 4、CPU缓存命中率 二、常用工具 1、uptime 2、vmstat 3、mpstat 4、top 5、sar 6、pidstat 7、cat /proc/sotfirqs 三、分析CPU性能瓶颈方法 分析举例 四、性能调优 1,编译器选