Пользователь
0,0
рейтинг
30 сентября 2009 в 10:30

Администрирование → Load average

Наблюдая выводы таких команд, как top, htop, uptime, w и, возможно, других, пользователь наверняка обращал внимание на строку load average:

Linux program top

Расширяя обсуждение в «Общем обзоре стандартных средств наблюдений за системой», попробуем разобрать смысл этих чисел. Итак, проще говоря, числа отражают число блокирующих процессов в очереди на исполнение в определенный временной интервал, а именно 1 минута, 5 минут и 15 минут, соответственно. Понятие блокирующих процессов обычно хорошо освещают в последнее время, когда рассказывают о nginx. :) В данном случае, блокирующий процесс — это процесс, который ожидает ресурсов для продолжения работы. Как правило, происходит ожидание таких ресурсов, как центральный процессор, дисковая подсистема ввода/вывода или сетевая подсистема ввода/вывода.

Высокие значения показателей load average говорят о том, что система не справляется с нагрузкой. Если речь идет о целевом сервере, работающем под высокой нагрузкой, то обычно полезно провести тонкую настройку операционной системы (сетевая подсистема, ограничение на количество одновременно открытых файлов и тому подобное). Высокая загрузка также может быть вызвана аппаратными проблемами, например, выходом из строя накопителя.

Для диагностики обратимся к другим полезным данным, предоставляемым выводом top. Строка Cpu(s) содержит информацию о распределении процессорного времени. Первые два значения непосредственно отражают работу CPU по обработке процессов:

Linux program top

Затяжные высокие (99-100%) показатели указывают на ЦП как на узкое место.

Параметр wa говорит о простое, связанным с вводом/выводом:

Linux program top

Выше 80% считается не совсем нормальным и явно указывает нам на то, что процессор проводит очень много времени в ожидании ввода/вывода (обычно это означает, что выходит из строя HDD или NIC).

Если же оборудование в порядке и ЦП быстр, скорее всего, проблема в ПО. Проблемное приложение можно отловить с помощью ps axfu. Полученный вывод предоставит список процессов, а также нужную информацию: потребление процессора, памяти, состояние, ну и непосредственно информацию, идентифицирующую процесс (PID и команду). К слову о состояниях процессов. Типичными состояниями процессов являются следующие три (полный список доступен на странице руководства man psспасибо, onix74):
  • S — так называемое состояние сна;
  • R — состояние выполнения;
  • D — состояние ожидания.

Последнее как раз то, что мы ищем. Дальнейшую отладку можно производить вооружившись iostat, systat (FreeBSD), strace, iperf, но это уже тема другой статьи.

Высоких uptime, низких load average, ну и конечно же удачи! :)
Максим Филенко @Decoy
карма
123,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (57)

  • –3
    полезненько
  • +7
    Почерпнул кое-что новое. Не обращал раньше никогда внимание на значения в графе CPU(s).
  • +5
    man ps говорит, что Вы ошибаетесь в ограничении состояния процесса всего лишь тремя:

    PROCESS STATE CODES
    Here are the different values that the s, stat and state output specifiers (header «STAT» or «S») will display to describe the state of a process.
    D Uninterruptible sleep (usually IO)
    R Running or runnable (on run queue)
    S Interruptible sleep (waiting for an event to complete)
    T Stopped, either by a job control signal or because it is being traced.
    W paging (not valid since the 2.6.xx kernel)
    X dead (should never be seen)
    Z Defunct («zombie») process, terminated but not reaped by its parent.
    • +2
      Я как-то тоже читал этот мануал и строка «X dead (should never be seen)» меня изрядно повеселила.
    • +1
      Все верно, спасибо за дополнение. Изначально не хотел сильно отягощать статью, а просто рассказать, как трактовать load average новичку и дать начальные направления, куда двигаться для разрешения проблем. :)
      • +1
        Да вы её и не отягощили. Вполне можно было бы рассказать и о iostat, strace, iperf. :) А то, только увлекся чтением, как бац и конец.
  • 0
    А не было ли статей с описанием хороших средств наблюдения за СУБД (MySQL)?
    • 0
      Странно, но поиск по innotop не дал результатов на хабре :)
      Вобще вот тут много интересного по производительности mysql www.mysqlperformanceblog.com/
    • 0
      есть хорошая штука, называется mytop, а вот дока citkit.ru/articles/607/
    • 0
      консольная утилита по текущим запросам: mytop
      утилиты по оптимизации mysql (анализ конфигурации и рекомендации к модификациям):
      tuning-primer.sh
      mysqltuner.pl

      в конфиге mysql вывод медленных запросов:
      long_query_time = 1 #время в секундах, когда запрос считается медленным
  • 0
    %wa во FreeBSD как называется в top?
  • +1
    Большое спасибо за «ps axfu»! С нетерпенем жду продолжение про iostat и sar
  • +9
    Ещё одна мало известная фишка в выводе top — это параметр %st, также известный как «steal time», который можно перевести как «процент уворованного времени».

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

    Увеличение %st более чем на 5-10% говорит о том, что пора переходить более мощный VPS план или мигрировать на физический сервер.
    • +1
      у меня VDS, параметра %st невижу, linux debian

      • +1
        ой, это не все было:

        top — 16:09:49 up 8 days, 15:26, 1 user, load average: 0.04, 0.05, 0.01
        Tasks: 18 total, 2 running, 16 sleeping, 0 stopped, 0 zombie
        Cpu(s): 1.7% us, 0.0% sy, 0.0% ni, 98.3% id, 0.0% wa, 0.0% hi, 0.0% si
        Mem: 98304k total, 98304k used, 0k free, 0k buffers
        Swap: 0k total, 0k used, 0k free, 0k cached

        что я делаю не так?
  • +3
    htop гораздо лучше и приятнее глазу показывает нагрузку ЦПУ (по ядрам и процессорам), используемую, свободную и закешированную память + сортировка по дереву процессов и используемым ресурсам (в top все это есть, но не так наглядно)
    • +1
      А он умеет как atop показывать нагрузку на сеть и диск по каждому процессу?
      • 0
        нет :)
        это разные вещи :)
        htop больше подойдет для поиска загрузки определенного процесса, а atop — для всей системы в целом
        • 0
          Тогда не интересно :)
          atop еще умеет суммировать загрузку по программе (например взять все apache вместе)
          • 0
            ну я использую htop, когда надо пробежаться по процессам или посмотреть через strace чем же он занимаеться :)
  • +4
    Итак, проще говоря, числа отражают число блокирующих процессов в очереди на исполнение в определенный временной интервал, а именно 1 минута, 5 минут и 15 минут, соответственно.


    Очень неточное предложение. Запутывает.

    На самом деле «блокирующих» тут абсолютно лишнее слово. Лучше просто сказать «стоящих в очереди на исполнение».

    И не «в определенный временной интервал», а «среднее значение за определенный интервал». То что вы сказали, это соовсем другая цифра.
  • +12
    Если у вас Linux, то можно попробовать понажимать в top на разные кнопочки:

    z, x — сделают топ цветным;

    c — заставит отображать полное имя процессов;

    1 — покажет все процессоры с загрузкой по каждому;

    Shift+G и, затем 1-4 позволят переключить на другой экран top'a, где можно подробнее рассмотреть использование памяти/посмотреть кто ушел в своп;

    Shift <, Shift > изменить колонку сортировки (удобнее смотреть на цветном top'e)

    • 0
      а во фрях чтобы увидеть нагрузку процессоров надо заюзать top -P, для полного имени top -a, а цветного топа не видать:)
    • 0
      Вот за это — отдельное спасибо! Знал только про > и <.
      • 0
        ну вообще если нажать h то можно увидеть хелп)
  • 0
    спасибо, не знал некоторых вещей.
  • +8
    Определение «отражают число блокирующих процессов в очереди» не совсем корректное, т.к. процессы все же не блокируют что-то, а ожидают своей очереди на выполенение.

    Так же, определение «Высокие значения показателей load average» абсолютно не раскрыто. Сколько в числах? 1? 2? Может 3?

    Общепринятое мнение, что значения в la не должны быть больше единицы. Однако, стоит учитывать особенности аппаратной части системы, а именно колличество процессоров. Например, в случае, если система располагает ресурсами 4-х процессоров(ядер), то значения la <= 4 считаются нормальными.

    Вот ссылочка, на вполне вменяемое определение la:
    http://www.teamquest.com/resources/gunther/display/5/index.htm
    • 0
      Расширяя обсуждение в «Общем обзоре стандартных средств наблюдений за системой»...

      В комментарии, сподвигшем меня на написания данной заметки, как раз было сказано, что параметр load average в общем случае не должен превышать число ядер процессора; я лишь постарался несколько развить мысль. ;)

      Спасибо за ссылку!
      • 0
        Не за что. :)

        Только вот не "… превышать число ядер процессора...", а «не превышать общее количество процессоров(ядер)».

        Удачи!
    • –1
      Двух, вроде бы. В высоконагруженных системах конкурентность процессов — максимум два виртуальных CPU, nо есть, скажем на однопроцессорной системе с hyper-threading виртуально 2 CPU, т.е. с LoadAverage 4 такой комп уже начинает виснуть.
  • +1
    Рекомендую ещё утиль iotop — то же что и обычный top по CPU, но только по диску. Доступно на относительно свежих ядрах. Есть в ребозиториях debian/ubuntu.
    На FreeBSD аналогичное делается top -m io
    • 0
      еще во фрях можно обратить внимание на gstat
  • 0
    Когда задался вопросом — что же такое load average -первое, что я сделал — man top :) Там не плохо описанно ;)
  • 0
    Немного по терминологии. Мне не понятно почему процесс блокирующий. Он что-то блокирует, или его ЗАблокировали, недодав ресурсов?
    • 0
      Собственно в данном случае — он просто ждет процессорного времени.
    • 0
      Да, мне тоже кажется что он не блокирующий, а заблокированный.
      Статья полезная, вместе с коментами неплохая подборка получилась
      • 0
        Спасибо.
        Действительно, вся ценность именно в комментариях! Размещая заметку, сообщество профессионалов дополняет ее, правит, делится опытом, и в итоге получается отличный качественный материал по теме.
  • 0
    Кстати, поясните кто-нибудь, за что отвечает параметр Nice?
    • 0
      Приоритет процесса.
      • 0
        Хм… а чем отличается от колонки PR слева от NI?
        • +2
          Например, программа может быть запущенна с повышенным приоритетом ( nice -5 ). Глобально в системе приоритет программы будет выставлен как минимальный (20) + «маржа» nice. Системная программа ktheadd запущенна с дефолтным приоритетом 20 + nice(-5), в результате приоритет 15.
  • +1
    Есть еще очень неплохая утилита atop — складывает статитсику за прошлые 30 дней и можно посмотреть детали за вчера к примеру в тот период времени, когда сервер бутнулся или упал. Очень помогает для разруливания екстраординарных случаев на сервере. Также еще и загрузку винта по процессам показывает.
    • 0
      Прелесть в atop — то что она показывает, disk load + загрузку интерфейсов.
  • 0
    Хотелось бы еще узнать что это за звери 0.0% ni, 98.3% id, 0.0% hi, 0.0% si чиста из детского любопытства.
    Спасибо за топик! Так доходчиво наконец то понял, что это за Load average :)
    P.S. я не ITишник :)
    • 0
      %ni — процент использования процессорного времени процессами с измененным приоритетом nice (я выше спрашивал зачем он)
      %id — простой процессора (ну тут все ясно)
      %hi — процент времени, которое процессор тратит на обработку прерываний на уровне железа (IRQ)
      %si — то же, что и %hi, только для софт-прерываний
      • 0
        спасибо
  • 0
    vmstat 1 1000
    1 — каждую сек, 1000 — показать 1000 раз

    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
    r b swpd free buff cache si so bi bo in cs us sy id wa
    1 0 0 875344 540236 358920 0 0 71 29 586 876 12 16 71 2
    1 0 0 875352 540236 358920 0 0 0 0 1505 2045 10 14 76 0
    1 0 0 875352 540244 358912 0 0 0 24 1670 2458 13 15 72 0
    0 0 0 875352 540244 358920 0 0 0 0 1532 1957 11 15 75 0
  • +1
    Боже мой, Хабр снова тот!

    Спасибо, пожалуйста, продолжайте такие практические статьи. Хоть из озвученного было все известно, у меня чувство, что дальше можно узнать много нового.
  • 0
    Блин, давно искал статью где понятно описываются эти числа.
    Продолжение будет?
    • 0
      Что бы Вы хотели в продолжении? :)
      • 0
        >Дальнейшую отладку можно производить вооружившись iostat, systat (FreeBSD), strace, iperf, но это уже тема другой статьи.

        Ну вот как раз по ним и пойти (;
  • 0
    процесор свободный, а load average — 55( практически не работает в общем)
    что делать?
    • 0
      Обратиться к системному администратору.
    • 0
      какой аптайм просто ребут мягкий пробовали? как быстро возвращается к такому состоянию?
      • 0
        И вам привет, все секреты в блокировках сидели.
        Раз la — количество команд чего-то ожидающих — туда и надо было копать.
  • 0
    Есть шанс что вернуться картинки? Очень хочется иногда на такую статью дать ссылку.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.