由于我需要查找的原因,C++ 应用程序似乎卡在了 Docker 容器中。
我做了一个docker exec -it a_template_cpp bash
并进入了它。
我知道top
和pmap
命令,并且知道我可以在链接时生成一个地图文件来帮助我。
但我不知道哪些 Linux 命令可以显示我所询问的程序当前正在执行的地址。此时程序计数器寄存器的值是多少。
我应该执行什么命令才能知道它?
由于我需要查找的原因,C++ 应用程序似乎卡在了 Docker 容器中。
我做了一个docker exec -it a_template_cpp bash
并进入了它。
我知道top
和pmap
命令,并且知道我可以在链接时生成一个地图文件来帮助我。
但我不知道哪些 Linux 命令可以显示我所询问的程序当前正在执行的地址。此时程序计数器寄存器的值是多少。
我应该执行什么命令才能知道它?
我不想把我的CPU里的活生生的垃圾炸掉。
hashcat程序使用大量的CPU和GPU。
我知道,人们在网上推荐的简单解决方案,例如使用限制CPU使用率的工具,例如cpulimit
,但它所做的一切都削减了Hashcat。
限制线程或核心也无济于事,甚至会使情况变得更糟。我的 CPU 始终保持在 94-8% 左右,在 Hashcat 运行期间超过 90 度。该-w
选项最多只能帮助其冷却几度!
那么有没有解决这个问题的方法,或者我是否必须与我的 cpu 说再见,或者一次运行 Hashcat 一小段时间,然后暂停以冷却?
众所周知,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”都是物理处理器?
我一直在尝试理解lscpu
的输出,并遇到了几个专门用于 CPU、物理核心和线程概念的线程。根据这些线程,要获取 CPU(逻辑单元)的总数,您可以执行以下操作:Thread(s) per core
x Core(s) per socket
x 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 信息的脚本。在问题标题中命名的文件的某个服务器输出中,有 12 个model
和model name
彼此相同的字段。这些案例如下面的屏幕截图所示。12 个实例是否不超过 12 个单个物理 CPU 核心,或者有 12 个独立的 CPU?
model
grep单词的结果/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
我最近收到了一台配备 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。
命令中核心编号为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使用率,导致我很难控制系统(响应时间很慢)
有什么办法可以暂停这些控制台?或任何其他方式?
#更新
我实际上是在许多不同的控制台中构建 Yocto,似乎很难调整特定的进程,并且在构建 Yocto 时,有许多不同的进程在运行,它们可能会反复结束并启动另一个新进程。
我不知道这个问题是否在正确的位置......
过去几年我一直在使用 RaspberryPies,我想知道关于ARM CPU的一般问题,所以我想了解更多关于你们 ARM 的经验......所以问题是:
我最近看到一些云提供商在他们的服务中使用基于 ARM 的 CPU(我确实注意到aws和oracle正在使用它)所以有没有任何商业 CPU 可以在服务器中使用它(当然是 ARM 架构)我可以购买并在 HP Proliant DL380 Gen10 或 DELL 服务器中使用它?我一直在看到AmpereComputing,他们卖了一个非常好的微型计算机,但它显然与一些硬件供应商(Foxxcon、技嘉、超微......)
ARM CPU 可以使用 64 位指令吗?我正在尝试将它们与实际的 64 位进行比较
显然,我可以在这些 ARM CPU 中使用KVM进行虚拟化吗?我也可以使用LXD和 Docker 或Containerd吗?
有没有可以与 Intel(R) Xeon(R) Silver 4110 CPU 相比的 ARM CPU?