Как найти максимальный процент загрузки процессора

Обновлено: 05.07.2024

В этой статье описана процедура диагностики и устранения проблем, вызванных высокой загрузкой ЦП на компьютере с Microsoft SQL Server. Хотя существует множество возможных причин высокой загрузки ЦП в SQL Server, наиболее распространенными являются следующие:

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

    Вы можете использовать следующие шаги для устранения проблем с высокой загрузкой ЦП в SQL Server.

    Шаг 1. Убедитесь, что SQL Server вызывает высокую загрузку ЦП

    Используйте один из следующих инструментов, чтобы проверить, действительно ли процесс SQL Server способствует высокой загрузке ЦП:

    Диспетчер задач: на вкладке "Процесс" проверьте, близко ли значение столбца ЦП для SQL Server Windows NT-64 Bit к 100 процентам.

    Монитор производительности и ресурсов (perfmon)

    • Счетчик: процесс/% пользовательского времени, % привилегированного времени
    • Экземпляр: sqlservr

    Вы можете использовать следующий скрипт PowerShell для сбора данных счетчика за 60 секунд:

    Если % пользовательского времени постоянно превышает 90 процентов, это означает, что процесс SQL Server вызывает высокую загрузку ЦП. Однако если вы заметите, что % привилегированного времени постоянно превышает 90 процентов, это указывает на то, что антивирусное программное обеспечение, другие драйверы или другой компонент ОС на компьютере способствуют высокой загрузке ЦП. Вам следует обратиться к системному администратору, чтобы проанализировать первопричину такого поведения.

    Шаг 2. Определите запросы, влияющие на загрузку ЦП

    Если процесс Sqlservr.exe вызывает высокую загрузку ЦП, определите запросы, ответственные за эту активность, выполнив следующий запрос:

    Шаг 3. Обновите статистику

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

    Системная хранимая процедура sp_updatestats запускает UPDATE STATISTICS для всех пользовательских и внутренних таблиц в текущей базе данных. Для регулярного обслуживания убедитесь, что регулярное плановое обслуживание поддерживает статистику в актуальном состоянии. Используйте такие решения, как адаптивная дефрагментация индекса, для автоматического управления дефрагментацией индекса и обновлением статистики для одной или нескольких баз данных. Эта процедура автоматически выбирает, следует ли перестраивать или реорганизовывать индекс в соответствии с его уровнем фрагментации, среди прочих параметров, и обновляет статистику с линейным порогом.

    Дополнительную информацию о процедуре sp_updatestats см. в разделе sp_updatestats.

    Если SQL Server по-прежнему использует избыточную мощность ЦП, перейдите к следующему шагу.

    Шаг 4. Добавьте, возможно, отсутствующие индексы

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

    Просмотрите планы выполнения для выявленных запросов и настройте запрос, внеся необходимые изменения. На следующем снимке экрана показан пример, в котором SQL Server укажет на отсутствующий индекс для вашего запроса. Щелкните правой кнопкой мыши часть плана запроса «Отсутствующий индекс» и выберите «Сведения об отсутствующем индексе», чтобы создать индекс в другом окне в SQL Server Management Studio.

    Скриншот плана выполнения с отсутствующим индексом.

    Используйте следующий запрос, чтобы проверить наличие отсутствующих индексов и применить любые рекомендуемые индексы с высокими значениями показателя улучшения. Начните с 5 или 10 лучших рекомендаций из выходных данных, которые имеют наивысшее значение Improve_measure. Эти показатели оказывают наиболее значительное положительное влияние на производительность. Решите, хотите ли вы применять эти индексы, и убедитесь, что для приложения проведено тестирование производительности. Затем продолжайте применять рекомендации по отсутствующему индексу, пока не достигнете желаемых результатов производительности приложения.

    Шаг 5. Изучите проблемы, связанные с параметрами

    Используйте команду DBCC FREEPROCCACHE, чтобы проверить, устранена ли проблема высокой загрузки ЦП.

    Если проблема все еще существует, вы можете добавить подсказку запроса RECOMPILE к каждому из запросов с высокой загрузкой ЦП, определенных на шаге 2.

    Если проблема устранена, это указывает на проблему, связанную с параметрами (PSP, также известную как "проблема прослушивания параметров"). Чтобы устранить проблемы, связанные с параметрами, используйте следующие методы. У каждого метода есть свои недостатки и компромиссы.

    • Используйте подсказку запроса RECOMPILE для каждого выполнения запроса.Этот совет помогает сбалансировать небольшое увеличение использования ЦП при компиляции с более оптимальной производительностью для каждого выполнения запроса. Дополнительные сведения см. в разделах Повторное использование параметров и плана выполнения, Конфиденциальность параметров и Подсказка запроса RECOMPILE.

    Вот пример того, как вы можете применить это к своему запросу.

    Используйте подсказку запроса OPTIMIZE FOR, чтобы переопределить фактическое значение параметра, используя типичное значение параметра, достаточно подходящее для большинства возможных значений параметра. Этот вариант требует полного понимания оптимальных значений параметров и связанных с ними характеристик плана. Вот пример использования этой подсказки в запросе.

    Используйте подсказку запроса OPTIMIZE FOR UNKNOWN, чтобы заменить фактическое значение параметра средним значением вектора плотности. Вы также можете сделать это, захватив входящие значения параметров в локальные переменные, а затем используя локальные переменные в предикатах вместо использования самих параметров. Для этого исправления средняя плотность должна быть достаточно хорошей.

    Используйте подсказку запроса DISABLE_PARAMETER_SNIFFING, чтобы полностью отключить прослушивание параметров. Вот пример того, как использовать его в запросе:

    Используйте подсказку запроса KEEPFIXED PLAN, чтобы предотвратить повторную компиляцию в кэше. Этот обходной путь предполагает, что «достаточно хороший» общий план — это тот, который уже находится в кеше. Вы также можете отключить автоматическое обновление статистики, чтобы уменьшить вероятность того, что хороший план будет вытеснен и будет скомпилирован новый плохой план.

    Используйте команду DBCC FREEPROCCACHE в качестве временного решения, пока код приложения не будет исправлен. Вы можете использовать команду DBCC FREEPROCCACHE (plan_handle), чтобы удалить только тот план, который вызывает проблему. Например, чтобы найти планы запросов, которые ссылаются на таблицу Person.Person в AdventureWorks, вы можете использовать этот запрос для поиска дескриптора запроса. Затем вы можете освободить конкретный план запроса из кэша, используя DBCC FREEPROCCACHE (plan_handle), который создается во втором столбце результатов запроса.

    Шаг 6. Отключите интенсивную трассировку

    Проверьте наличие трассировки SQL или XEvent, которая влияет на производительность SQL Server и вызывает высокую загрузку ЦП. Например, вы обнаружите, что события аудита SQL вызывают высокие планы XML, события уровня событий инструкций, операции входа и выхода, блокировки и ожидания.

    Выполните следующие запросы, чтобы определить активные трассировки XEvent или сервера:

    Шаг 7. Устраните конфликт спин-блокировок SOS_CACHESTORE

    Если в вашем экземпляре SQL Server возникает серьезная конкуренция за спин-блокировку SOS_CACHESTORE или вы заметили, что ваши планы запросов часто удаляются при незапланированных рабочих нагрузках, прочтите следующую статью и включите флаг трассировки T174 с помощью команды DBCC TRACEON (174, -1):

    Если проблема высокой загрузки ЦП устраняется с помощью T174 , включите ее в качестве параметра запуска с помощью диспетчера конфигурации SQL Server.

    Шаг 8. Настройте виртуальную машину

    Если вы используете виртуальную машину, убедитесь, что вы не выделяете слишком много ЦП и что они правильно настроены. Дополнительные сведения см. в разделе Устранение неполадок с производительностью виртуальных машин ESX/ESXi (2001003).

    Шаг 9. Увеличение масштаба SQL Server

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

    Закрыто. Этот вопрос не соответствует правилам переполнения стека. В настоящее время ответы не принимаются.

    Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow.

    Закрыт в прошлом месяце.

    Мне интересно, как вы можете получить загрузку ЦП системы и представить ее в процентах, используя, например, bash.

    Если имеется более одного ядра, было бы неплохо, если бы можно было рассчитать средний процент.


    Повторное открытие Я не понимаю, почему это было признано не относящимся к теме, не могли бы те, кто закрыл это, уточнить?

    Мое понимание /proc/stat очень ограничено, но этот однострочный код мне подходит: cat . С помощью %.2f вы можете контролировать количество десятичных знаков, которые вы хотите вывести, а с помощью sleep 1 вы можете установить время, которое вы хотите усреднить, то есть, если он делает то, что я думаю, он делает. Вы можете поместить его в цикл while bash, чтобы протестировать его в реальном времени.

    6 ответов 6

    Посмотрите на кат /proc/stat

    EDIT, пожалуйста, прочитайте комментарии, прежде чем копировать и вставлять это или использовать это для какой-либо серьезной работы. Это не тестировалось и не использовалось, это идея для людей, которые не хотят устанавливать утилиту или что-то, что работает в любом дистрибутиве. Некоторые люди думают, что с помощью команды "apt-get install" можно установить что угодно.

    ПРИМЕЧАНИЕ: это не текущая загрузка ЦП, а общая загрузка ЦП по всем ядрам с момента загрузки системы. Это может сильно отличаться от текущего использования ЦП. Чтобы получить текущее значение, необходимо использовать top (или аналогичный инструмент).

    Текущую загрузку ЦП можно рассчитать с помощью:



    Но вы должны установить mpstat, как вы рекомендовали выше. У многих людей нет такой гибкости. cat /proc/stat тогда pipe намного проще, чем mpstat, который вы рекомендуете.

    Я думаю, что это решение показывает не текущую загрузку ЦП, а среднюю загрузку ЦП с момента запуска ЦП.

    @jlliagre, да, верно. Чтобы рассчитать ТЕКУЩЕЕ использование процессора, а не среднее, вам нужно будет взять значение в 1 доллар, затем отложить, затем взять значение в 1 доллар и увидеть разницу. Это текущее использование процессора.


    Более точный результат получается, когда я использую top -bn2 , но это занимает много времени. Судя по тому, что я читал, это единственный способ получить точный результат.

    Похоже, что команда в этом ответе написана для систем, в которых top -v возвращает procps-ng (например, Fedora). Также есть procps , найденные, например, в Ubuntu и CentOS, где команда не работает (всегда указывает 100%, потому что синтаксический анализ не выполняется из-за того, что строка с цифрами ЦП форматируется по-другому). Вот версия, которая работает с обеими реализациями: top -b -n2 -p 1 | fgrep "ЦП" | хвост -1 | awk -F'id,' -v prefix="$prefix" '< split($1, vs, ","); v=против[длина(против)]; под("%", "", v); printf "%s%.1f%%\n", префикс, 100 - v >'

    Примечание: в OSX используйте следующее: top -l 2 -n 0 -F | egrep -o '\d*\.\d+% простоя' | хвост -1 | awk -F% -v prefix="$prefix" '< printf "%s%.1f%%\n", префикс, 100 - $1 >' .

    Попробуйте mpstat из пакета sysstat

    Затем выполните команду cut или grep для анализа необходимой информации:

    Я бы изменил часть awk на: awk -F " " '' , что дает вывод в том формате, который он хотел, но в остальном это выглядит хорошо для меня.

    @jordanm Все истины; Я больше голосовал за это, потому что это работает. Лично я бы сделал так: mpstat | awk '$12 ~ /[0-9.]+/ < print 100 - $12 >'

    С тем же успехом можно написать реальный ответ с моим решением, вдохновленным решением Питера Лильенберга:

    Это будет использовать awk для вывода 100 минус 12-е поле (бездействующее) со знаком процента после него. awk сделает это только для строки, где 12-е поле содержит только числа и точки ( $12 ~ /7+/ ).

    Вы также можете усреднить пять выборок с интервалом в одну секунду:

    Протестируйте это следующим образом:


    Лучше запустить "mpstat 2 1 |. ", чтобы отображалась статистика за последнюю 1 секунду. В противном случае по умолчанию mpstat показывает статистику с самого начала, и она не сильно меняется с течением времени

    @Sarang Большое спасибо!! Наконец, я могу получить результаты, которые также отображает conky. К сожалению, эта строка ОЧЕНЬ медленная, ее выполнение занимает почти целую секунду.

    @syntaxerror Это занимает ровно 2 секунды, потому что, если вы посмотрите на справку по команде, вы увидите, что первый аргумент — это интервал, но он выполняется только один раз из-за второго аргумента, поэтому он ждет 2 полных секунды, пока не вернет результат. .

    Вопрос закрыт, поэтому добавил свой (похожий) ответ к вашему :-) Надеюсь, вы не возражаете. Как и вас, меня вдохновил ответ Питера Лильенберга.

    ОТРЕДАКТИРОВАНО: я заметил, что в ответе другого пользователя %idle было полем 12 вместо поля 11. awk был обновлен для учета того, что поле %idle является переменным.

    Это должно дать вам желаемый результат:

    Если вам нужно простое целочисленное округление, вы можете использовать printf:

    mpstat 1 1 | awk '$3 ~ /CPU/ < for(i=1;у меня отлично работает, спасибо. обратите внимание на mpstat 1 1, чтобы убедиться, что загрузка процессора измеряется в течение секунды

    Сделайте это, чтобы увидеть общую загрузку ЦП. Это вызывает python3 и использует кросс-платформенный модуль psutil.

    Часть interval=2 говорит об измерении общей загрузки ЦП за период блокировки в 2 секунды.

    Программа Python, которую он содержит, такова:

    Размещение времени перед призывом доказывает, что в этом случае требуется указанный интервал времени около 2 секунд. Вот вызов и вывод:

    Чтобы просмотреть выходные данные для отдельных ядер, воспользуемся приведенной ниже программой Python. Сначала я получаю список Python (массив) информации «на ЦП», затем я усредняю ​​все в этом списке, чтобы получить значение типа «общий% ЦП». Затем я печатаю общий и отдельные основные проценты.

    При желании это можно превратить в невероятно уродливый однострочный bash-скрипт.Я должен был использовать только одинарные кавычки ( '' ), а НЕ двойные кавычки ( "" ) в программе Python, чтобы сделать эту оболочку в bash однострочной работой:

    Пример вывода: обратите внимание, что у меня 8 ядер, поэтому после «Отдельные процессоры» стоит 8 цифр:


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

    К счастью, на самом деле довольно просто заглянуть под капот настольного компьютера или ноутбука с Windows и понять, можно ли починить рабочую станцию ​​или пришло время заменить ЦП.

    Что означает процессорное время?


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

    Высокое использование физической памяти часто является следствием использования слишком большого количества ресурсоемких приложений, но также может быть результатом ошибки в процессе, который обычно требует гораздо меньше ресурсов. Медленная обработка может быть вызвана множеством разных причин, некоторые из которых исправить сложнее, чем другие. Но в подавляющем большинстве случаев, если вам интересно, как снизить нагрузку на ЦП, этот процесс на самом деле так же прост, как нажатие клавиш Control + Shift + ESC.

    Как проверить загрузку ЦП в Windows?

    Чтобы узнать, какой процент загрузки процессора используется компьютером, просто откройте диспетчер задач Windows (Control + Shift + ESC) и перейдите на вкладку «Производительность». Вкладка «Процессы» предлагает более подробный обзор того, что может способствовать возникновению проблемы, и дает краткое изложение того, какие процессы потребляют больше всего энергии и оперативной памяти, что является ключом к выяснению того, как снизить загрузку ЦП. Оттуда вы можете либо остановить процессы, которые потребляют непропорционально большие ресурсы, либо, если рассматриваемый процесс обычно не требует такой нагрузки на ЦП и память, работать над устранением основных проблем.

    Как исправить высокую загрузку ЦП?


    < /p>

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

    1. Процесс узла поставщика WMI
      Процесс узла поставщика WMI, который обычно отображается как узел службы: инструментарий управления Windows на вкладке «Процессы», является важной частью Windows, которая часто работает в фоновом режиме. Этот процесс используется для мониторинга большого количества систем в данной сети, и если его загрузка ЦП превышает несколько процентных пунктов, это может быть признаком того, что ваша система борется с опасной ошибкой. Самое быстрое решение этой проблемы. является старейшим в книге по устранению неполадок ИТ: выключите процесс, а затем снова включите его. Используйте поиск Windows, чтобы найти Services.msc, найдите инструментарий управления Windows в появившемся окне, щелкните его правой кнопкой мыши и выберите «Перезагрузить». Это должно перезапустить службу, но если вы предпочитаете, вы также можете просто перезагрузить компьютер. Если это не сработает, хост поставщика WMI может просто иметь дело с другим процессом, который является реальным источником проблемы. Откройте средство просмотра событий Windows и выберите «Журналы приложений и служб», затем Microsoft, затем Windows, WMI-Activity и Operational. Найдите последние записи об ошибках и запишите ClientProcessID для каждой ошибки, которая, как вы подозреваете, способствует возникновению проблемы. Вернитесь в диспетчер задач, перейдите на вкладку «Службы» и отсортируйте список по порядку идентификатора процесса. Вы можете сверить свой список подозрительных процессов с этим списком, чтобы определить источник неисправности.
    2. Слишком много фоновых процессов
      На любом компьютере обязательно есть фоновые процессы, которые запускаются без открытия пользователем окна и занимают определенный процент ресурсов ЦП.Но с течением времени и загрузкой большего количества приложений эти фоновые процессы могут накапливаться и начинать занимать нетривиальное количество ресурсов. Эти процессы можно остановить, сняв их флажки на вкладке "Автозагрузка", а затем перезагрузив компьютер, что предотвратит их повторный автоматический запуск при включении устройства.
    3. Вирус или антивирус
      Причин высокой загрузки ЦП много, а в некоторых случаях они неожиданны. Низкая скорость обработки может быть вызвана либо антивирусной программой, которую вы используете, либо вирусом, для остановки которого эта программа была разработана. повторное использование более старого устройства или ОС. Если устройство начинает зависать в случайное время, это может быть результатом антивируса, который загружает ваш процессор. Чтобы остановить его, используйте функцию планирования вашего антивируса, чтобы убедиться, что он сканирует ваше устройство только в то время, когда вы вряд ли будете его использовать. В качестве альтернативы на вашем компьютере может быть запущено вредоносное ПО, которое поглощает всю вычислительную мощность. от вашего процессора, будь то запуск нескольких фоновых процессов или попытка распространения через вашу электронную почту и социальные сети. Выявить вирус на вашем компьютере непросто — даже сканирование вашего устройства с помощью антивируса может не сработать, так как многие виды вредоносных программ используют так называемую «антикриминалистическую проверку», которая предотвращает их запуск, если они обнаруживают программное обеспечение безопасности, установленное на вашем устройстве. Попробуйте выполнить сканирование с помощью нескольких антивирусных инструментов или выполнить удаление вирусов вручную.

    Удивительно сложный вопрос

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

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

    Ознакомьтесь с другими распространенными вопросами и проблемами, связанными с устранением неполадок, в нашем блоге:

    Возможно, вы уже знакомы со средней нагрузкой Linux. Средние значения нагрузки – это три числа, показанные вместе с командами uptime и top. Они выглядят следующим образом:

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

    Во-первых, немного информации о том, что означают средние значения нагрузки. Начнем с простейшего случая: машина с одним одноядерным процессором.

    Аналогия с трафиком

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

    Итак, оператор моста, какую систему нумерации вы собираетесь использовать? Как насчет:

    • 0,00 означает, что на мосту вообще нет движения. На самом деле, между 0,00 и 1,00 означает, что резервной копии нет, и прибывающая машина просто поедет дальше.
    • 1,00 означает, что мост точно загружен. Все по-прежнему хорошо, но если трафик немного увеличится, все замедлится.
    • больше 1,00 означает, что есть резервная копия. Сколько? Ну, 2,00 означает, что всего машин две полосы - одна полоса стоит на мосту, и одна полоса стоит ожидания. 3.00 означает, что всего есть три полосы движения: одна полоса стоит на мосту, а две полосы стоят в ожидании. и т. д.

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

    Подобно оператору моста, вы хотите, чтобы ваши автомобили/процессы никогда не ждали. Таким образом, загрузка вашего ЦП в идеале должна оставаться ниже 1,00.Кроме того, как и оператор моста, вы все еще в порядке, если вы получаете временные всплески выше 1,00. но когда вы постоянно выше 1,00, вам нужно беспокоиться.

    Так вы говорите, что идеальная загрузка – 1,00?

    Ну, не совсем так. Проблема с нагрузкой 1,00 заключается в том, что у вас нет запаса. На практике многие системные администраторы нарисуют линию на 0,70:

    Практическое правило «Необходимо разобраться»: 0,70 Если средняя нагрузка остается выше > 0,70, пора провести расследование, прежде чем ситуация ухудшится.

    Практическое правило "Исправить это сейчас": 1.00. Если ваша средняя нагрузка остается выше 1,00, найдите проблему и устраните ее сейчас. В противном случае вас разбудят посреди ночи, и вам будет не до веселья.

    Эта фраза "Ааа, уже 3 часа ночи, что за хрень?" Эмпирическое правило: 5.0. Если ваша средняя загрузка выше 5,00, у вас могут быть серьезные проблемы, ваша коробка либо зависает, либо замедляется, и это (по необъяснимым причинам) произойдет в самое неподходящее время, например, посреди ночи или во время презентации. на конференции. Не позволяйте ему попасть туда.

    А как насчет мультипроцессоров? Моя загрузка показывает 3,00, но все работает нормально!

    У вас четырехпроцессорная система? Он по-прежнему работает при нагрузке 3,00.

    В многопроцессорной системе нагрузка зависит от количества доступных процессорных ядер. Отметка «100% использование» составляет 1,00 для одноядерной системы, 2,00 для двухъядерной, 4,00 для четырехъядерной и т. д.

    Если мы вернемся к аналогии с мостом, то "1,00" на самом деле означает "проезд на одну полосу движения". На однополосном мосту это означает, что он заполнен. На двухполосном мосту нагрузка, равная 1,00, означает, что он загружен на 50 % — заполнена только одна полоса, поэтому можно заполнить еще одну полосу.

    То же самое и с ЦП: нагрузка 1,00 соответствует 100% загрузке ЦП на одноядерном компьютере. На двухъядерном компьютере нагрузка 2,00 соответствует 100% загрузке ЦП.

    Многоядерные и многопроцессорные

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

    Что приводит нас к двум новым практическим правилам:

    Количество ядер = максимальная нагрузка Полезное правило: в многоядерной системе нагрузка не должна превышать количество доступных ядер.

    Полезное правило "ядра есть ядра". То, как ядра распределены по процессорам, не имеет значения. Два четырехъядерных == четыре двухъядерных == восемь одноядерных. Для этих целей подходят все восемь ядер.

    Возвращение домой

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

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

    А как насчет этих трех чисел? 0,65 — среднее значение за последнюю минуту, 0,42 — среднее значение за последние пять минут и 0,36 — среднее значение за последние 15 минут. Что подводит нас к вопросу:

    Какое среднее значение следует учитывать? Одна, пять или 15 минут?

    Что касается чисел, о которых мы говорили (1,00 = исправить это сейчас и т. д.), вам следует обратить внимание на средние значения за пять или 15 минут. Откровенно говоря, если ваш ящик поднимается выше 1,0 в среднем за одну минуту, вы все еще в порядке. Это когда 15-минутное среднее идет севернее 1,0 и остается там, и вам нужно привязаться к нему. (очевидно, как мы уже выяснили, эти цифры следует скорректировать в соответствии с количеством ядер процессора в вашей системе).

    cat /proc/cpuinfo для получения информации о каждом процессоре в вашей системе. Примечание: недоступно в OSX, Google для альтернатив. Чтобы получить только подсчет, запустите его через grep и подсчет слов: grep 'имя модели' /proc/cpuinfo | туалет -l

    Больше серверов? Или более быстрый код?

    Добавление серверов может помочь при медленном коде. Scout APM поможет вам найти и исправить неэффективный и дорогостоящий код. Мы автоматически выявляем вызовы N+1 SQL, нехватку памяти и другие проблемы, связанные с кодом, поэтому вы можете тратить меньше времени на отладку и больше времени на программирование.

    Читайте также: