• Перевод

Та метрика, которую мы называем «загрузкой процессора» на самом деле многими людьми понимается не совсем верно. Что же такое «загрузка процессора»? Это то, насколько занят наш процессор? Нет, это не так. Да-да, я говорю о той самой классической загрузке 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 (или чего-то аналогичного) непосредственно рядом с загрузкой процессора, что даст пользователю полное понимание ситуации. Имея все эти данные, разработчики могут предпринять некоторые меры по оптимизации своего кода именно в тех аспектах, где это принесёт наибольшую пользу. – Игорь (Администратор)

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

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

Процессор загружен на 100% что делать в Windows 7?

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

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

4. Зависшие программы . Не бывает идеальных программ. Всегда будут ошибки и проблемы. Так что вполне возможно, что у вас просто какие-то программы загружают процессор из-за сбоев или же вычисления каких-то сложных алгоритмов. О том, что делать в таких ситуациях написано в Как закрыть зависшую программу в Windows 7 .

5. Необходимо почистить компьютер . Казалось бы, как, например, обычная пыль может быть связана с медлительностью операционной системы. А вот, напрямую. Дело в том, что для защиты от перегрева, производители устройств (включая процессор) снабжают их специальными датчиками. И если температура достигает максимума, то либо устройство отключается, либо полностью компьютер выключается. В процессоре же таких зон несколько и при достижении одной из верхних зон, чтобы уменьшить нагрев, у ЦП просто начинает падать производительность и, соответственно, компьютер начинает "жутко медлить".

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

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

Достаточно часто пользователи жалуются на 100-процентную загрузку процессора. При этом компьютер зачастую начинает «тупить» и не позволяет нормально работать. Самое интересное, что даже при переустановке Windows ситуация меняется далеко не во всех случаях. Что же делать, как быть?

Причин на самом деле может быть множество, поэтому рассмотрим наиболее вероятные.

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

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

Суть в следующем: svchost.exe позволяет службам в виде dll-файлов исполнять их код в своем адресном пространстве, поэтому в диспетчере задач пользователь может видеть несколько запущенных копий svchost.exe.

Это нормальное явление. Разумеется, за тем исключением, когда под видом процесса прячется некий вирус. Запомните, что svchost.exe никогда не запускается от имени пользователя и вы не сможете найти его в автозагрузке. Если же это произошло, то перед вами — вредоносный файл или программа, не имеющая отношения к Windows.

Допустим, что вы не обнаружили никакого вируса. Почему же происходит загрузка процессора? Чаще всего это связано с тем, что вы не установили обновления для операционной системы Windows. Как это взаимосвязано? На самом деле все просто: как только пользователь подключается к интернету, система опрашивает сервис, какие обновления появились, а какие уже установлены. Это не самый простой процесс и по сути представляет из себя сканирование системы как в случае с антивирусом, например. Поэтому сканирование будет происходить едва ли не постоянно, пока вы не соизволите установить обновления.

Что делать тем, кто не хочет устанавливать обновления? Единственный вариант — это , чего делать крайне не рекомендуется. Но если вы все-таки решились на этот шаг, то зайдите в панель управления и выберите пункт «Центр обновления Windows». В открывшемся окне нажмите «Настройка параметров».

В новом окне в подразделе «Важные обновления» выберите пункт «Не проверять наличие обновлений (не рекомендуется)», после чего нажмите ОК.

Перезагрузите компьютер, после чего зайдите в диспетчер задач и проверьте загруженность процессора.

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

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

Разумеется, не стоит забывать и о самом процессоре — он может банально перегреваться. В этом случае нужно узнать, в чем именно дело. Возможно, пора заменить термопасту.

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

На самом деле, сделать это очень просто и все инструменты для этого у нас есть в самой Windows 10 (да и в старых версиях они также есть).

Когда вы поняли, что это за программа — то логично ее безжалостно «вырубить», и освободить этим компьютер от нагрузки. Но! Не каждую программу можно так завершать, если это системная, то лучше не трогать а просто сделать перезагрузку, если это знакомая вам программа — то можно и завершить ее, если ничего важного в программе не делается.

А может быть это вирус? Может быть, но тогда тормознутость системы будет носить регулярный характер. Может также грузить и антивирус, например при глубокой проверке компа (такая проверка называется типа «глубокий эвристический анализ»).

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

Запускаем диспетчер (кликните по панели задач правой кнопкой мыши):


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


То есть таким способом, вы можете узнать, какая прога нагружает ваш комп. А вот так, вы можете ее отключить:


Но не всегда так можно завершить работу проги, если есть возможность, то лучше перезагрузку сделать.

Теперь второй способ, он более информативный — это при помощи списка процессов, в том же диспетчере идем на вкладку Подробности , и там будет список процессов. Там также нужно нажать на колонку ЦП :


И мы опять видим виновника — это процесс WinRAR.exe , но, тут плюс в том, что в колонке Имя пользователя вы также будете видеть от какого имени запущен процесс! То есть если от вашего (а не от Системы , LOCAL SERVICE , DWM-1 , NETWORK SERVICE или подобного), и если этот процесс/прога ничего особо важного не делает — можно выключать. Если не от вашего имени, то есть это было запущено самой системой — то лучше не трогать, а сделать перезагрузку.

Чтобы завершить работу проги, просто нажмите правой кнопкой мыши и выберите там Снять задачу :


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

Операционная система Windows выполняет большое количество «фоновых» задач, которые могут негативно сказываться на производительности маломощных компьютеров. Одним из процессов, который грузит оперативную память, диск или CPU, является System.exe. В «Диспетчере задач» можно увидеть, что файл System грузит Windows, а если уточнить, то нагружает «железо» компьютера. Решить данную проблему владелец компьютера может самостоятельно, если выполнит ряд простых действий.

Процесс System грузит жесткий диск и память до 100%

System – это процесс операционной системы Windows, который не является вирусом, вопреки распространенному заблуждению. Он отвечает за работу приложений в «фоновом» режиме, то есть без активного контроля со стороны пользователя. Данный процесс не скрывается, и его можно с легкостью обнаружить в «Диспетчере задач».

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

Процесс System примечателен тем, что он забирает оперативную память понемногу, и в итоге полностью ее нагружает. При этом в «Диспетчере задач» может отмечаться, что System грузит не более 200-400 Мб оперативной памяти, а она будет заполнена полностью, и компьютер начнет сильно зависать при выполнении любых задач. Подобным образом системный процесс System может грузить жесткий диск.

Чтобы файл System не грузил компьютер, расходуя непомерные ресурсы, следует отключить в операционной системе Windows некоторые «фоновые» задачи:


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

Как отключить автоматическое обновление Windows 10 и системные службы

Компания Microsoft в операционной системе Windows 10, и более ранних версиях, предусмотрела возможность автоматического обновления программного обеспечения. К сожалению, данная функция на некоторых компьютерах приводит к тому, что при проверке доступных обновлений на сервисах Microsoft, файл System грузит оперативную память или жесткий диск. В таком случае единственным решением является отключение автоматического обновления Windows 10. Внимание: Если вы отключили автоматическое обновление Windows 10, рекомендуем раз в несколько месяцев (или недель) самостоятельно проверять наличие новых сборок операционной системы.

Отключить автоматическое обновление Windows 10 довольно просто, для этого необходимо:


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

Помимо автоматического обновления Windows 10, чтобы процесс System не грузил систему, необходимо отключить и некоторые службы. В меню «Служб», которое открывается командой services.msc, также необходимо остановить, а после отключить, следующие локальные службы:


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

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



Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png