Загрузка цп что делать. Устраняем высокую загрузку процессора

Перегрузка процессора компьютера или ноутбука может быть вызвана рядом причин - от технического устаревания железа до вирусов, нагружающих систему.

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

Нажмите Ctrl+Shift+Esc, чтобы открыть «Диспетчер задач» и кликните на колонку «ЦП» для сортировки. Также в диспетчер можно попасть, нажав Ctrl+Alt+Del и выбрав нужный пункт в появившемся меню.

В норме список задач должен выглядеть примерно так. При высокой загрузке одна или несколько задач будет отнимать большую часть процессорного времени. Если одно из приложений забирает себе 50-100% мощности постоянно - это может быть симптомом проблемы.

Например, на скриншоте практически половину мощности процессора i5-2500k занимает «Диспетчер задач» и системные прерывания, чего быть не должно.

Аппаратные причины перегрузки

Несмотря на расхожее заблуждение, редко является причиной перегрузки процессора. Процессор скорее уведет систему в перезагрузку или зависнет полностью, чем будет долгое время работать на 100% мощности. Тем не менее такие случаи иногда происходят и пользователю необходимо знать, как от них защищаться.

Устаревшее оборудование

Самой распространенной причиной перегрузки процессора становится устаревание ПК или ноутбука. Программное обеспечение не стоит на месте: если пять лет назад для комфортной работы Google Chrome хватало одноядерного процессора с парой сотен мегабайт оперативной памяти, то теперь несколько тяжелых вкладок могут использовать ресурсы нескольких ядер и несколько гигабайт. В 2018 году для комфортной работы потребуется 4-ядерный процессор с 6-8 гигабайтами памяти.

Если на новое железо денег нет, постарайтесь следовать этим советам:

  • не запускайте несколько приложений сразу. Это не только затрудняет работу процессора само по себе - заполненная до упора оперативная память создает дополнительную нагрузку;
  • по возможности используйте старые версии программ. Да, это может быть неудобно и небезопасно, но старые версии приложений будут гораздо менее требовательны;
  • отключите лишние службы и программы в автозагрузке. Это можно сделать во вкладках «Автозагрузки» и «Службы» «Диспетчера задач»;
  • старайтесь избегать ситуаций, в которых процессор будет загружен на 100% без особой нужды. Например, не открывайте много вкладок в браузере или видео в 4К-разрешении на небольшом экране ноутбука.

Оверклокинг

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

  • перегреву;
  • артефактам изображения;
  • ошибкам и вылетам приложений;
  • зависаниям;
  • 100% загрузке процессора при тривиальных задачах.

Здесь для проверки следует использовать диагностические утилиты, записывающие результаты в лог. Для подробной статистики по всем компонентам подойдет MSI Afterburner.

Перегрев процессора

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

Как решить проблему с перегревом?

  • очистите корпус системного блока от пыли. Обратите особое внимание на радиатор и вентилятор процессора. Для ноутбука процедуру очистки нужно проводить как минимум раз в полтора-два года;
  • если компьютер находится в эксплуатации два года и более, удалите термопасту между вентилятором и крышкой процессора. Нанесите новую равномерным слоем;
  • в случае, когда стандартное охлаждение не справляется или кулер не работает - замените его на более мощный. Желательно, с массивным алюминиевым радиатором с медными трубками;
  • не закрывайте вентиляционные отверстия системного блока при его установке на место.

Обратите внимание! Нормальная температура работающего процессора -около 40 градусов, при 70-80 включаются защитные механизмы BIOS.

Программные причины перегрузки

Получить 100% нагрузки на процессор программным путем гораздо проще, чем аппаратным - нужно всего лишь ошибиться в настройках проверки антивируса или скачать несовместимую с новой системой программу.

Антивирусы и вирусы

Из всего списка причин возможных неполадок, приводящих к 100% загрузке процессора, чаще всего проблемы возникают с антивирусами. Проверки файлов в реальном времени - ресурсоемкая задача, которая при неправильных настройках может занять целую вечность.

На слабых компьютерах поможет установка облачного антивируса, вроде Panda Cloud Cleaner. Он гораздо более требователен к качеству интернета, но нагрузка на процессор минимальна.

В Windows 10 можно использовать встроенный Defender, для домашних задач его вполне достаточно.

Обратная сторона медали - вирусы на незащищенном ПК. Зловредные программы могут использовать ваш компьютер для майнинга или как шлюз для DDOS-атак. Для одноразовой очистки от уже имеющихся проблем используйте утилиту Dr.Web Cureit!

Автоматическое обновление

Причиной перегрузки может стать неудачное обновление операционной системы или драйверов. Такие проблемы случались в 2015 году у пользователей бета-версий Windows 10, Для решения проблемы попробуйте установить разные версии драйверов, откатить обновления через точку восстановления системы или отключить их полностью.


В Windows 10 отключение обновлений не дает видимого эффекта защиты от перегрузки.

Фоновые приложения

Ряд программ для поддержки своего функционала работает в фоновом режиме. Например, Скайп и ЛибреОфис находятся в оперативной памяти постоянно, для быстрой загрузки. В некоторых ситуациях это может стать проблемой - например, при зависшей в фоне программе, которая занимает от половины до всех ресурсов компьютера.

Отключить фоновое приложение также можно в «Диспетчере задач», если навести курсором мыши на выбранное запущенное приложение и использовать кнопку «Снять задачу».

Видео — Загрузка ЦП 100 процентов, что делать на Windows 7,8,10?

Часто компьютер начинает тормозить из-за загрузки процессора. Если так случилось, что его нагрузка достигает 100% без видимой на то причины, значит есть повод беспокоиться и нужно срочно решать данную проблему. Существует несколько простых способов, которые помогут не только выявить проблему, но и решить ее. Их подробно мы рассмотрим в этой статье.

Нагрузка на процессор порой достигает 100% даже в тех случаях, когда вы не используете сложные программы или не запускаете игры. В таком случае это является проблемой, которую нужно обнаружить и решить, ведь просто так без причин ЦП не перегружается. Сделать это можно несколькими простыми способами.

Способ 1: Поиск и устранение процесса

Бывают случаи, когда пользователи сталкиваются не с проблемой, а просто забыли отключить ресурсоемкую программу или на данный момент выполняется какая-то задача. Особенно загрузка становится заметной на старых процессорах. Кроме этого сейчас набирают популярность скрытые программы майнеры, не обнаруживающиеся антивирусами. Их принцип работы заключается в том, что они просто будут расходовать системные ресурсы вашего компьютера, отсюда и возникает нагрузка на ЦП. Определяется такая программа несколькими вариантами:

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


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

Способ 2: Очистка от вирусов

Если какой-то системный процесс грузит ЦП на 100%, скорее всего, ваш компьютер заражен вирусом. Иногда нагрузка не отображается в «Диспетчере задач», поэтому сканирование и очистку на вредоносное ПО лучше выполнить в любом случае, хуже от этого точно не будет.

Вы можете воспользоваться любым доступным способом очищения ПК от вирусов: онлайн-сервисом, программой-антивирусом или специальными утилитами. Подробнее о каждом способе написано в нашей статье.

Способ 3: Обновление драйверов

Перед тем, как приступать к обновлению или переустановке драйверов, лучше убедиться, что проблема именно в них. В этом поможет переход в безопасный режим. Перезагрузите компьютер и перейдите в этот режим. Если нагрузка на ЦП исчезла, значит, проблема точно в драйверах и необходимо их обновить или переустановить.

Переустановка может потребоваться только в том случае, если вы недавно поставили новую операционную систему и, соответственно, установили новые драйвера. Возможно, возникли какие-то неполадки или что-то не установилось и/или действие выполнилось некорректно. Проверка осуществляется достаточно просто, с использованием одного из нескольких способов.

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

Способ 4: Очистка компьютера от пыли

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

Когда процедура не помогла, процессор все равно шумит, греется, а система выключается, то выход здесь только один – замена термопасты. Процесс этот не сложный, но требует внимательности и осторожности.

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

Инструкция

Выключите программу, которая запустила этот процесс. Нажмите на кнопку закрытия программы или командой «Выход» из меню. Попробуйте в «Диспетчере задач», если программа . Если и это не сработало, завершите процесс в «Диспетчере задач». Будьте внимательны, завершать следует только процессы пользователя, ни в коем случае служебные процессы.

Обратитесь к специалисту, если проблемы с процессором возникают неоднократно.

Источники:

  • как уменьшить загрузку цп в 7

Каждый раз при загрузке операционной системы автоматически запускается утилита Chkdsk. Эта утилита сканирует ваш жесткий диск на наличие ошибок, возможных сбоев в работе файловой системы. Конечно, ничего плохого в этом нет, но скорость загрузки системы при этом снижается. Между тем эту процедуру можно отключить, тем самым повысив скорость загрузки ОС.

Вам понадобится

  • - компьютер с ОС Windows.

Инструкция

Для отключения сканирования системного диска проделайте следующие шаги. Нажмите «Пуск». Выберите «Все программы», затем - «Стандартные программы». Среди стандартных программ есть «Командная строка». Запустите ее.

Дальше в командной строке введите Chkntfs /X C, где С является буквой системного диска. Если ваш системный диск имеет другую букву, то, соответственно, ее и нужно прописать. После ввода команды нажмите клавишу Enter. Закройте командную строку. Теперь автоматическая проверка системного раздела отключена. Таким же способом можно отключить автоматическую проверку других разделов жесткого диска. Просто в конце команды следует написать букву раздела винчестера, для которого вы хотите отключить сканирование.

Еще один способ отключить проверку - это отредактировать ветку системного реестра. В командной строке введите regedit. Через секунду запустится окно редактора реестра. В его левой части находится список главных разделов системного реестра. Найдите среди них раздел HKEY_LOCAL_MACHINE.

Кликните по стрелочке, которая находится напротив названия этого раздела. Повторите процедуру возле подраздела SYSTEM. Таким образом открывайте разделы в таком порядке: CurrentControlSet/Control/Session Manager. Session Manager открывать не нужно, выделите его с помощью левого щелчка мышки.

После выделения последнего раздела в правом окне будут доступны ветки для редактирования. Найдите среди них ветку под названием BootExecute. Щелкните по ней дважды левой кнопкой мышки. Теперь ее можно отредактировать. Все, что вам нужно, - это перед звездочкой добавить параметр /K:C. В конечном итоге отредактированная ветка будет выгладить так: autocheck autochk /k:C. Сохраните изменения. После этого проверка диска будет отключена.

Ход установки процессора зависит от его типа и конфигурации материнской платы. Главное - это соблюдать принцип совместимости, а также элементарную аккуратность.

Инструкция

Начните процесс установки с раскрытия системного блока и извлечения материнской платы, для чего открутите все необходимые крепежные винты.

Изучите модель материнской платы, визуально запомните, как установлен процессор в конкретном случае. Если задачей является замена старого камня на новый, то перед тем как выполнять эту замену, исследуйте возможность апгрейда. Системная плата должна поддерживать тип процессора. Для того чтобы узнать эту информацию, можно зайти на официальный сайт производителя и прочитать, какая конфигурация возможна.

В Windows 7 самым главным процессом в ОС является Svchost.exe . Очень часто пользователи ПК с Windows 7 встречаются с проблемой, когда этот процесс сильно грузит процессор. Загрузка процессорных ядер может достигать от 50 до 100 процентов. Svchost.exe является хост-процессом, отвечающим за запуск служб группы из динамических библиотек DDL . То есть система с помощью этого хост-процесса запускает группу служб, не создавая при этом лишних процессов. Такой подход снижает нагрузку на процессор и оперативную память. Если система тормозит и Svchost.exe сильно грузит процессор - это означает, что ОС неправильно работает. Такое поведение системы может вызвать вредоносная программа, а также неполадки в самой ОС. Чтобы разобраться с этой проблемой, в этом материале мы рассмотрим все способы решения задачи с сильной загрузкой процессора, вызванной процессом Svchost.exe.

Первые шаги, решающие проблему с процессом Svchost.exe

Если у вас возникла ситуация, когда хост-процесс Svchost.exe сильно нагружает процессор, то не следует сразу думать, что это вирус. Кроме вируса виновником этой проблемы может быть сама ОС. Ниже мы рассмотрим список проблем , а также методы их исправления :

Восстанавливаем нормальную работу процессора с помощью антивируса

Если вышеописанные способы не помогли, то скорей всего ваша Windows 7 заражена вирусом . Обычно заражение вирусом происходит извне. То есть через интернет или через внешний накопитель данных. Если у вас стоит хороший антивирус, то скорей всего вирус не пройдет. Но бывают случаи, когда антивирусы не видят новые версии вирусов и пропускают их. Если ваш компьютер заражен, то процесс хост Svchost.exe будет грузить процессор до 100 процентов, а также в имени пользователя вы увидите не системные имена «LOCAL» и «NETWORK SERVICE», а совсем другое имя.

Чтобы избавиться от вируса в системе, нужно запустить полную проверку компьютера в Windows 7 на поиск вредоносных программ. Ниже мы рассмотрим пример запуска полной проверки компьютера с помощью антивируса Comodo Internet Security. Также перед запуском любого антивируса для проверки ОС обновите его антивирусную базу. Двигаемся дальше и запустим антивирус Comodo Internet Security .

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

В нашем случае нужно выбрать пункт «Полное сканирование ». Этот вариант просканирует полностью винчестер, выявит вредоносную программу и обезвредит ее . Ниже показано окно сканирования Comodo Internet Security.

В других антивирусных программах принцип запуска полной проверки ПК максимально схож с рассмотренным. Поэтому если у вас проблема с хост-процессом Svchost.exe, то смело запускайте полную проверку ПК.

Для этого примера мы неспроста выбрали антивирус Comodo Internet Security. В этом антивирусе есть встроенный модуль под названием KillSwitch (в настоящее время этот модуль входит в состав бесплатного набора утилит COMODO Cleaning Essentials , скачать который можно ).

Этот модуль представляет собой диспетчер задач, который обладает расширенным функционалом. Например, KillSwitch может остановить дерево процессов и вернуть назад произведенные изменения после этого.

Также особенностью KillSwitch является проверка запущенных процессов на доверие . То есть, если процесс недоверенный, KillSwitch найдет его и укажет это в третьей колонке «Оценка ». Эта особенность модуля KillSwitch поможет быстрее определить проблему, связанную с Svchost.exe и загрузкой процессора.

Еще стоит упомянуть, когда вирус заражает сам антивирус или надежно маскируется от него, вследствие чего его не видит установленный антивирус. В этой ситуации на помощь пользователю придёт загрузочный диск . Этот диск представляет собой портативную операционную систему, основанную на Linux, которая грузится с него. После загрузки с этого диска пользователь сможет запустить проверку ПК прямо с загруженной операционной системы.

Такая проверка должна найти и обезвредить вирусы, которые заставляют Svchost.exe грузить процессорные ядра. Наиболее известными вирусами , которые грузят процессор с помощью Svchost.exe, являются:

  • «Virus.Win32.Hidrag.d » - представляет собой вирус, написанный на C++. Попав в систему, он осуществляет подмену Svchost.exe . После этого он ищет файлы с расширением «*exe» и заражает их. Вирус является безобидным, он не вредит системе и не крадет информацию. Но постоянное заражение файлов с расширением «*exe» сильно грузит процессор.
  • «Net-Worm.Win32.Welchia.a » - этот вирус представляет собой интернет-червь, который нагружает процессор путем интернет атак .
  • «Trojan-Clicker.Win32.Delf.cn » - примитивный троян, который регистрирует в системе новый процесс Svchost.exe для открытия определенной страницы в браузере , тем самым нагружая систему.
  • «Trojan.Carberp » - опасный троян, который также маскируется под Svchost.exe . Основным предназначением этого вируса является поиск и кража информации крупных торговых сетей .

Сильная загрузка процессора из-за Windows Update

На компьютерах с ОС Windows 7 часто наблюдается ситуация, когда процесс Svchost.exe грузит процессор и память из-за центра обновлений . Чтобы проверить, что именно центр обновлений грузит память и процессор, нужно зайти в «Диспетчер задач » и с помощью Svchost.exe перейти к службам, которыми в данный момент он управляет. Пример такого перехода показан на изображении ниже.

После такого перехода должно открыться окно со службами, где будет выделена служба «wuauserv ».

Именно эта служба отвечает за скачивание и установку обновлений на семерку. Исправить эту проблему достаточно просто.

В окне служб диспетчера задач можно полностью остановить «wuauserv» или в панели управления отключить проверку обновлений.

Но отключение службы «wuauserv» некрасивый выход из этой ситуации.

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

Решить эту задачу можно установкой обновлений вручную. Чтобы не скачивать десятки обновлений с сайта www.microsoft.com и потом долго их устанавливать, лучше всего воспользоваться набором обновлений UpdatePack7R2 . Разработчиком этого набора является «simplix », который также известен под этим ником и является модератором на форуме www.oszone.net. Скачать этот набор можно на сайте http://update7.simplix.info . В данный момент на сайте выложена последняя версия под номером 17.12.15. После загрузки набора можно приступать к установке обновлений. Для этого запустим инсталлятор.

В появившемся окне нажмем кнопку Установить . После этого начнется процесс установки обновлений.

Этот процесс может занять довольно много времени и зависит от количества уже установленных обновлений. Обновлять таким оффлайновым способом Windows 7 можно постоянно, так как автор проекта постоянно выпускает новые наборы. Также после завершения установки обновлений вы можете заново запустить центр обновлений. В этот раз проблема с загрузкой памяти и процессора должна исчезнуть, так как в этих обновлениях содержится исправление.

Остальные способы решения проблемы с загрузкой процессора из-за Svchost.exe

В этом разделе мы опишем способы, которые в некоторых случаях помогают решить проблему с Svchost.exe, а также увеличивают общую производительность и стабильность системы. Ниже приведен список с подробным описанием каждого из способов :

  • Очень часто помогает решить проблему процесса Svchost.exe, даже когда он заражен вирусом, обычный откат ОС с помощью точки восстановления . Но этим способом можно воспользоваться только в том случае, если защита системы включена.
  • При длительном использовании различных установленных программ операционная система Windows 7 накапливает на жестком диске очень много мусора . Под мусором подразумеваются временные файлы, создающиеся при использовании различных утилит. Например, файлы истории браузера. В этом случае на помощь придут специальные утилиты для очистки ОС . Наиболее популярной среди них является программа CCleaner .
  • Также советуем провести дефрагментацию , которая может повысить общую производительность системы. Дефрагментация хоть и не решит проблему с процессом Svchost.exe, но значительно ускорит его, тем самым ослабив нагрузку на процессор. Одним из лучших дефрагментаторов является утилита Defraggler , которая кроме своей основной функции еще умеет дефрагментировать системные файлы.
  • Очистка реестра также помогает решить нашу задачу. Для очистки реестра, как и в способе выше, подойдет утилита CCleaner , которая быстро удалит старые ключи реестра , мешающие правильно работать Svchost.exe.
  • Также для всех запущенных процессов, включая Svchost.exe, немаловажным фактором является исправная оперативная память. При неисправной памяти система и запущенные процессы могут вести себя нестабильно. Выходом из этой ситуации будет замена оперативки на исправную память . Проверить память на исправность можно с помощью встроенного средства диагностики в Windows 7.

Заключение

В этом материале мы довольно обширно рассмотрели проблему, связанную с сильной загрузкой процессора из-за процесса Svchost.exe. Исходя из этого, наши читатели наверняка смогут решить эту проблему и обеспечить нормальную работу компьютера.

Видео по теме

  • Перевод

Та метрика, которую мы называем «загрузкой процессора» на самом деле многими людьми понимается не совсем верно. Что же такое «загрузка процессора»? Это то, насколько занят наш процессор? Нет, это не так. Да-да, я говорю о той самой классической загрузке CPU, которую показывают все утилиты анализа производительности - от диспетчера задач Windows до команды top в Linux.

Вот что может означать «процессор загружен сейчас на 90%»? Возможно, вы думаете, что это выглядит как-то так:

А на самом деле это выглядит вот так:

«Работа вхолостую» означает, что процессор способен выполнить некоторые инструкции, но не делает этого, поскольку ожидает чего-то - например, ввода-вывода данных из оперативной памяти. Процентное соотношение реальной и «холостой» работы на рисунке выше - это то, что я вижу изо дня в день в работе реальных приложений на реальных серверах. Есть существенная вероятность, что и ваша программа проводит своё время примерно так же, а вы об этом и не знаете.

Что это означает для вас? Понимание того, какое количество времени процессор действительно выполняет некоторые операции, а какое - лишь ожидает данные, иногда даёт возможность изменить ваш код, уменьшив обмен данных с оперативной памятью. Это особенно актуально в нынешних реалиях облачных платформ, где политики автоматического масштабирования иногда напрямую завязаны на загрузку CPU, а значит каждый лишний такт «холостой» работы стоит нам вполне реальных денег.

Что же такое загрузка процессора на самом деле?

Та метрика, которую мы называем «загрузкой процессора» на самом деле означает нечто вроде «время не-простоя»: то есть это то количество времени, которое процессор провёл во всех потоках кроме специального «Idle»-потока. Ядро вашей операционной системы (какой бы она ни была) измеряет это количество времени при переключениях контекста между потоками исполнения. Если произошло переключение потока выполнения команд на не-idle поток, который проработал 100 милисекунд, то ядро операционки считает это время, как время, потраченное CPU на выполнение реальной работы в данном потоке.

Эта метрика впервые появилась в таком виде одновременно с появлением операционных систем с разделением времени. Руководство программиста для компьютера в лунном модуле корабля «Апполон» (передовая на тот момент система с разделением времени) называла свой idle-поток специальным именем «DUMMY JOB» и инженеры сравнивали количество команд, выполняемых этим потоком с количеством команд, выполняемых рабочими потоками - это давало им понимание загрузки процессора.

Так что в этом подходе плохого?

Сегодня процессоры стали значительно быстрее, чем оперативная память, а ожидание данных стало занимать львиную долю того времени, которое мы привыкли называть «временем работы CPU». Когда вы видите высокий процент использования CPU в выводе команды top, то можете решить, что узким местом является процессор (железка на материнской плате под радиатором и кулером), хотя на самом деле это будет совсем другое устройство - банки оперативной памяти.

Ситуация даже ухудшается со временем. Долгое время производителям процессоров удавалось наращивать скорость их ядер быстрее, чем производители памяти увеличивали скорость доступа к ней и уменьшали задержки. Где-то в 2005-ом году на рынке появились процессоры с частотой 3 Гц и производители сконцентрировались на увеличении количества ядер, гипертрейдинге, много-сокетных конфигурациях - и всё это поставило ещё большие требования по скорости обмена данных! Производители процессоров попробовали как-то решить проблему увеличением размера процессорных кэшей, более быстрыми шинами и т.д. Это, конечно, немного помогло, но не переломило ситуацию кардинально. Мы уже ждём память большую часть времени «загрузки процессора» и ситуация лишь ухудшается.

Как же понять, чем на самом деле занят процессор

Используя аппаратные счетчики производительности. В Linux они могут быть прочитаны с помощью perf и других аналогичных инструментов. Вот, например, замер производительности всей системы в течении 10 секунд:

# perf stat -a -- sleep 10 Performance counter stats for "system wide": 641398.723351 task-clock (msec) # 64.116 CPUs utilized (100.00%) 379,651 context-switches # 0.592 K/sec (100.00%) 51,546 cpu-migrations # 0.080 K/sec (100.00%) 13,423,039 page-faults # 0.021 M/sec 1,433,972,173,374 cycles # 2.236 GHz (75.02%) stalled-cycles-frontend stalled-cycles-backend 1,118,336,816,068 instructions # 0.78 insns per cycle (75.01%) 249,644,142,804 branches # 389.218 M/sec (75.01%) 7,791,449,769 branch-misses # 3.12% of all branches (75.01%) 10.003794539 seconds time elapsed
Ключевая метрика здесь это "количество инструкций за такт " (insns per cycle: IPC), которое показывает, сколько инструкций в среднем выполнил процессор на каждый свой такт. Упрощённо: чем больше это число, тем лучше. В примере выше это число равно 0.78, что, на первый взгляд кажется не таким уж плохим результатом (78% времени выполнялась полезная работа?). Но нет, на этом процессоре максимально возможным значением IPC могло бы быть 4.0 (это связано со способом получения и выполнения инструкций современными процессорами). То есть наше значение IPC (равное 0.78) составляет всего 19.5% от максимально возможной скорости выполнения инструкций. А в процессорах Intel начиная со Skylake максимальное значение IPC уже равно 5.0.

В облаках

Когда вы работаете в виртуальном окружении, то можете и не иметь доступа к реальным счетчикам производительности (это зависит от используемого гипервизора и его настроек). Вот статья о том, как это работает в Amazon EC2 .

Интерпретация данных и реагирование

Если у вас IPC < 1.0 , то я вас поздравляю, ваше приложение простаивает в ожидании данных от оперативной памяти. Вашей стратегией оптимизации производительности в данном случае будет не уменьшение количества инструкций в коде, а уменьшение количества обращений к оперативной памяти, более активное использование кэшей, особенно на NUMA-системах. С аппаратной точки зрения (если вы можете на это влиять) будет разумным выбрать процессоры с большими размерами кэшей, более быструю память и шину.

Если у вас IPC > 1.0 , то ваше приложение страдает не столько от ожидания данных, сколько от чрезмерного количества выполняемых инструкций. Ищите более эффективные алгоритмы, не делайте ненужной работы, кэшируйте результаты повторяемых операций. Применение инструментов построения и анализа Flame Graphs может быть отличным способом разобраться в ситуации. С аппаратной точки зрения вы можете использовать более быстрые процессоры и увеличить количество ядер.

Как вы видите, я провёл черту по значению IPC равному 1.0. Откуда я взял это число? Я рассчитал его для своей платформы, а вы, если не доверяете моей оценке, можете рассчитать его для своей. Для этого напишите два приложения: одно должно загружать процессор на 100% потоком выполнения инструкций (без активного обращения к большим блокам оперативной памяти), а второе должно наоборот активно манипулировать данным в ОЗУ, избегая тяжелых вычислений. Замерьте IPC для каждого из них и возьмите среднее. Это и будет примерная переломная точка для вашей архитектуры.

Что инструменты мониторинга производительности на самом деле должны показывать

Я считаю, что каждый инструмент мониторинга производительности должен показывать значение IPC рядом с загрузкой процессора. Это сделано, например, в инструменте tiptop под Linux:

Tiptop - Tasks: 96 total, 3 displayed screen 0: default PID [ %CPU] %SYS P Mcycle Minstr IPC %MISS %BMIS %BUS COMMAND 3897 35.3 28.5 4 274.06 178.23 0.65 0.06 0.00 0.0 java 1319+ 5.5 2.6 6 87.32 125.55 1.44 0.34 0.26 0.0 nm-applet 900 0.9 0.0 6 25.91 55.55 2.14 0.12 0.21 0.0 dbus-daemo

Другие причины неверной трактовки термина «загрузка процессора»

Процессор может выполнять свою работу медленнее не только из-за потерь времени на ожидание данных из ОЗУ. Другими факторами могут быть:
  • Перепады температуры процессора
  • Вариирование частоты процессора технологией Turboboost
  • Вариирование частоты процессора ядром ОС
  • Проблема усреднённых расчётов: 80% средней загрузки на периоде измерений в минуту могут не быть катастрофой, но могут и прятать в себе скачки до 100%
  • Спин-локи: процессор загружен выполнением инструкций и имеет высокий IPC, но на самом деле приложение стоит в спин-локах и не выполняет реальной работы

Выводы

Загрузка процессора стала сегодня существенно недопонимаемой метрикой: она включает в себя время ожидания данных от ОЗУ, что может занимать даже больше времени, чем выполнение реальных команд. Вы можете определить реальную загрузку процессора с помощью дополнительных метрик, таких, как количество инструкций на такт (IPC). Значения меньшие, чем 1.0 говорят о том, что вы упираетесь в скорость обмена данными с памятью, а большие - свидетельствуют о большой загруженности процессора потоком инструкций. Инструменты замера производительности должны быть улучшены для отображения IPC (или чего-то аналогичного) непосредственно рядом с загрузкой процессора, что даст пользователю полное понимание ситуации. Имея все эти данные, разработчики могут предпринять некоторые меры по оптимизации своего кода именно в тех аспектах, где это принесёт наибольшую пользу.