Стресс тест процессора в Linux
Прогнал я тест Linpack и задумался: а не пора ли мне поменять термопасту на своём ноутбуке?
Да, по результатам нескольких тестов подряд (не буду захломлять статью картинками) видно, что процессор уходит в троттлинг (пропуск тактов и сброс частоты при нагреве), но вот, как быстро он начинает это делать?
Стресстест процессора в терминале Linux
Задавшись этим вопросом и поискав в интернете утилиты, я понял, что основная проблема в решении поставленной мной задачи — одновременный запуск, как минимум пары утилит и разбегающиеся глаза в двух окнах. И я пришёл к выводу, что мне больше подходит консольный вариант, нежели разноцветные окна открытых программ.
Начал я с sysbench:
sudo apt install sysbench
sysbench —num-threads=4 —test=cpu —cpu-max-prime=100000 run
- —num-threads=4 — это количество потоков, у меня двухъядерный четырёхпотоковый Intel® Core™ i7-640M, поэтому 4;
- —cpu-max-prime=100000 — это максимальное количество выполненных операций, я выставил в 100000, т.к. по умолчанию — 10000, слишком быстро завершают тест.
Потом я перешёл на Linpack. Так как процессор у меня от Intel и я имею некоторую долю лени (лень — двигатель прогресса), то я взял, скачал и распаковал готовый Intel-овский Linpack, предварительно создав в домашнем каталоге директорию linpack:
mkdir ./linpack
cd ./linpack
wget http://registrationcenter-download.intel.com/akdlm/irc_nas/9752/l_mklb_p_2018.3.011.tgz
tar -xvzf ./l_mklb_p_2018.3.011.tgz
Для AMD процессоров такой вариант я бы не стал пробовать, так как компилятор от Intel вставляет закладки, проверяющие процессор и если он не Intel. ну, подумаешь сотню-другую лишних инструкций процессор выполнит и заведомо проиграет в производительности. Для AMD лучше собрать Linpack из исходников, например, из этих. В данной статье сборку из исходников рассматривать не буду — читайте README в source code.
Вернёмся к Intel-овскому Linpack-у. Там много чего лишнего и мне не нужного, а то, что нужно рассмотрю относительно версии 2018.3.011. Сразу же перейду в нужную директорию, чтоб потом не набирать длинные команды:
Так как по умолчанию Intel-овский Linpack заточен под тестирование серверных Xeon-ов, создадим свой файл, который будет использоваться в качестве входных опций — просто уменьшим количество тестов, иначе устанем «пару-тройку дней» ждать завершения теста. У меня Linux Mint LMDE 3, поэтому я использую текстовый редактор xed, да и нравится он мне бОльшим функционалом, особенно, когда из-под root-а его запускать — он цвет на красный меняет. И так, создаём в этой же директории, в которую перешли, файл, например, my_test:
И в созданный файл копируем следующее содержимое:
Shared-memory version of Intel(R) Distribution for LINPACK* Benchmark. *Other names and brands may be claimed as the property of others.
Sample data file lininput_xeon64.
5 # number of tests
1000 2000 5000 10000 20000 # problem sizes
1000 2000 5008 10000 20000 # leading dimensions
4 2 2 2 1 # times to run a test
4 4 4 4 4 # alignment values (in KBytes)
Ну, и собственно запуск Linpack с созданным файлом:
./xlinpack_xeon64 -i ./my_test
Можно ещё заюзать stress-ng или stress, но поставленной мной задачи это всё-равно не решает. Вывода температуры, частот и времени от начала старта эти утилиты мне не показывают.
Температуру может показать sensors — подробнее про установку этой утилиты здесь. И эта утилита понадобится в дальнейшем рассмотрении моего вопроса. Линукс — велик и могуч: одна и та же задача может решаться по-разному. За Си мне лень было браться и я написал недостающую мне часть на BASH, ибо строк получилось не так уж и много. Без установленной sensors мой скрипт работать не будет. Фиксацию троттлинга естесственно не стал писать — его и так будет видно по сбросу частоты и температуре. Вот сам скрипт:
Сильно не ругайте за скидывание управляющих символов в stderr (1>&2), но это дело привычки, если вдруг потом вывод скрипта в файл отправлять, а там все эти ESC-апе последовательности точно не нужны, вот так и будет терминал цветным, а файл чистым. Что-то я отвлёкся.
Я создал файл chk в директории с linpack-ом и записал скрипт в него, Вы можете сделать тоже самое, за исключением xed, если у Вас его нет:
И собственно то, ради чего всё затевалось — тест Linpack cо скриптом:
./chk ./xlinpack_xeon64 -i ./my_test
Да, я вижу, одно ядро нагрелось до критического TDP в 105°C за 86 секунд, но это мне ни о чём не говорит, а вот то, что с 50°C до 80°C процессор нагревается за 2 секунды — это уже показатель: термопасту точно пора менять — два года не менял, а вот с системой охлаждения останется вопрос, который проявят тесты после замены термопасты и термопроводящих прокладок на моём ноутбуке.
Почему именно 80°C я взял за отправную точку? Да просто потому, что именно эта температура заложена в BIOS, как температуры начала скидывания частот, да ещё и начало включения кулера выставлена в 55°C в угоду энергосбережению, но BIOS — InsydeH20, да ещё и с проверкой своей хэш-суммы и белым списком девайсов — та ещё головная боль. будет программатор — займусь им вплотную.
Скрипт писал на скорую руку и с ориентиром на Linpack, но он так же свободно работает и с другими консольными утилитами. Вот запуск с вышеизложенным sysbench:
./chk sysbench —num-threads=4 —test=cpu —cpu-max-prime=100000 run
Как видно из скриншота sysbench не даёт полную нагрузку на процессор, в отличии от Linpack-а.
Вот запуск с утилитой stress (подробнее про stress — здесь):
./chk stress —cpu 16
Естественно выход/окончание теста с утилитой stress осуществляется вручную по CTRL+C, отсюда и Error: 1 выведенная моей переменной PS1 из-за подобной реализации выхода из скрипта через exit 1.
Скрипт можно запустить и без опций, но тогда он только температуру и частоты в почти реальном времени показывает:
В любом случае выход из скрипта осуществляется автоматически, по окончании теста или можно выйти, нажав CTRL + C:
В общем: поставленную для себя задачу я решил и даже лучше — появилась целая надстройка над тестовыми утилитами. Осталось ноутбук разобрать и поменять таки термопасту с прокладками: как вспомню — аж страшно становится.
Источник
Разгон процессора Linux
Всем нам хотелось, чтобы наш компьютер работал как можно быстрее и в то же время мы не хотим тратить деньги на покупку новых компонентов. Производители заложили определенный запас для всех комплектующих компьютера, в том числе для процессора. Это означает, что ваш процессор работает не с максимальной мощностью, с которой он мог бы работать.
Именно этим пользуются во время разгона процессора, когда пользователи получают намного большую частоту, чем установленная по умолчанию. В этой статье мы рассмотрим как выполняется разгон процессора компьютера, а также поговорим про особенности этой задачи в операционной системе Linux.
Разгон процессора в Linux
Перед тем, как приступить к разгону процессора, вам нужно узнать несколько очень важных моментов. Первый из них — это тепло. Естественно, что чем большее напряжение вы будете подавать на тот или иной компонент, тем больше тепла он будет производить. А чем большую частоту вы хотите получить, тем большее напряжение придется подать, но делать это нужно в рамках здравого смысла.
Есть предел напряжения, которое может выдержать ваш процессор, перед тем, как появится угроза его разрушения. При слишком большом напряжении компьютер может вовсе не загрузиться. Это напряжение и есть пределом разгона. Здесь подходит видоизмененная пословица: «Все чипы выпускаются равными, но некоторые большее равны чем другие». Каждый процессор уникален, вам может повести и именно ваш компонент будет поддерживать большую частоту работы. Потенциал процессора может варьироваться от 0,2 ГГц до 1 ГГц.
Допустим, что у вас есть хороший куллер для охлаждения вашего процессора, процессор поддерживает разгон, а к таким относятся серия K и X от Intel и все процессоры от AMD, а также вы знаете как попасть в меню настройки BIOS.
Этап первый — проверка системы
Перед тем как переходить к настройке BIOS и реальному разгону процессора нужно убедиться, что ваша система имеет хорошее охлаждение и работает достаточно стабильно. Для этого нам нужно протестировать температуру процессора при максимальной нагрузке. В Linux используется набор программ lm_sensors для просмотра текущей температуры.
Сначала нужно установить этот пакет утилит, если он еще не установлен в вашей системе. В Ubuntu для этого используйте команду:
sudo apt install lm_sensors
Затем используйте утилиту sensors для просмотра текущей температуры оборудования. Обычно, кроме процессора, отображается температура видеокарты, оперативной памяти и так далее. Но в нашем случае отображается только температура для обоих ядер:
Как видите, тут кроме текущей температуры, показана максимальная температура и критическая. Но сейчас мы смотрим температуру в обычном режиме, теперь нужно проверить ее при максимальной нагрузке. Для этого будем использовать утилиту stress. Ее можно установить в Ubuntu с помощью команды:
sudo apt install stress
Затем создаем нагрузку на процессор, например, в 16 потоков:
И снова смотрим температуру:
Только теперь вы можете оценить насколько хорошо справляется ваше охлаждение и действительно ли есть возможность разгонять процессор. Если система уже достигла максимальной температуры и приближается к критической, то понятно, что перед разгоном нужно позаботиться про охлаждение. В противном случае вы можете переходить к дальнейшем действиям.
Этап второй — настройка BIOS
Этот шаг отвечает непосредственно за разгон процессора. Перезагрузите ваш компьютер и войдите в BIOS. Настройка разгона отличается от версии BIOS, процессора и производителя. Мы рассмотрим разгон процессора AMD Athlon в BIOS от ASUS.
Во множестве материнских плат, в том числе и в этой есть возможность автоматического разгона процессора на определенный, безопасный процент. Так вы можете дать материнской плате сделать большинство работы за себя. Мой процессор работает по умолчанию с частотой 3.0 ГГц, На вкладке «Andvanced» есть раздел «Config JumperFree» здесь вы можете настроить вручную частоту и напряжение, а также задать профиль разгона.
Например, для пункта «AI Overclock Tuner» задайте значение «Overclock profile», если хотите использовать один из настроенных по умолчанию профилей. Затем для параметра Overclock Options нужно выбрать профиль разгона. Для у этой материнской платы доступен максимальный разгона на 10%:
Таким образом, для процессора на 3.0 ГГц мы получим частоту 3.3 ГГц.
Если же вы хотите настраивать напряжение вручную, вам придется обратиться к документации процессора. Установите значение Overclock profile в manual, изменять множители частоты. Для применения изменений нужно перезагрузить компьютер. В материнских платах в UEFI все может немного отличаться, но суть будет одна и та же, там будет пункт, позволяющий разогнать процессор.
Этап третий — повышение множителя частоты
Допустим, вы уже включили нужный профиль разгона или настроили вручную множитель для напряжения или частоты. Но нельзя сразу выставлять слишком высокий параметр, нужно сначала посмотреть как будет работать система с тем, что имеется. Перезагрузите компьютер и загрузитесь в операционную систему.
В Linux есть такая неприятная для разгона особенность, как cpufreq, эта технология меняет частоту в зависимости от нагрузки на систему поэтому вы не сможете получить максимальную частоту пока установлен профиль энергосбережения. Прежде всего, нам нужно установить профиль максимальной производительности — perfomance. Сначала устанавливает утилиту cpufrequtils если она еще не установлена:
sudo apt install cpufrequtils
Затем, с помощью конфигурационного файла, меняем профиль регулировки частоты по умолчанию на максимальную производительность. Это можно сделать с помощью команды:
sudo cpupower frequency-set -g performance
Если вы хотите чтобы такая частота сохранилась после перезагрузки, то нужно исправить файл сервиса systemd:
sudo vi /usr/lib/systemd/system/cpupower.service
ExecStart=/usr/bin/cpupower -c all frequency-set -g performance
Дальше вы можете проверить результат своих действий с помощью команды:
Вы должны увидеть, что активный профиль — perfomance. Посмотреть текущую частоту вы можете с помощью утилиты hwinfo:
hwinfo —cpu | grep Clock
Дальше нам нужно повторить тест температуры процессора при максимальной нагрузке. Как это делается смотрите выше. Если все хорошо и система стабильно работает на протяжении 5 минут, вы можете попытаться еще увеличить множитель.
Возможно, вы захотите контролировать изменение частоты во время теста stress, тогда можно использовать утилиту watch с интервалом в полсекунды:
watch -n 0,5 «hwinfo —cpu | grep Clock»
Чтобы обнаружить придел, увеличивайте множитель на единицу и повторяйте тестирование. Повторяйте такой процесс пока ваш компьютер либо совсем не загрузится, либо температура будет превышать максимальную. Но разгон процессора Linux еще незавершен.
Этап четвертый — повышение напряжения
Если ваш компьютер перестал включаться после повышения частоты до определенного предела или вы получаете Kernel Panic, то пришло время повысить напряжение. Увеличивайте напряжение на 0,1 или на 0,05 пока компьютер не будет нормально загружаться и стабильно работать. Вам нужно быть очень аккуратными с напряжением Vcore. Если вы примените слишком высокое напряжение, то можете сжечь свой процессор. Но делать это обязательно, если вы хотите разогнать компьютер, иначе вы никак не сможете понять как процессор реагирует на то или иное напряжение.
Дальше вы снова можете продолжать повышение множителя частоты. Но рано или поздно вы достигните момента, когда не сможете получить желаемую частоту даже после увеличения напряжения. Тогда верните множитель на предыдущее значение и уменьшите напряжение до предыдущего пункта. Это и будет ваш разгон процессора Linux.
Этап пятый — финальное тестирование
Теперь, когда разгон процессора amd или intel завершен, вам нужно его протестировать. Во первых, проведите еще раз тестирование, которое мы делали перед тем, как перейти к разгону. Вам нужно увидеть как хорошо процессор справляется со своей задачей при максимальной нагрузке и не нужно ли улучшить охлаждение. Посмотреть текущую частоту, до которой вам удалось разогнать процессор можно с помощью утилиты hwinfo:
hwinfo —cpu | grep Clock
Для процессоров Intel вы можете применять программу от производителя — i7z, которая позволяет просмотреть текущую частоту и температуру.
Этот пакет есть в официальных репозиториях. Также понаблюдайте за работой компьютера в течение одного двух-дней. Присмотрите как меняется температура и не наблюдается ли лагов в работе компьютера. Только после всего этого вы можете наслаждаться максимально раскрытым потенциалом вашей машины.
Выводы
В этой статье мы рассмотрели как выполнить разгон процессора bios в linux, до максимальной производительности. Но вы должны знать, что разработчики намеренно уменьшают частоту не из жадности. Это делается потому что при увеличении частоты компьютер может начать работать нестабильно, а во-вторых процессор будет намного быстрее изнашиваться. Все очень сильно зависит даже не от конкретной модели, а именно от определенного изделия. Все процессоры разные, и имеют разный потенциал. Возможности своего устройства вы сможете узнать только экспериментально.
Источник