一文搞懂 CPU 使用率

CPU 使用率是 CPU 在计算机上执行各种任务和进程所花费的时间量的度量。

CPU 使用率是指计算机的中央处理单元 (CPU) 消耗的处理时间量。

CPU是计算机的大脑,负责执行和处理各种任务和程序运行所需的所有指令和计算。

当你在计算机上运行程序或执行任务时,CPU 会处理并执行指令。

CPU 使用率表明在任何给定时间有多少 CPU 容量被利用。

它以百分比来衡量,100% 代表 CPU 处理能力的完全利用率。

了解 CPU 使用情况至关重要,因为它可以帮助你评估计算机的性能和效率。通过监控 CPU 使用情况,可以识别 CPU 过载或利用率不足的情况,从而优化系统性能并解决任何问题。

CPU 使用率可能因运行任务的数量和复杂性、软件效率以及整体系统配置等因素而异。高 CPU 使用率可能表明资源密集型应用程序或进程,而低 CPU 使用率可能表明计算机处于空闲状态或未充分发挥其潜力。

监控 CPU 使用率还可以让你深入了解各种应用程序对系统性能的影响。通过分析 CPU 使用率数据,可以识别可能导致速度变慢或影响计算机整体稳定性的资源消耗大的应用程序。

总体而言,CPU 使用率提供了有关计算机处理器工作负载的宝贵信息,这就能够优化性能、解决问题并确保有效利用系统资源。

 了解 CPU 使用情况

CPU 使用率是 CPU 在计算机上执行各种任务和进程所花费的时间量的度量。

要了解 CPU 使用情况,掌握一些关键概念和影响它的因素非常重要。

首先,CPU使用率可以分为两大类:系统CPU使用率和用户CPU使用率。

  • 系统CPU使用率是指CPU处理与操作系统相关的任务所花费的时间,例如管理内存、磁盘操作和网络活动。
  • 用户 CPU 使用率表示 CPU 执行用户应用程序和进程所花费的时间。

CPU 使用率通常以百分比来衡量,每个百分比表示所利用的 CPU 时间的比例。较高的百分比通常表明 CPU 正在更加努力地处理指令和执行任务。

有几个因素会影响 CPU 使用率。计算机上运行的应用程序和任务的类型起着至关重要的作用。与网页浏览器或文本编辑器等轻量级应用程序相比,资源密集型应用程序(例如视频编辑软件或复杂游戏)往往会利用更多的 CPU 资源。

多线程应用程序可以将工作负载分散到多个 CPU 核心上,也可能对 CPU 使用率产生不同的影响。例如,针对多线程优化的程序可以在多个 CPU 核心之间更均匀地分配其任务,从而实现更平衡的 CPU 使用。

此外,在后台运行的后台进程和系统服务也会增加 CPU 使用率。即使你没有主动使用任何程序,这些进程也会处理各种系统操作并消耗 CPU 资源。

了解 CPU 使用情况对于优化系统性能和故障排除问题至关重要。通过监控 CPU 使用情况,可以识别消耗过多 CPU 资源的任务和应用程序,并采取适当的措施来解决这些问题。

此外,了解一段时间内的 CPU 使用模式有助于识别趋势或重复出现的问题。通过分析 CPU 使用率数据,你可能会发现一些模式,例如一天中特定时间的峰值使用率或某些应用程序持续导致高 CPU 使用率。这种洞察力可用于微调系统性能并提高整体效率。

总体而言,了解 CPU 使用情况可以提供有关 CPU 工作负载的宝贵见解,并能够有效管理系统资源以获得最佳性能。

 如何测量 CPU 使用率

CPU 使用率是使用各种方法和工具来测量的,这些方法和工具可跟踪 CPU 执行任务和进程所花费的时间。这些测量可以帮助深入了解 CPU 的效率和工作负载。以下是一些用于测量 CPU 使用率的常用技术:

任务管理器/活动监视器:在大多数操作系统(包括 Windows 和 macOS)上,内置任务管理器或活动监视器提供实时 CPU 使用情况信息。这些工具显示每个正在运行的进程的 CPU 使用百分比,使你能够识别资源密集型应用程序。

命令行工具:诸如top(类Unix系统)和tasklist(Windows)之类的命令行工具提供了可以通过终端或命令提示符访问的CPU使用率指标。这些工具提供有关 CPU 使用情况的更详细信息,包括单个进程使用情况、CPU 空闲时间和系统范围的统计信息。

性能监控软件:PerfMon (Windows) 或 htop(类 Unix 系统)等第三方性能监控软件提供了用于测量和分析 CPU 使用情况的高级功能。这些工具提供实时监控、历史数据和可定制的仪表板,以跟踪指定时间段内的 CPU 使用情况并识别性能瓶颈。

分析和调试工具:软件开发工具通常具有分析和调试功能,可以测量 CPU 使用情况,作为应用程序性能分析的一部分。这些工具可帮助开发人员识别消耗过多CPU 资源的代码部分并对其进行优化以提高效率。

基准测试工具:基准测试工具通常用于测量硬件组件的性能,包括 CPU 利用率。这些工具模拟各种工作负载并测量 CPU 有效处理这些工作负载的能力。它们可以深入了解可实现的最大 CPU 利用率,并有助于识别硬件限制。

值得注意的是,CPU 使用率测量通常以百分比表示,表示特定进程或整个系统使用的 CPU 时间的比例。在单核 CPU 系统中,所有单个进程 CPU 使用率的总和不应超过 100%,而在多核系统中,每个核心可以贡献额外的百分比。

需要注意的是,CPU 使用率测量可能会根据所使用的工具或方法的不同而有所不同,因此必须使用一致的测量技术来进行准确的比较和分析。

通过利用这些不同的方法来测量 CPU 使用率,你可以监控系统性能、识别资源密集型进程并优化计算机 CPU 的利用率以提高效率。

 CPU 使用类型

根据使用 CPU 资源的任务或进程的性质,CPU 使用率可以分为不同的类型。了解这些类型可以帮助识别正在使用 CPU 资源的特定区域。以下是一些常见的 CPU 使用率类型:

用户CPU使用率:这种类型的CPU使用率是指CPU执行用户应用程序或进程所花费的时间。它包括运行软件、浏览互联网、玩游戏或执行任何用户启动的操作等任务。监视用户 CPU 使用情况可以深入了解用户应用程序的性能和资源需求。

系统CPU使用率:系统CPU使用率表示CPU处理与操作系统和系统服务相关的任务所花费的时间。这包括内存管理、磁盘操作、网络通信以及计算机正常运行所需的其他后台进程等活动。监视系统 CPU 使用情况有助于评估操作系统的效率和整体运行状况。

空闲 CPU 使用率:空闲 CPU 使用率表示 CPU 保持空闲或未主动执行任何任务的时间百分比。这表示可供其他应用程序或进程使用的 CPU 资源的可用性。监视空闲 CPU 使用情况有助于识别 CPU 利用率较低的时期,并确定系统产生额外工作负载的潜力。

中断CPU使用率:中断CPU使用率是指CPU处理硬件中断所花费的时间,硬件中断是硬件设备产生的请求CPU关注的信号。这些中断可以包括处理输入/输出操作、设备通知或任何其他与硬件相关的事件等任务。监视中断 CPU 使用情况可以帮助识别与硬件相关的问题或识别生成过多中断的设备。

内核模式与用户模式CPU 使用率:CPU 使用率还可以根据 CPU 运行的模式进行分类。内核模式CPU使用率表示CPU执行特权操作系统指令所花费的时间,而用户模式CPU使用率是指执行非特权用户应用程序所花费的时间。区分这些模式可以深入了解系统级进程和用户级进程之间的 CPU 资源分配。

单核与多核 CPU 使用率:随着多核处理器的出现,CPU 使用率也可以根据各个核心进行分析。在具有多个 CPU 核心的系统中,每个核心都会影响整体 CPU 使用率。监控每个核心的 CPU 使用情况有助于识别工作负载的分布并检测任何特定于核心的性能问题。

通过了解不同类型的 CPU 使用情况,可以全面了解各种任务、进程和系统组件如何利用 CPU 资源。这种洞察力对于优化系统性能、解决问题和确保高效的资源分配非常宝贵。

 CPU使用率高的原因

高 CPU 使用率会显著影响计算机的性能和响应能力。有几个因素可能会导致 CPU 使用率增加。找出原因对于故障排除和优化系统性能至关重要。以下是 CPU 使用率高的一些常见原因:

资源密集型应用程序:某些应用程序,尤其是那些需要大量计算或多媒体处理的应用程序,可能会消耗大量的 CPU 资源。这些可以包括视频编辑软件、图形设计工具、3D 建模程序或复杂的游戏。当这些资源密集型应用程序运行时,可能会导致 CPU 使用率较高。

后台进程:后台进程和系统服务不断在你的计算机上运行,以处理各种任务,例如软件更新、安全扫描或网络操作。有时,某些后台进程可能会占用大量资源并导致 CPU 使用率较高。示例包括防病毒扫描、索引服务或 Windows 更新进程。

恶意软件或病毒:恶意软件或病毒可能在计算机后台运行,消耗 CPU 资源并导致 CPU 使用率过高。受恶意软件感染的系统通常会表现出性能缓慢、CPU 使用率无法解释的峰值或异常网络活动等症状。运行可靠的防病毒扫描可以帮助检测和删除任何可能导致 CPU 使用率过高的恶意软件。

系统资源不足:如果你的计算机的硬件规格(例如 RAM(随机存取存储器)或存储)不足以满足你正在运行的任务,则可能会导致对 CPU 的处理需求过多。RAM 不足会导致频繁地将数据交换到磁盘,从而导致 CPU 使用率较高。同样,磁盘空间不足或硬盘碎片也会影响 CPU 性能。

驱动程序或软件问题:过时或不兼容的驱动程序和软件可能会导致冲突并导致 CPU 使用率过高。必须使你的驱动程序和软件保持最新,以确保兼容性并优化系统性能。此外,错误的驱动程序或软件错误可能会导致 CPU 使用异常。定期检查驱动程序更新并运行软件更新可以缓解这些问题。

后台任务:其他后台任务(例如文件同步、备份过程或自动系统维护)可能会导致 CPU 使用率较高。这些任务通常在计算机不活动或特定计划期间运行,从而导致 CPU 使用率出现暂时峰值。调整这些任务的时间或频率有助于减少它们对 CPU 性能的影响。

网站脚本或浏览器扩展:在网站上运行的密集脚本或需要资源的浏览器扩展可能会导致浏览互联网时 CPU 使用率过高。优化不佳的脚本或扩展可能会消耗不必要的 CPU 资源,从而导致浏览体验缓慢并增加 CPU 使用率。

确定 CPU 使用率高的具体原因需要监视和分析 CPU 使用模式、检查正在运行的进程并诊断潜在问题。一旦确定原因,就可以采取适当的措施来减少 CPU 使用率并优化系统性能。

 高 CPU 使用率的影响

高 CPU 使用率可能会对计算机的性能和整体用户体验产生多种不利影响。为了解决和缓解任何问题,了解高 CPU 使用率的潜在影响非常重要。以下是高 CPU 使用率的一些常见影响:

系统性能低下:当CPU由于高CPU使用率而处于重负载时,可能会导致系统性能低下。计算机对用户输入的响应速度可能会变慢,从而导致打开应用程序、任务之间切换或执行基本功能的延迟。

应用程序无响应:导致 CPU 使用率高的资源密集型应用程序可能会变得无响应或冻结,特别是在 CPU 已被大量使用的情况下。这可能会令人沮丧,因为它会中断你的工作流程并降低生产力。

系统冻结和崩溃:在 CPU 使用率过高的极端情况下,计算机可能会完全冻结或崩溃。当 CPU 过载且无法处理处理需求时,就会发生这种情况,导致系统无响应并需要重新启动。

功耗增加:CPU 使用率高会导致功耗增加,因为 CPU 更加努力地执行任务。这可能会导致笔记本电脑的电池寿命缩短或台式电脑的电费增加,特别是在长时间持续高 CPU 使用率的情况下。

多任务处理能力下降:CPU 使用率过高会限制有效执行多任务处理的能力。由于可用的 CPU 资源有限,计算机可能难以同时处理多个应用程序或进程,从而导致性能下降并增加任务切换时间。

系统不稳定:持续的高 CPU 使用率会给系统带来压力,可能导致系统不稳定。这可能表现为频繁崩溃、错误消息或意外的系统重新启动。长时间的高 CPU 使用率还会导致 CPU 磨损,从而可能缩短其使用寿命。

过热:当 CPU 持续以高使用率运行时,会产生更多热量。如果冷却系统(例如风扇或散热器)无法有效散热,可能会导致过热。过热会导致 CPU 限制性能以防止损坏,从而导致系统性能进一步下降。

了解高 CPU 使用率的影响对于监控系统性能并及时解决任何问题至关重要。通过识别和缓解高CPU 使用率,可以恢复系统正常状态,提高整体性能,并确保更流畅的计算体验。

 如何监控 CPU 使用率

监控 CPU 使用率对于评估计算机的性能和效率至关重要。通过跟踪 CPU 使用情况,你可以识别潜在问题、优化系统性能并确保资源得到有效利用。你可以使用以下一些方法和工具来监控 CPU 使用情况:

任务管理器/活动监视器:Windows 上的内置任务管理器和 macOS 上的活动监视器提供有关 CPU 使用情况的实时信息。可以通过右键单击任务栏 (Windows) 或使用启动板或应用程序文件夹 (macOS) 来访问这些工具。这些实用程序显示每个正在运行的进程的 CPU 使用百分比,使你可以识别资源密集型应用程序。

命令行工具:诸如top(类Unix系统)和tasklist(Windows)之类的命令行工具可用于通过终端或命令提示符监视CPU使用情况。这些工具提供更详细的见解,包括单个进程的使用情况、CPU 空闲时间和系统范围的统计数据。使用适合你的操作系统的命令来访问 CPU 使用信息。

性能监控软件:PerfMon (Windows) 或 htop(类 Unix 系统)等第三方性能监控软件提供了用于监控 CPU 使用情况的高级功能。这些工具提供实时监控、历史数据、可定制的仪表板和警报。它们允许跟踪特定时间段内的 CPU 使用情况、识别性能瓶颈并更详细地分析资源利用率。

资源监视器:在 Windows 上,资源监视器提供系统性能的全面视图,包括 CPU 使用情况。可以通过在 Windows 搜索栏中输入“资源监视器”来访问它。资源监视器显示按进程、服务和非 Windows 应用程序分类的 CPU 使用情况,使你可以快速识别 CPU 密集型活动。

系统监控应用程序:各种系统监控应用程序适用于 Windows 和 macOS,提供有关 CPU 使用情况的详细见解。这些应用程序通常包括其他有用的功能,例如温度监控、磁盘使用情况和网络活动。一些流行的选项包括 CPU-Z、HWMonitor 和iStat 菜单。

在线仪表板:一些基于云的监控服务,例如 Datadog 或 New Relic,提供 CPU 监控作为其综合监控解决方案的一部分。他们从你的系统收集数据并通过在线仪表板提供实时指标。这些服务对于监视服务器环境或分布式系统中的 CPU 使用情况特别有用。

无论选择哪种方法或工具,定期监控 CPU 使用率都可以让你随时了解 CPU 上的工作负载,并在必要时采取适当的措施。通过监控CPU使用率,可以识别资源密集型进程,检测性能问题,优化系统性能,确保CPU资源的高效利用。

 降低 CPU 使用率过高的技巧

CPU 使用率过高会影响计算机的性能和响应能力。幸运的是,有几种有效的策略可以降低 CPU 使用率过高并优化系统性能。以下是一些可帮助你缓解 CPU 使用率过高的提示:

关闭不必要的应用程序和进程:关闭后台运行的所有不必要的应用程序和进程,以释放 CPU 资源。使用任务管理器或活动监视器识别资源密集型程序,并在不需要时终止它们。

更新你的软件和驱动程序:过时或不兼容的软件和驱动程序可能会导致 CPU 使用率过高。确保你的操作系统、软件应用程序和设备驱动程序是最新的。定期检查更新并安装它们以确保兼容性并优化性能。

禁用启动程序:某些程序会在计算机启动时自动启动,从而消耗 CPU 资源。使用任务管理器或系统偏好设置禁用不必要的启动程序,以减少启动期间的CPU 使用率。

扫描恶意软件和病毒:使用可靠的防病毒软件执行彻底扫描,以检测并删除任何可能导致 CPU 使用率过高的恶意软件或病毒。受恶意软件感染的系统通常会表现出异常的 CPU 使用模式。

管理浏览器扩展:卸载或禁用不必要的浏览器扩展,因为它们在浏览互联网时会导致 CPU 使用率过高。限制活动扩展的数量并保持更新以防止出现任何兼容性问题。

优化电源设置:调整电源设置以优化CPU 性能。在 Windows 上使用“平衡”或“推荐”电源计划,或在 macOS 上使用同等电源计划,以平衡性能和能源效率。除非必要,否则避免使用高性能电源计划。

优化系统设置:调整某些系统设置有助于降低 CPU 使用率。例如,禁用视觉效果、减少正在运行的服务数量以及调整后台进程可以缓解CPU 压力。

升级硬件:如果你由于资源密集型任务而持续遇到 CPU 使用率较高的情况,请考虑升级硬件。增加 RAM(随机存取存储器)或升级到更强大的 CPU 可以提高整体系统性能并更有效地处理较重的工作负载。

管理自动更新:配置自动更新设置,以避免关键工作时间的 CPU 使用率过高。将更新安排在计算机不太可能使用的时间,或将更新设置为在计算机空闲时进行。

实施这些技巧有助于降低 CPU 使用率并优化计算机的性能。定期监控 CPU 使用情况、保持软件和驱动程序更新以及保持良好的计算时间将有助于获得更流畅、更高效的体验。

搞不懂CPU使用率?何谈性能优化 

CPU 使用率是最直观和最常用的系统性能指标,更是我们在排查性能问题时,通常会关注的第一个指标。所以我们更要熟悉它的含义。

CPU使用率是怎么回事

CPU 使用率是单位时间内 CPU 使用情况的统计,以百分比的方式展示。

Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。

为了维护 CPU 时间,Linux 通过节拍率触发时间中断,进行使用率统计

相关名词解析

节拍率 HZ: 内核的可配选项,可以设置为 100、250、1000 等(也就是每秒钟触发 100、250、1000次时间中断)。不同的系统可能设置不同数值,可以通过查询 cat /boot/config 内核选项来查看它的配置值。Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中断,并使用全局变量 Jiffies 记录了开机以来的节拍数(每发生一次时间中断,Jiffies 的值就加 1)

查看系统内核节拍率:grep 'CONFIG_HZ=' /boot/config-$(uname -r)

USER_HZ (用户空间节拍率) : 因为节拍率 HZ 是内核选项,用户空间程序并不能直接访问。所以内核提供来一个用户空间节拍率 USER_HZ,固定值为100,也就是1/100 秒。这样,用户空间程序并不需要关心内核中 HZ 被设置成了多少,因为它看到的总是固定值 100。

CPU 使用率相关的重要指标

# 查看系统的 CPU 和任务统计信息,只保留各个 CPU 的数据
$ cat /proc/stat | grep ^cpu

第一列表示的是 CPU 编号,第一行没有编号的 cpu ,表示的是所有 CPU 的累加

其他列则表示不同场景下 CPU 的累加节拍数,它的单位是 USER_HZ,也就是 10 ms(1/100 秒),所以这其实就是不同场景下的 CPU 时间。

更多列内容含义可以通过man proc查看文档得知

user(通常缩写为 us),代表用户态 CPU 时间。注意,它不包括下面的 nice 时间,但包括了 guest 时间。

nice(通常缩写为 ni),代表低优先级用户态 CPU 时间,也就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间。这里注意,nice 可取值范围是 -20 到 19,数值越大,优先级反而越低。

system(通常缩写为 sys), 代表内核态 CPU 时间。

idle(通常缩写为 id),代表空闲时间。注意,它不包括等待 I/O 的时间(iowait)。

iowait(通常缩写为 wa),代表等待 I/O 的 CPU 时间。

irq(通常缩写为 hi),代表处理硬中断的 CPU 时间。

softirq(通常缩写为 si),代表处理软中断的 CPU 时间。

steal(通常缩写为 st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的CPU 时间。

guest(通常缩写为 guest),代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的 CPU 时间。

guest_nice(通常缩写为 gnice),代表以低优先级运行虚拟机的时间。

CPU 使用率的计算方法

怎么查看 CPU 使用率

要查看 CPU 使用率,就必须先读取/proc/stat/proc/[pid]/stat这两个文件,然后再按照上面的公式计算。但现在各种各样的性能分析工具已经帮我们计算好了。

top

top显示了系统总体的 CPU 和内存使用情况,以及各个进程的资源使用情况。

top 默认显示的是所有 CPU 的平均值,这个时候你只需要按下数字 1 ,就可以切换到每个 CPU的使用率了

ps

ps 则只显示了每个进程的资源使用情况。

pidstat

pidstat 每个进程的详细情况,

  • 用户态 CPU 使用率 (%usr);
  • 内核态 CPU 使用率(%system);
  • 运行虚拟机 CPU 使用率(%guest);
  • 等待 CPU 使用率(%wait);
  • 以及总的 CPU 使用率(%CPU)。

 

CPU 使用率过高怎么办?

GDB

有个功能强大的程序调试利器GDB(The GNU Project Debugger), 但GDB 并不适合在性能分析的早期应用。GDB 调试程序的过程会中断程序运行,这在线上环境往往是不允许的。所以,GDB 只适合用在性能分析的后期,当你找到了出问题的大致函数后,线下再借助它来进一步调试函数内部的问题

perf

perf 是 Linux2.6.31 以后内置的性能分析工具。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题

perf top能够实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数

第一行包含三个数据,分别是采样数(Samples)、事件类型(event)和事件总数量(Event count)。
1. 第一列 Overhead ,是该符号的性能事件在所有采样中的比例,用百分比来表示。
2. 第二列 Shared ,是该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。
3. 第三列 Object ,是动态共享对象的类型。比如 [.] 表示用户空间的可执行程序、或者动态链接库,而 [k] 则表示内核空间。
4. 最后一列 Symbol 是符号名,也就是函数名。当函数名未知时,用十六进制的地址来表示。

perf record则提供了保存数据的功能,保存后的数据,需要你用perf report解析展示, 加上-g参数,可以开启调用关系的采样,方便根据调用链来分析性能问题。

总结

  • 用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题。
  • 系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题。
  • I/O 等待 CPU 高,说明等待 I/O 的时间比较长,所以应该着重排查系统存储是不是出现了 I/O 问题。
  • 软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的 CPU,所以应该着重排查内核中的中断服务程序。
  • 碰到 CPU 使用率升高的问题,你可以借助 top、pidstat 等工具,确认引发 CPU 性能问题的来源;再使用 perf 等工具,排查出引起性能问题的具体函数。

原文链接:

一文搞懂 CPU 使用率

搞不懂CPU使用率?何谈性能优化 - 知乎 

 CPU使用率飙升至100%?按这3步走,找出罪该祸首 - 知乎 (zhihu.com)

猜你喜欢

转载自blog.csdn.net/usstmiracle/article/details/132826678