Что такое степень загрузки цп
Перейти к содержимому

Что такое степень загрузки цп

  • автор:

Под капотом использование ЦП, CPI и средние нагрузки

Метрика, которую мы называем загрузкой ЦП, на самом деле представляет собой «время без простоя»: время, когда ЦП не запускал поток бездействия. Ядро вашей операционной системы (каким бы оно ни было) обычно отслеживает это во время переключения контекста. Если небездействующий поток начинает выполняться, а затем останавливается через 100 миллисекунд, ядро ​​считает, что ЦП все это время использовался.

%CPU можно разбить на две составляющие

циклы с отложенными инструкциями и остановленные циклы, например, %INS и %STL.

Неправильно интерпретировать высокий %CPU как означающий, что процессор является узким местом.

Однако с помощью гиперпотоков эти остановленные циклы теперь могут использоваться другим потоком, поэтому %CPU может считать использованными циклы, которые на самом деле доступны.

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

Контекст того, что вы измеряете, зависит от того, полезна ли эта работа или нет. Первоначальный доступ к буферу почти всегда останавливается (если вы не выполнили предварительную выборку более 100 инструкций назад). Но начать стримить эти данные в L1 — полезная работа.

Стремление к 100%+ IPC _запредельно_ сложно даже для простых алгоритмов и критически важных функций горячего тракта. Вам не только требуется взаимодействие ассемблера (чтобы обеспечить выравнивание декодера), но вам нужно знать, на каком процессоре вы работаете, чтобы знать ограничения его декодера, кэша uOP и выравнивания кэша uOP.

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

инструкции/цикл (IPC) (обратите внимание на общее количество IPC = количество ядер!)

Производительность низкого уровня может быть точно измерена с помощью IPC, инструкций за цикл. IPC показывает в среднем, сколько инструкций мы выполнили за каждый такт процессора. Чем выше, тем лучше (упрощение). Приведенный выше пример 0,78 звучит неплохо (78% занятости?), пока вы не поймете, что максимальная скорость этого процессора — это IPC 4,0. Это также известно как 4-wide, что относится к пути выборки/декодирования инструкций. Это означает, что ЦП может удалить (завершить) четыре инструкции за каждый такт. Таким образом, IPC 0,78 в системе с четырьмя процессорами означает, что ЦП работают на 19,5% от их максимальной скорости. Новые процессоры Intel могут перейти на 5-дюймовые.

Если ваш IPC равен ‹ 1,0, у вас, скорее всего, проблемы с памятью, и стратегии настройки программного обеспечения включают сокращение операций ввода-вывода в память, улучшение кэширования ЦП и локальности памяти, особенно в системах NUMA. Аппаратная настройка включает использование процессоров с большим кэш-памятью, более быстрой памятью, шинами и межсоединениями.

Если ваш IPC › 1.0, вы, скорее всего, привязаны к инструкции. Ищите способы уменьшить выполнение кода: исключите ненужную работу, операции с кешем и т. д. CPU flame graphs — отличный инструмент для этого исследования. Для аппаратной настройки попробуйте увеличить тактовую частоту и увеличить количество ядер/гиперпотоков.

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

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

Средняя нагрузка Linux

Средняя загрузка — это средняя загрузка системы, рассчитанная за заданный период времени 1, 5 и 15 минут.

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

Чтобы понять среднее число нагрузки, вам нужно знать, сколько процессоров есть в вашей системе. Среднее значение нагрузки 6,03 указывает на то, что система с одним ЦП сильно перегружена, но на компьютере с 8 ЦП все будет в порядке.

Более глубокие показатели

Когда средняя нагрузка на Linux увеличивается, вы знаете, что у вас более высокий спрос на ресурсы (ЦП, диски и некоторые блокировки), но вы не знаете, какие именно. Вы можете использовать другие показатели для уточнения. Например, для процессоров:

  • загрузка ЦП: например, с помощью mpstat -P ALL 1
  • загрузка ЦП для каждого процесса: например, top, pidstat 1 и т. д.
  • задержка очереди выполнения (планировщика) для каждого потока: например, в /proc/PID/schedstats, delaystats, perf sched
  • Задержка очереди выполнения ЦП: например, в /proc/schedstat, perf sched, мой инструмент runqlatbcc.
  • Длина очереди запуска ЦП: например, с помощью vmstat 1 и столбца «r» или моего инструмента runqlen bcc.

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

Вы неверно измеряете загрузку процессора

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

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

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

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

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

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

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

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

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

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

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

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

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

Ключевая метрика здесь это «количество инструкций за такт» (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:

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

Процессор может выполнять свою работу медленнее не только из-за потерь времени на ожидание данных из ОЗУ. Другими факторами могут быть:

Что такое степень загрузки цп на компьютере

Подзаголовки:

— Что такое степень загрузки ЦП и почему она важна
— Как узнать степень загрузки ЦП через диспетчер задач
— Как узнать степень загрузки ЦП с помощью сторонних программ
— Какой показатель загрузки ЦП считается нормальным
— Советы по оптимизации работы ЦП

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

Как узнать степень загрузки ЦП через диспетчер задач:
1. Нажмите на клавиатуре кнопки Ctrl + Shift + Esc, чтобы открыть диспетчер задач.
2. Перейдите на вкладку «Производительность».
3. В разделе «ЦП» вы увидите график, который показывает степень загрузки процессора в реальном времени.

Как узнать степень загрузки ЦП с помощью сторонних программ:
В интернете можно найти множество программ, которые позволяют отслеживать степень загрузки ЦП. Некоторые из них бесплатны, например, CPU-Z или HWMonitor. Другие программы, такие как AIDA64, могут предоставить больше информации о компьютере, но за дополнительную плату.

Какой показатель загрузки ЦП считается нормальным:
Нормальный уровень загрузки процессора при обычном использовании компьютера – от 10% до 50%. Если загрузка ЦП увеличивается до 70% и выше, это может привести к замедлению работы компьютера.

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

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

Нормальные показатели загруженности процессора при различных условиях

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

Для примера рассмотрим «сферический в вакууме» компьютер, который использует 4-ядерный ЦП с частотой 3.0 ГГц, 8 Гб ОЗУ и дискретную видеокарту средней мощности. При отличии конфигурации, нормальная загруженность CPU может отличаться — как в меньшую, так и в большую сторону.

В режиме простоя

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

В офисных программах

При наборе текста в Word загруженность «гуляет» в пределах 5-10%, увеличиваясь во время открытия или сохранения документа. В Excel показатели примерно такие же, однако при просчете результатов по сложной формуле может скачкообразно взлететь на короткий промежуток до 20%.

Это же касается офисных программ от других разработчиков — например, Libre Office или Open Office. Аналогично расходуют системные ресурсы приложения, которые входят в базовый пакет Windows — Блокнот, Калькулятор, WordPad.

При серфинге интернета

Открытие чистой страницы нагружает ЦП не более чем на 10%. Однако такая ситуация встречается редко — даже если у вас установлен режущий рекламу AdBlock, на любом приличном сайте будут еще как минимум иллюстрации.

Без «баннерорезки» нагрузка на процессор возрастает в зависимости от того, сколько рекламы присутствует на сайте и какого она типа: статичные баннеры расходуют меньше ресурсов, динамичные и всплывающие немного больше — до 15%. Больше всего «отжирают» мощности всплывающие видео — до 25%.

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

При прослушивании музыки или воспроизведении видео с локального диска через установленный проигрыватель нагрузка на CPU достигает 20-30%.

При обработке фотографий и видео

При работе с изображениями нагрузка влияет от используемого софта: оборудованный всеми «свистелками» Фотошоп будет нагружать систему сильнее, а его бесплатный аналог Paint NET, в котором по умолчанию удалены все лишние функции — меньше. В среднем, независимо от операции, нагрузка на ЦП редко превышает 25%.

Обработка видео — более ресурсоемкий процесс. В пиковые моменты нагрузка может достигать 40-50%. Речь идет о монтаже и прокрутке нарезанных кусков. Во время рендеринга загруженность «камня» может превышать 75%.

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

В играх

Тут уже все зависит от самой игры и ее настроек. Наименее требовательны флэш-игры, запускаемые в браузере — нагрузка на CPU в таком режиме не превышает 25%. Браузерные онлайн-игры более требовательны — могут нагрузить «камень» до 40%.Наиболее прожорливы из всех приложений клиентские игры, особенно всякий «свежачок». Во время динамичных сражений с большим скоплением юнитов или техники, нагрузка на ЦП может достигать 90%. При спокойном «сне на ходу» или стоянии персонажа на месте нагрузка обычно 40-50%.

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

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

Также для вас будет полезной инструкция «Как посмотреть загруженность процессора». Буду признателен, если вы поделитесь этим постом в социальных сетях. До завтра!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *