32位Linux应用程序CPU使用率高

32位Linux应用程序CPU使用率高

我在 2 个不同的 PC 配置上使用 Debian 8 Linux 发行版。下面您将注意到的第一个配置是我使用了很长时间的配置。此配置在高峰时段使用 100% 的 CPU,因此我决定购买一台规格更高的新 PC。我正在运行一个 10 多年前推出的旧 32 位 Linux 应用程序,名为 samp03svr。这是一个单线程应用程序,所以我只搜索了高频 CPU。Xeon 处理器对我没用。该应用程序需要的 CPU 频率高于内核数。

以下是我的电脑配置:

  1. 较旧的配置主板:华硕 P8H61-M 处理器:英特尔 i5-3570 @ 3.4 GHz 内存:2x8GB 金士顿 1333MHz

  2. 较新的配置主板:B250M-D3H-CF 处理器:i7-7700K CPU @ 4.20GHz 内存:2x8GB Kingston 2133MHz

我原本期望新配置的 CPU 使用率会低得多,但出乎意料的是,这并没有发生。事实上,CPU 使用率比旧配置高出约 5 倍。我进行的测试是在相同数量的工作负载、相同的操作系统和相同的驱动程序下进行的。我甚至尝试禁用多线程,但 CPU 使用率没有任何差异。

你建议做什么?

答案1

如果您的目标是满足您提到的高峰时段的需求,我会考虑(如果可能的话)在您现在拥有的两台机器上运行服务器程序,并将它们置于负载均衡器(如 haproxy)后面。

另一方面,如果您的目标是减少服务器程序的 CPU 消耗,那么您有几个选择。

您可以降低进程的优先级,以便内核以不占用您的 CPU 的方式安排其 CPU 时间。这可以使用nicerenice命令完成。在 Debian 上,优先级值范围从 -20 到 +19,默认值(不使用 nice 启动进程)为 0。值越高,优先级越低。如果您将其视为“进程越 nice,它就越愿意将其 CPU 时间让给其他进程”,那么就很容易记住了。

使用不同的niceness值像这样启动你的程序:

nice -n +12 /path/to/your/program

如果你的程序已在运行,你可以使用renice它的 pid:

#first find the pid
pgrep your_program_name
#or
ps aux | grep your_program_name

#now use the pid here
renice -n +12 pid_of_your_program

#or if you are comfortable combining these
renice -n +12 $(pgrep your_program_name)

另一个选择是使用名为 的工具cpulimit。它允许您运行程序并定义允许其使用的最大 CPU 百分比。

#install the package
apt-get install cpulimit

#run your program, for example limiting to 25%
cpulimit -l 25 /path/to/your/program

相关内容