我一直遇到过热问题,这使我的笔记本电脑立即关机。无论如何,是否可以监控传感器的温度并降低 CPU 频率以避免该问题?是否有任何现有的软件或 shell 脚本可以处理该工作?
我有一台机器,Intel(R) Xeon(R) CPU E5520可见 16 个逻辑核心(8 个带 HT)。如果我运行一些消耗 CPU 时间(单线程)的东西,top 会正确报告进程的 100% CPU 使用率,但总使用率只有 3-4% 左右。
Cpu(s): 3.6%us, 0.0%sy, 0.0%ni, 96.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.1%st
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1567 www 20 0 65632 84 4 R 100 0.0 0:05.96 burnMMX
Run Code Online (Sandbox Code Playgroud)
当然,报告的使用率应该是 ~6.25%(16 个内核中的 1 个)。
我试图将进程限制为给定数量的 CPU 内核。根据任务集手册页和本文档,以下内容应该有效:
[fedora@dfarrell-opendaylight-cbench-devel ~]$ taskset -pc 0 <PID>
pid 24395's current affinity list: 0-3
pid 24395's new affinity list: 0
Run Code Online (Sandbox Code Playgroud)
简单地说——这行不通。将进程置于负载和监视之下top,它的 CPU 使用率约为 350%(与没有任务集时相同)。它应该最大为 100%。
我可以通过taskset -c 0 <cmd to start process>在进程生成时正确设置亲和力。使用cpulimit -p <PID> -l 99也有点工作。在这两种情况下,将进程置于相同的负载下会导致 CPU 使用率达到 100%。
这里出了什么问题?
我在 Ubuntu14.04 服务器上工作,它有 48 个 CPU 内核。我从 sar 信息中看到一个核心上的 CPU 使用率很高。所以我想知道在那个核心上运行了哪些进程。我应该如何让所有进程在 Ubuntu 的每个 CPU 内核上运行?
lscpu我的电脑的输出看起来像 -
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 69
Stepping: 1
CPU MHz: 1200.093
BogoMIPS: 3392.08
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
Run Code Online (Sandbox Code Playgroud)
这是否意味着我有 4 个 CPU 和 2 个内核?
内核内存泄漏的英特尔处理器设计缺陷迫使 Linux 和 Windows 重新设计
和
在最近的新闻中,人们可以了解到内核内存泄漏 CPU 的错误。
如果使用OpenBSD,我们如何保护自己?或者 OpenBSD 不受影响?
我最近读到我可以通过将调控器设置为“性能”而不是“节能”来提高 CPU 的性能。根据Arch wiki,这将“以最大频率运行 CPU”而不是“最小频率”。
我发现这个措辞令人困惑,所以我也阅读了内核文档。
2.1 性能
CPUfreq 调控器“性能”将 CPU 静态设置为 scaling_min_freq 和 scaling_max_freq 边界内的最高频率。
2.2 节电
CPUfreq 调控器“powersave”将 CPU 静态设置为 scaling_min_freq 和 scaling_max_freq 边界内的最低频率。
“静态”是什么意思?对我来说,它与“动态”形成对比,并暗示频率永远不会改变,即使用 powersave CPU 频率将始终是单个值,等于scaling_min_freq。然而,情况显然并非如此。我目前默认运行“powersave”。我可以监视 CPU 频率
$ watch grep \"cpu MHz\" /proc/cpuinfo
Run Code Online (Sandbox Code Playgroud)
并看到它们动态变化。
内核文档中的“静态”是什么意思?哪些因素会影响 CPU 频率,这些因素如何随着“省电”和“性能”而变化?那么,从前者到后者有什么意义呢?会使用更高的频率吗?在什么情况下?具体来说,这会影响 CPU 的功耗、热量和使用寿命吗?
我对 CPU 一无所知。我有一个 32 位版本的 ubuntu。但我需要安装 64 位应用程序。我开始知道不可能在 32 位操作系统上运行 64 位应用程序。所以我决定升级我的操作系统。但是我的一个朋友告诉我在新升级之前检查CPU规格。我按照网站上的建议运行此命令。
lscpu命令提供以下详细信息
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 23
Model name: Pentium(R) Dual-Core CPU E5300 @ 2.60GHz
Stepping: 10
CPU MHz: 1315.182
CPU max MHz: 2603.0000
CPU min MHz: 1203.0000
BogoMIPS: 5187.07
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 …Run Code Online (Sandbox Code Playgroud) 我在这里束手无策,可以使用一些额外的意见。长话短说(更多详细信息见下文),我的系统不断限制 CPU 速度,直到我能够拔掉笔记本电脑的电池后才能恢复。
->问题描述
本质上,当一切都配合时,我的 CPU 运行良好。我正在使用 Conky 监控 CPU 速度和使用情况,并且可以观察倍频器根据负载进行适当缩放。我还观察到“涡轮”在高负载下启动。
然后,在没有任何明显原因的情况下,我的 CPU 降速到最低 400 MHz,并无限期地保持在这个水平。这包括重新启动或关闭后 - 它将重新启动到 400 MHz。如果我在此模式下将 CPU 使用率提高到 100%,它将保持在 400 MHz。我尝试使用 cpufrequtils 强制 CPU 频率,但它没有移动 ( sudo cpufreq-set -f `cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq)。还尝试重置 cpufrequtils 服务sudo /etc/init.d/cpufrequtils restart,CPU 仍然受到限制。我现在已经删除了 cpufrequtils,希望它本身可能会干扰 CPU,但可惜问题仍然存在。我能够用来恢复设备的唯一可靠方法是短时间(1-2 分钟)断开电池连接。正如您可能想象的那样,这是相当痛苦的。
帮助?
->系统信息
内核: 5.8.0-41-generic
发行版: Ubuntu 20.04.2 LTS
CPU:第 11 代 Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
笔记本电脑制造商: MSI
笔记本电脑型号: Prestige 15 A11SCX-002
-> “cpupower 频率信息”的输出
analyzing CPU 0:
driver: intel_pstate
CPUs …Run Code Online (Sandbox Code Playgroud) 这不一定是 Linux 问题,但无论如何我都会在这里问它。我使用的工作站主要用于训练深度学习和机器学习模型。我在 CPU 和 GPU 上运行训练代码。
\nCPU:AMD Ryzen 9 5950X 16 核处理器
\n显卡:NVIDIA GeForce RTX 3090
\n操作系统:Ubuntu 22.04 LTS
\n我使用的库(PyTorch、XGBoost、LightGBM 等)大量利用交换内存来加载数据。在处理大型数据集时,交换内存会缓慢积累并超过限制 (2GB)。当这种情况发生时,所有核心都会变得疯狂,CPU 会过热。几秒钟后工作站自行关闭。
\n我是一名数据科学家,但我不擅长硬件。我花了几周时间才弄清楚为什么我的工作站总是自动关闭。我必须找到一种方法来防止这种情况发生,因为我无法再完成自己的任务了。您有什么建议?
\n向您提供更多详细信息,这在 3-4 个月前还没有发生。最近才开始。
\n编辑:添加了 nvidia-smi 和传感器输出,同时训练两个模型(UNet 和 YOLOv6)。
\n英伟达-SMI
\n+-----------------------------------------------------------------------------+\n| NVIDIA-SMI 510.73.05 Driver Version: 510.73.05 CUDA Version: 11.6 |\n|-------------------------------+----------------------+----------------------+\n| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n| | | MIG M. |\n|===============================+======================+======================|\n| 0 …Run Code Online (Sandbox Code Playgroud) cpu ×10
linux ×9
kernel ×3
top ×2
ubuntu ×2
hardware ×1
intel ×1
memory-leaks ×1
monitoring ×1
openbsd ×1
process ×1
ps ×1
security ×1
temperature ×1