我怎样才能“限制”某个应用程序,以使其不占用 100% 的 CPU?

我怎样才能“限制”某个应用程序,以使其不占用 100% 的 CPU?

我使用 Arch Linux。我运行闭源应用程序 Spotify。最近,它显示出一个非常严重的错误,它会占用我 100% 的 CPU。我的电脑一直存在一些冷却问题(需要安装一些风扇),因此这个应用程序实际上可能会导致我的电脑自动关闭。

不管怎样,我有一个 6 核处理器,但不知何故,这个应用程序设法利用了我所有 6 个核心的 100%。在等待这个应用程序修补的同时,我希望仍然能够听音乐。Spotify 也只是偶尔进入这种状态,通常是在尝试播放某些歌曲时(我能看出来,因为当这种情况发生时它最终只是静音)。

我的主要问题是过热问题。在等待风扇启动时,有什么最佳方法可以限制此应用程序,以免我的计算机过热?

答案1

你可以看看好的实用程序。顾名思义,这是告诉应用程序“变得友善”,甚至“更友善”——取决于您通过的级别。举个例子:

nice -n 19 spotify

会要求 spotify 在资源方面对其他进程非常友好(即给它们留下大量资源,而它自己只消耗很少的资源)。nice指定的级别范围可以从 19(“我不配,我不配……”)到 -20(负数;“我是国王,跪下!”)

答案2

查看这个程序:

https://github.com/Sepero/temp-throttle

当 CPU 过热时,它会限制 CPU 的频率,以免过热。一旦温度低于可接受的水平,它会再次增加频率。

我测试了一下,它似乎运行得很好。我没有遇到任何过热问题,即使在周围空气温度超过 90 华氏度且 CPU 全速运转的情况下也是如此。(需要注意的是,我在测试之前也应用了 BIOS 更新,但该程序确实显示它全天都在节流和不节流。)我使用该程序时建议的上限为 80 摄氏度。

编辑:我目前使用 cpufreqd 来限制我的 CPU:

$ cat /etc/cpufreqd.conf
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
verbosity=4
[/General]

[acpi]
acpid_socket=/var/run/acpid.socket
[/acpi]

[Profile]
name=High
minfreq=0000000
maxfreq=2000000
policy=conservative
[/Profile]

[Profile]
name=Medium
minfreq=0000000
maxfreq=1400000
policy=conservative
[/Profile]

[Profile]
name=Low
minfreq=0000000
maxfreq=1100000
policy=powersave
[/Profile]



[Rule]
name=Default
acpi_temperature=thermal_zone0:0-65
profile=High
[/Rule]

[Rule]
name=CPU Getting Hot
acpi_temperature=thermal_zone0:65-75
profile=Medium
[/Rule]

[Rule]
name=CPU Almost Too Hot
acpi_temperature=thermal_zone0:75-200
profile=Low
[/Rule]

相关内容