在Ubuntu中运行一些程序时,风扇声音比较大,通过命令 watch sensors 查看了实时温度,发现只有一个核的温度变化较大,升到了60-70度,其他几个核的温度几乎没有变化,都在40度左右。如图,这个是未运行状态的下温度,运行程序之后,只有core2的温度发生了明显的变化,其他的几乎不变
又利用top命令查看了程序运行时的CPU占用率,CPU空闲率在96%左右
工作站的Ubuntu22.04系统
在运行程序时候,可以把任务自动分配到各个core之中,降低单个core的温度,降低风扇声音
你得是物理机直接装的?
不知道你这个问题是否已经解决, 如果还没有解决的话:我可以为您提供一些关于如何调试Ubuntu系统的CPU核数的解决方案。
首先,您可以使用lscpu
命令来确认您的系统中有多少个可用的CPU核。请在终端中运行以下命令:
lscpu
这将显示您的CPU信息,包括核心数量和线程数量。
接下来,您可以使用taskset
命令将任务绑定到特定的CPU核上。这将确保您的程序在运行时只在指定的核心上执行。首先,您需要安装cpuset
工具。在终端中运行以下命令进行安装:
sudo apt-get install cpuset
安装完成后,您可以使用以下命令来运行您的程序并绑定到特定的核心上:
taskset -c <core_list> <your_program>
其中,<core_list>
是一个以逗号分隔的核心列表,您可以将任务分配到这些核心上。<your_program>
是您需要运行的程序的命令。
例如,如果您想将任务分配到核心0和核心1上,您可以运行以下命令:
taskset -c 0,1 <your_program>
这样,您的程序将只在核心0和核心1上运行。
如果您希望在运行程序时自动将任务分配到各个核心中,降低单个核心的温度,您可以编写一个简单的脚本来实现。以下是一个示例脚本:
#!/bin/bash
# 获取系统核心数
core_count=$(nproc)
# 计算每个核心的任务数量
task_count=$((core_count / 2))
# 运行任务
for ((i=0; i<task_count; i++)); do
taskset -c $i <your_program> &
done
# 等待所有任务完成
wait
您可以将上述代码保存为一个名为run_program.sh
的脚本文件,并将<your_program>
替换为您要运行的程序的命令。然后,您可以在终端中运行以下命令来执行脚本:
chmod +x run_program.sh # 添加执行权限
./run_program.sh
这将自动将任务分配到所有可用的核心上运行。
请注意,调整任务分配可能会对程序的性能产生影响,并且它可能不能完全解决您的问题。您可能还需要考虑其他解决方案,例如优化您的程序代码或更改散热系统以降低温度和噪音。