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 / 问题

问题[cpu](unix)

Martin Hope
tkw954
Asked: 2025-04-24 03:35:31 +0800 CST

如何测量 Linux 中多核应用程序的实际 CPU 利用率?

  • 6

我有一个计算密集型过程,需要在多核处理器上运行多次,但“top”并没有以有用的方式显示利用率或负载。

例如,假设我的任务在我的六核十二线程 SMT CPU 的单核上以单线程方式运行 1 分钟。如果我使用六个线程启动同一个任务六次,它仍然会在 1 分钟内完成,top 显示平均负载为 6.0,CPU 使用率为 50% us,id 为 50%。在 top 进程列表中,六个进程的 CPU 使用率都为 100%。如果我执行相同的操作,但启动 12 个线程,它会在 2 分钟内完成这 12 个任务,top 显示平均负载为 12.0,CPU 使用率为 100% us,id 为 0%,并且每个进程的 CPU 使用率都为 100%。

现在,6 线程和 12 线程的示例都以相同的满载速率进行处理,即每分钟完成 1/6 个作业,但为什么 top 显示 6 线程的情况有 50% 的空闲率,而事实并非如此?有没有更好的方法来确定 CPU 的实际负载?

这是在 Ubuntu 24.12 上的 Ryzen 5600X 处理器上运行的。

编辑:12 个任务的顶级输出:

top - 08:35:37 up 54 days, 20:49,  3 users,  load average: 12.20, 6.70, 2.80
Tasks: 346 total,  13 running, 332 sleeping,   0 stopped,   1 zombie
%Cpu(s): 98.2 us,  1.7 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st 
MiB Mem :  64221.7 total,   1572.7 free,   4983.4 used,  58684.1 buff/cache     
MiB Swap:   8192.0 total,   7863.7 free,    328.3 used.  59238.3 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                
2249765 user    20   0  126952  64132  51200 R 100.0   0.1   3:48.87 sonicLiquidFoam                                        
2249759 user    20   0  127060  64220  51200 R 100.0   0.1   3:48.93 sonicLiquidFoam                                        
2249757 user    20   0  126624  64064  51328 R 100.0   0.1   3:49.32 sonicLiquidFoam                                        
2249761 user    20   0  128276  64868  50688 R 100.0   0.1   3:47.65 sonicLiquidFoam                                        
2249762 user    20   0  127652  63688  50432 R 100.0   0.1   3:49.13 sonicLiquidFoam                                        
2249755 user    20   0  128844  66128  51200 R 100.0   0.1   3:46.06 sonicLiquidFoam                                        
2249766 user    20   0  126576  63952  51328 R 100.0   0.1   3:47.87 sonicLiquidFoam                                        
2249764 user    20   0  126612  63824  51072 R  99.0   0.1   3:48.59 sonicLiquidFoam                                        
2249760 user    20   0  126888  63972  51072 R  98.7   0.1   3:45.06 sonicLiquidFoam                                        
2249758 user    20   0  127500  64860  51200 R  97.7   0.1   3:48.64 sonicLiquidFoam                                        
2249763 user    20   0  127916  64944  51072 R  97.0   0.1   3:39.58 sonicLiquidFoam                                        
2249756 user    20   0  126828  63948  51072 R  96.0   0.1   3:48.77 sonicLiquidFoam  

对于 6 项任务:

top - 08:40:22 up 54 days, 20:53,  3 users,  load average: 6.11, 6.67, 3.90
Tasks: 335 total,   7 running, 327 sleeping,   0 stopped,   1 zombie
%Cpu(s): 50.0 us,  1.0 sy,  0.0 ni, 49.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
MiB Mem :  64221.7 total,   1616.2 free,   4914.6 used,  58710.3 buff/cache     
MiB Swap:   8192.0 total,   7863.7 free,    328.3 used.  59307.1 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                
2250032 user    20   0  127392  64676  51200 R 100.0   0.1   2:39.15 sonicLiquidFoam                                        
2250027 user    20   0  126828  63096  50176 R 100.0   0.1   2:39.23 sonicLiquidFoam                                        
2250028 user    20   0  127060  63260  50176 R 100.0   0.1   2:39.23 sonicLiquidFoam                                        
2250029 user    20   0  128844  66124  51200 R 100.0   0.1   2:39.12 sonicLiquidFoam                                        
2250030 user    20   0  128276  65508  51200 R 100.0   0.1   2:39.21 sonicLiquidFoam                                        
2250031 user    20   0  126596  63808  51072 R 100.0   0.1   2:39.21 sonicLiquidFoam 

cpu
  • 1 个回答
  • 57 Views
Martin Hope
Miguel
Asked: 2025-04-01 19:27:27 +0800 CST

CPU 数量不等于每核线程数 X 每插槽核数 X 插槽数

  • 22

据我了解,我的计算机中的 CPU 数量应为

CPU = 每核线程数 x 每插槽核心数 x 插槽数

以下是输出的前几行lscpu:

$ lscpu | head -n18
Architecture:             x86_64
CPU op-mode(s):         32-bit, 64-bit
Address sizes:          46 bits physical, 48 bits virtual
Byte Order:             Little Endian
CPU(s):                   22
On-line CPU(s) list:    0-21
Vendor ID:                GenuineIntel
Model name:             Intel(R) Core(TM) Ultra 7 155H
CPU family:           6
Model:                170
Thread(s) per core:   2
Core(s) per socket:   16
Socket(s):            1
Stepping:             4
CPU(s) scaling MHz:   14%
CPU max MHz:          4800.0000
CPU min MHz:          400.0000
BogoMIPS:             5990.40

发生了什么事?2 × 16 = 32,而不是 22。即使运行也nproc --all显示 22。

我是否遗漏了什么?

cpu
  • 1 个回答
  • 1974 Views
Martin Hope
Renan
Asked: 2025-02-01 06:58:36 +0800 CST

Linux下华硕主板风扇控制

  • 5

我使用华硕 TUF GAMING B650M-PLUS主板和 Ryzen 7 8700G CPU组装了一台机器。Linux 安装没有问题,但我缺少风扇控制和监控。

在 Windows 下,我使用 ASUS 软件来设置风扇曲线和监控风扇速度等:

在此处输入图片描述 在此处输入图片描述

我已尝试过:

  • pwmconfig 没有找到任何风扇。
  • 传感器检测无法找到除spd5118(我相信是 RAM 温度)、k10temp(CPU 温度)amdgpu和 NVME 温度之外的任何温度。
  • CoolerControl也找不到任何风扇。

我一直在华硕笔记本电脑上寻找有关风扇控制的信息,但事实并非如此。在 Linux 下我可以使用哪些工具来管理 CPU 风扇?现在,我需要重新启动并进入设置,这非常不切实际。

cpu
  • 1 个回答
  • 53 Views
Martin Hope
Marc Le Bihan
Asked: 2024-07-05 17:53:34 +0800 CST

如何通过Linux命令查看我的程序当前正在运行什么语句(内存地址):程序计数器寄存器?

  • 6

由于我需要查找的原因,C++ 应用程序似乎卡在了 Docker 容器中。
我做了一个docker exec -it a_template_cpp bash并进入了它。

我知道top和pmap命令,并且知道我可以在链接时生成一个地图文件来帮助我。

但我不知道哪些 Linux 命令可以显示我所询问的程序当前正在执行的地址。此时程序计数器寄存器的值是多少。

我应该执行什么命令才能知道它?

cpu
  • 1 个回答
  • 280 Views
Martin Hope
Hman66
Asked: 2024-04-27 16:53:41 +0800 CST

如何*实际*限制 Hashcat 的 CPU 使用率

  • 5

我不想把我的CPU里的活生生的垃圾炸掉。

hashcat程序使用大量的CPU和GPU。

我知道,人们在网上推荐的简单解决方案,例如使用限制CPU使用率的工具,例如cpulimit,但它所做的一切都削减了Hashcat。

限制线程或核心也无济于事,甚至会使情况变得更糟。我的 CPU 始终保持在 94-8% 左右,在 Hashcat 运行期间超过 90 度。该-w选项最多只能帮助其冷却几度!

那么有没有解决这个问题的方法,或者我是否必须与我的 cpu 说再见,或者一次运行 Hashcat 一小段时间,然后暂停以冷却?

cpu
  • 1 个回答
  • 30 Views
Martin Hope
nalzok
Asked: 2024-04-25 00:26:14 +0800 CST

如何在 OpenBSD 中禁用逻辑处理器?

  • 7

众所周知,OpenBSD默认情况下禁用超线程。但是,htop显示 16 个 CPU:8 个在线和 8 个离线,这会占用屏幕上的额外空间并且信息量不大。

在此输入图像描述

此外,sysctl还看到 16 个逻辑 CPU。这对我来说没有意义:禁用超线程后,它是一个 8 核 8 线程处理器,所以我应该看到 8 个物理/逻辑 CPU。

$ sysctl hw
hw.machine=amd64
hw.model=AMD Ryzen 7 5800H with Radeon Graphics
hw.ncpu=16
hw.byteorder=1234
hw.pagesize=4096
hw.disknames=sd0:6d1abdce154d2fc8
hw.diskcount=1
hw.sensors.cpu0.frequency0=3900000000.00 Hz
hw.sensors.cpu2.frequency0=3900000000.00 Hz
hw.sensors.cpu4.frequency0=3900000000.00 Hz
hw.sensors.cpu6.frequency0=3900000000.00 Hz
hw.sensors.cpu8.frequency0=3900000000.00 Hz
hw.sensors.cpu10.frequency0=3900000000.00 Hz
hw.sensors.cpu12.frequency0=3900000000.00 Hz
hw.sensors.cpu14.frequency0=3900000000.00 Hz
hw.sensors.ksmn0.temp0=83.12 degC (Tctl)
hw.sensors.it0.temp0=83.00 degC
hw.sensors.it0.temp1=49.00 degC
hw.sensors.it0.temp2=200.00 degC
hw.sensors.it0.fan0=0 RPM
hw.sensors.it0.fan1=3835 RPM
hw.sensors.it0.fan2=2986 RPM
hw.sensors.it0.volt0=1.74 VDC (VCORE_A)
hw.sensors.it0.volt1=1.62 VDC (VCORE_B)
hw.sensors.it0.volt2=2.67 VDC (+3.3V)
hw.sensors.it0.volt3=3.71 VDC (+5V)
hw.sensors.it0.volt4=10.69 VDC (+12V)
hw.sensors.it0.volt5=-3.24 VDC (-12V)
hw.sensors.it0.volt6=0.57 VDC (-5V)
hw.sensors.it0.volt7=3.68 VDC (+5VSB)
hw.sensors.it0.volt8=2.16 VDC (VBAT)
hw.cpuspeed=3200
hw.setperf=100
hw.vendor=AZW
hw.product=SER
hw.version=Default string
hw.serialno=A58003LH80340
hw.uuid=00020003-0004-0005-0006-000700080009
hw.physmem=13840232448
hw.usermem=13840216064
hw.ncpufound=16
hw.allowpowerdown=1
hw.perfpolicy=manual
hw.smt=0
hw.ncpuonline=8
hw.power=1
hw.ucomnames=

如何禁用逻辑处理器,以便每个“CPU”都是物理处理器?

cpu
  • 1 个回答
  • 27 Views
Martin Hope
Jason
Asked: 2024-01-27 01:47:19 +0800 CST

与 CPU 计算相关的奇怪 lscpu 输出

  • 6

我一直在尝试理解lscpu的输出,并遇到了几个专门用于 CPU、物理核心和线程概念的线程。根据这些线程,要获取 CPU(逻辑单元)的总数,您可以执行以下操作:Thread(s) per corex Core(s) per socketx Socket(s)。

鉴于我的机器的部分输出如下所示,我预计CPU(s)为 28,但它被列为 20。

Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         46 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  20
  On-line CPU(s) list:   0-19
Vendor ID:               GenuineIntel
  Model name:            12th Gen Intel(R) Core(TM) i9-12900H
    CPU family:          6
    Model:               154
    Thread(s) per core:  2
    Core(s) per socket:  14
    Socket(s):           1

有人可以帮助我理解我对 CPU 数量的预期与lscpu此实例中实际产生的结果之间明显的脱节吗?我好像找不到类似的案例。

cpu
  • 1 个回答
  • 17 Views
Martin Hope
palmasd1
Asked: 2024-01-09 15:12:50 +0800 CST

/proc/cpuinfo 文件是否可能有多个不同的型号和型号名称字段?

  • 8

我想创建从服务器收集 CPU 信息的脚本。在问题标题中命名的文件的某个服务器输出中,有 12 个model和model name彼此相同的字段。这些案例如下面的屏幕截图所示。12 个实例是否不超过 12 个单个物理 CPU 核心,或者有 12 个独立的 CPU?

modelgrep单词的结果/proc/cpuinfo

model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
model           : 158
model name      : Intel(R) Xeon(R) E-2236 CPU @ 3.40GHz
cpu
  • 1 个回答
  • 305 Views
Martin Hope
acjca2
Asked: 2023-11-01 23:09:22 +0800 CST

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

  • 5

我最近收到了一台配备 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 个回答
  • 28 Views
Martin Hope
Mark K
Asked: 2023-03-23 15:33:39 +0800 CST

为什么传感器输出的CPU核心数不连续?

  • 5

命令中核心编号为0,4,8,.......39 sensors。

为什么不是 0,1,2,3,4.......?

foo@foo-linux:~$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +73.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:        +46.0°C  (high = +80.0°C, crit = +100.0°C)
Core 4:        +50.0°C  (high = +80.0°C, crit = +100.0°C)
Core 8:        +52.0°C  (high = +80.0°C, crit = +100.0°C)
Core 12:       +47.0°C  (high = +80.0°C, crit = +100.0°C)
Core 16:       +73.0°C  (high = +80.0°C, crit = +100.0°C)
Core 20:       +50.0°C  (high = +80.0°C, crit = +100.0°C)
Core 24:       +58.0°C  (high = +80.0°C, crit = +100.0°C)
Core 28:       +52.0°C  (high = +80.0°C, crit = +100.0°C)
Core 36:       +48.0°C  (high = +80.0°C, crit = +100.0°C)
Core 37:       +48.0°C  (high = +80.0°C, crit = +100.0°C)
Core 38:       +48.0°C  (high = +80.0°C, crit = +100.0°C)
Core 39:       +48.0°C  (high = +80.0°C, crit = +100.0°C)

再次更新

这是第 12 代 Intel(R) Core(TM) i7-12700

这是一台 PC,而不是服务器,只有一个 CPU 插槽。

更新

foo@foo-linux:~$ cat /proc/cpuinfo | grep -i apicid
apicid      : 0
initial apicid  : 0
apicid      : 1
initial apicid  : 1
apicid      : 8
initial apicid  : 8
apicid      : 9
initial apicid  : 9
apicid      : 16
initial apicid  : 16
apicid      : 17
initial apicid  : 17
apicid      : 24
initial apicid  : 24
apicid      : 25
initial apicid  : 25
apicid      : 32
initial apicid  : 32
apicid      : 33
initial apicid  : 33
apicid      : 40
initial apicid  : 40
apicid      : 41
initial apicid  : 41
apicid      : 48
initial apicid  : 48
apicid      : 49
initial apicid  : 49
apicid      : 56
initial apicid  : 56
apicid      : 57
initial apicid  : 57
apicid      : 72
initial apicid  : 72
apicid      : 74
initial apicid  : 74
apicid      : 76
initial apicid  : 76
apicid      : 78
initial apicid  : 78
cpu
  • 2 个回答
  • 52 Views

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