AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 760363
Accepted
acjca2
acjca2
Asked: 2023-11-01 23:09:22 +0800 CST2023-11-01 23:09:22 +0800 CST 2023-11-01 23:09:22 +0800 CST

在具有效率核心的 CPU 上应如何计算平均负载?

  • 772

我最近收到了一台配备 M1 pro CPU 的 MacBook Pro,它有 2 个“效率”核心和 8 个性能核心。当我运行 htop/btop/top 时,我得到的平均负载 >2,因为进程调度程序总是将某些低需求进程分配给效率核心,这导致这些核心始终以 60% 到 100% 的容量运行。

我觉得 2 个效率核心降低了负载平均指标的效用,而负载平均指标已经由于多个核心而降低了。回到遥远的过去,我们使用单核 CPU,负载平均值具有直观的意义。然而现在我们在一个系统中有 2 种类型的 CPU 核心,而我最近的手机有 3 种不同类型的核心:效率、性能和单个超性能核心。

这样一个新的平均负载应该如何计算呢?是否正在努力重新定义通用系统负载指标?

由于效率核心是为了运行低优先级进程而设计的,因此从默认指标中排除这些进程也许有意义吗?然后将剩余负载值分配给非效率 CPU。

例如,平均负载为 3.4。效率核心减去 2,即 1.4。然后除以性能核心数量,1.4 / 8 = 0.175。

cpu
  • 1 1 个回答
  • 28 Views

1 个回答

  • Voted
  1. Best Answer
    Marcus Müller
    2023-11-01T23:41:12+08:002023-11-01T23:41:12+08:00

    首先,我们应该谈谈“负载”实际上是什么:它是正在运行的进程的数量,加上当前处于所谓“不间断睡眠”状态的进程的数量,即大部分等待来自外设 IO 的数据。

    这意味着,如果您有一台 16 核机器(无论各个核有多“强或多弱”),并且您运行 100 个进程,每个进程都会重载 IO(例如通过锤击内存映射文件的页面,或者通过加载根据交换的需要),您可以获得 100 的负载。这意味着该负载平均值主要不是CPU核心使用情况的函数。它试图衡量当前系统的负载情况。

    比较不同机器上的负载并没有多大用处。在同一台机器上比较它们确实有意义 - 如果您的平滑负载(严格意义上的负载平均值是错误的;如果您有电气工程背景,这些是指数加权移动平均值,即简单的单极点 IIR 滤波器输出)减少,你正在赶上工作,如果增加,你正在做更多的工作。但是你不能将两台不同的机器放在一起并期望负载具有明显的可比性 - 因此,重新定义负载为在不同的 CPU 架构中更普遍有用是一件没有实际意义的事情。事情本来就不是这样的。

    我觉得 2 个效率核心降低了负载平均指标的效用

    现在,知道您提出的问题假设“负载”只是“CPU 负载”(即在任何给定时刻不空闲的 CPU 数量),我们必须解决这个问题,而不是讨论 Linux“负载”度量。

    CPU 利用率在过去几乎毫无用处——因为 CPU 核心是动态调整频率的;大约在 2000 年,AMD 的 PowerNow! 席卷了消费类计算机(笔记本电脑)。核心运行在 1.2 GHz 下的 50% 时间根本不值得运行在 3.9 GHz 下的核心;并且两者同时存在于同一系统中,并且它们都可以在考虑计算长期平均值的时间内改变频率。当 CPU 利用率超过阈值并且有足够的任务处于就绪状态时,就会发生这种情况。所以,是的,不。老实说,我认为“CPU 利用率”无非是“如果低于 90%,我的系统肯定可以完成更多的 CPU 工作,除此之外,很难说,取决于工作”。

    因此,坦率地说,在过去 20 年左右的时间里,它并不是一个过于有用的指标。

    回到遥远的过去,我们使用单核 CPU,负载平均值具有直观的意义。

    频率缩放在当时已经是一个问题,“CPU 90% 的时间都在等待存储或网络”看起来利用率很低,但实际上是在说“对于我试图服务的工作负载,我已经 100%饱和”。那里的直观性非常有限——最近自 20 世纪 90 年代初以来,CPU 和 RAM 以及外设总线是解耦的,这使得测量 CPU 不空闲的时间在描述系统时有点可疑。加载。它为您提供的只是计算机中众多有限资源之一是否已耗尽的信息,并且该百分比与完成更多工作的实际能力并不成正比,因为一台计算机的 CPU 利用率为 0.1·(核心数)可能不会在高时钟频率下运行太多,因此在更高的负载下,计算机突然变得更强大。当计算机具有异构 CPU 核心时,也会发生同样的情况,甚至更加复杂和难以预测(这并不是什么新发明 - 超线程大约 15 年前就已经将其引入消费计算机,而 NUMA 计算机很久以前就已经出现了) 。

    这样一个新的平均负载应该如何计算呢?

    坦率地说:一点也不。保持当前指标!当前的负载指标有一个目的:使同一台机器上的工作负载情况具有可比性。它继续这样做;无论如何,很难进行合理的跨平台比较:

    是否正在努力重新定义通用系统负载指标?

    真正关心系统利用率的人们会根据工作负载正确调整系统规模(而不仅仅是像笔记本电脑一样,他们所拥有的系统是否能够足够快地完成应做的事情),他们的做法与降低系统利用率相反到一个独立于工作负载的单一数字:他们需要查看该特定工作负载(或必要的工作负载范围)的瓶颈是什么,然后分配必要的额外资源 - “CPU 时间”是只是这些资源之一。

    • 2

相关问题

  • 我有多少 CPU,我应该提交多少作业?

  • 在 Linux 中设置 CPU 内核利用率限制

  • CPU 怎么知道有 IO 挂起?

  • 机器总运行时间

  • 为什么 OpenVZ 容器中的 nproc 和 nproc --all 的 CPU 计数不同?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve