Высокая загрузка процессора 32-битного приложения Linux

Высокая загрузка процессора 32-битного приложения Linux

Я использую дистрибутив Debian 8 Linux на двух разных конфигурациях ПК. Первая конфигурация, которую вы заметите ниже, — это та, которую я использую уже очень давно. Эта конфигурация использует 100% процессора в часы пик, поэтому я решил купить новый ПК с гораздо более высокими характеристиками. Я запускаю старое 32-битное приложение Linux, которое было запущено более 10 лет назад, называется samp03svr. Это однопоточное приложение, поэтому я искал только высокочастотный процессор. Процессоры Xeon мне не помогли. Приложению нужна более высокая частота процессора, чем количество ядер.

Вот конфигурации моего ПК:

  1. Старая конфигурация Материнская плата: ASUS P8H61-M Процессор: Intel i5-3570 @ 3.4 GHz Оперативная память: 2x8GB Kingston 1333MHz

  2. Новая конфигурация Материнская плата: B250M-D3H-CF Процессор: i7-7700K CPU @ 4.20GHz Оперативная память: 2x8GB Kingston 2133MHz

Я ожидал от новой конфигурации гораздо более низкого использования ЦП, но, как ни странно, этого не происходит. Фактически, использование ЦП примерно в 5 раз выше, чем в старой конфигурации. Тесты, которые я сделал, проводились для того же объема рабочей нагрузки, с той же операционной системой и теми же драйверами. Я даже пробовал отключить многопоточность, но разницы в использовании ЦП не было.

Что бы вы посоветовали сделать?

решение1

Если ваша цель — удовлетворить спрос в упомянутые вами пиковые периоды, я бы рассмотрел, если это возможно, запуск серверной программы на обеих машинах, которые у вас есть сейчас, и размещение их за балансировщиком нагрузки, например haproxy.

С другой стороны, если вашей целью является снижение потребления ресурсов процессора вашей серверной программой, у вас есть несколько вариантов.

Вы можете понизить приоритет вашего процесса, чтобы ядро ​​планировало свое процессорное время таким образом, чтобы оно не доминировало над вашим процессором. Это можно сделать с помощью команд niceили renice. В Debian значения приоритета варьируются от -20 до +19, а значение по умолчанию (запуск процесса без использования nice) равно 0. Чем выше значение, тем ниже будет приоритет. Это становится легко запомнить, если вы думаете об этом как «чем лучше процесс, тем больше он готов отдать свое процессорное время другим процессам».

Запустите свою программу следующим образом, используя различные значения приятности:

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. Он позволяет вам запустить программу и определить максимальный процент использования ЦП, который вы хотите ей разрешить.

#install the package
apt-get install cpulimit

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

Связанный контент