Linux show load average

Understand Linux Load Averages and Monitor Performance of Linux

In this article, we will explain one of the critical Linux system administration tasks – performance monitoring in regards to system/CPU load and load averages.

Before we move any further, let’s understand these two important phrases in all Unix-like systems:

  • System load/CPU Load – is a measurement of CPU over or under-utilization in a Linux system; the number of processes which are being executed by the CPU or in waiting state.
  • Load average – is the average system load calculated over a given period of time of 1, 5 and 15 minutes.

In Linux, the load-average is technically believed to be a running average of processes in it’s (kernel) execution queue tagged as running or uninterruptible.

Note that:

  • All if not most systems powered by Linux or other Unix-like systems will possibly show the load average values somewhere for a user.
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • Nearly all Unix-like systems count only processes in the running or waiting states. But this is not the case with Linux, it includes processes in uninterruptible sleep states; those waiting for other system resources like disk I/O etc.

How to Monitor Linux System Load Average

There are numerous ways of monitoring system load average including uptime which shows how long the system has been running, number of users together with load averages:

The numbers are read from left to right, and the output above means that:

  • load average over the last 1 minute is 1.98
  • load average over the last 5 minutes is 2.15
  • load average over the last 15 minutes is 2.21

High load averages imply that a system is overloaded; many processes are waiting for CPU time.

We will uncover this in the next section in relation to number of CPU cores. Additionally, we can as well use other well known tools such as top and glances which display a real-time state of a running Linux system, plus many other tools:

Top Command

Glances Tool

The load averages shown by these tools is read /proc/loadavg file, which you can view using the cat command as below:

On desktop machines, there are graphical user interface tools that we can use to view system load averages.

Understanding System Average Load in Relation Number of CPUs

We can’t possibly explain system load or system performance without shedding light on the impact of the number of CPU cores on performance.

Multi-processor Vs Multi-core

  • Multi-processor – is where two or more physical CPU’s are integrated into a single computer system.
  • Multi-core processor – is a single physical CPU which has at least two or more separate cores (or what we can also refer to as processing units) that work in parallel. Meaning a dual-core has 2 two processing units, a quad-core has 4 processing units and so on.

Furthermore, there is also a processor technology which was first introduced by Intel to improve parallel computing, referred to as hyper threading.

Under hyper threading, a single physical CPU core appears as two logical CPUs core to an operating system (but in reality, there is one physical hardware component).

Note that a single CPU core can only carry out one task at a time, thus technologies such as multiple CPUs/processors, multi-core CPUs and hyper-threading were brought to life.

With more than one CPU, several programs can be executed simultaneously. Present-day Intel CPUs use a combination of both multiple cores and hyper-threading technology.

To find the number of processing units available on a system, we may use the nproc or lscpu commands as follows:

Another way to find the number of processing units using grep command as shown.

Now, to further understand system load, we will take a few assumptions. Let’s say we have load averages below:

On a single core system this would mean:
  • The CPU was fully (100%) utilized on average; 1 processes was running on the CPU (1.00) over the last 1 minute.
  • The CPU was idle by 60% on average; no processes were waiting for CPU time (0.40) over the last 5 minutes.
  • The CPU was overloaded by 235% on average; 2.35 processes were waiting for CPU time (3.35) over the last 15 minutes.
On a dual-core system this would mean:
  • The one CPU was 100% idle on average, one CPU was being used; no processes were waiting for CPU time(1.00) over the last 1 minute.
  • The CPUs were idle by 160% on average; no processes were waiting for CPU time. (0.40) over the last 5 minutes.
  • The CPUs were overloaded by 135% on average; 1.35 processes were waiting for CPU time. (3.35) over the last 15 minutes.
Читайте также:  При загрузке windows экран становится

You might also like:

In conclusion, if you are a system administrator then high load averages are real to worry about. When they are high, above the number of CPU cores, it signifies high demand for the CPUs, and low load averages below the number of CPU cores tells us that CPUs are underutilized.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

Источник

Load average

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

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

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

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

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

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

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

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

  • S — так называемое состояние сна;
  • R — состояние выполнения;
  • D — состояние ожидания.

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

Высоких uptime, низких load average, ну и конечно же удачи! 🙂

Источник

Understanding Load Average on Linux

Before we dive into Linux load averages, we must explore the different ways load is calculated and address the most common measurement of CPU load – a percentage.

Windows calculates load differently from Linux, and since Windows has been historically more popular on the desktop, the Windows definition of load is generally understood by most computer users. Most Windows users have seen the system load in the task manager displayed as a percentage ranging from 0% to 100%.

In Windows this is derived by examining how “busy” the System Idle Process is and using the inverse to represent the system load. For example, if the idle thread is executing 99% of the time, CPU load in Windows would be 1%. This value is easy to understand but provides less overall detail about the true status of the system.

In Linux, the load average is instead is represented by a decimal number starting at 0.00. The value can be roughly defined as the number of processes over the past minute that had to wait their turn for execution. Unlike Windows, Linux load average is not an instant measurement. Load is given in three values – the one minute average, the five minute average, and the fifteen minute average.

Understanding Load Average in Linux

At first, this extra layer of detail seems unnecessary if you simply want to know the current state of CPU load in your system. But since the averages of three time periods are given, rather than an instant measurement, you can get a more complete idea of the change of system load over time in a single glance of three numbers

Читайте также:  Получение админских прав windows 10 без пароля

Displaying the load average is simple. On the command line, you can use a variety of commands. I simply use the “w” command:

] # w
21 :08: 43 up 38 days, 4 : 34 , 4 users , load average: 3.11 , 2.75 , 2.70

The rest of the command will display who’s logged on and what they’re executing, but for our purposes this information is irrelevant so I’ve clipped it from the above display.

In an ideal system, no process should be held up by another process (or thread), but in a single processor system, this occurs when the load goes above 1.00.

The words “single processor system” are incredibly important here. Unless you’re running an ancient computer, your machine probably has multiple CPU cores. In the machine I’m on, I have 16 cores:

In this case, a load average of 3.11 is not alarming at all. It simply means that a bit more than three processes were ready to execute and CPU cores were present to handle their execution. On this particular system, the load would have to reach 16 to be considered at “100%”.

To translate this to a percent-based system load, you could use this simple, if not obtuse, command:

This command sequences isolates the 1-minute average via cut and echos it, divided by the number of CPU cores, through bc, a command-line calculator, to derive the percentage.

This value is by no means scientific but does provide a rough approximation of CPU load in percent.

A Minute to Learn, a Lifetime to Master

In the previous section I put the “100%” example of a load of 16.0 on a 16 CPU core system in quotes because the calculation of load in Linux is a bit more nebulous than Windows. The system administrator must keep in mind that:

  • Load is expressed in waiting processes and threads
  • It is not an instantaneous value, rather an average, and
  • It’s interpretation must include the number of CPU cores, and
  • May over-inflate I/O waits like disk reads

Because of this, getting a handle of CPU load on a Linux system is not entirely an empirical matter. Even if it were, CPU load alone is not an adequate measurement of overall system resource utilization. As such, an experienced Linux administrator will consider CPU load in concert with other values such as I/O wait and the percentage of kernel versus system time.

I/O Wait

I/O wait is most easily seen via the “top” command:

In the screenshot above I have highlighted the I/O wait value. This is a percentage of time that the CPU was waiting on input or output commands to complete. This is usually indicative of high disk activity. While a high wait percentage alone may not significantly degrade CPU-bound tasks, it will reduce I/O performance for other tasks and will make the system feel sluggish.

High I/O wait without any obvious cause might indicate a problem with a disk. Use the “dmesg” command to see if any errors have occurred.

Kernel vs. System Time

The above highlighted values represent the user and kernel (system) time. This is a breakdown of the overall consumption of CPU time by users (i.e. applications, etc.) and the kernel (i.e. interaction with system devices). Higher user time will indicate more CPU usage by programs where higher kernel time will indicate more system-level processing.

A Fairly Average Load

Learning the relationship of load average to actual system performance takes time, but before long you’ll see a distinct correlation. Armed with the intricacies of system performance metrics, you’ll be able to make better decisions about hardware upgrades and program resource utilization.

Источник

Linux: CPU Load — когда пора волноваться или что значит Load Average

Скорее всего — вы уже знакомы с понятием Load Average. LA представляет собой три числа, которые отображаются в утилитах uptime и top , и выглядят примерно так:

load average: 0.09, 0.05, 0.01

Большинство людей знают, что обозначают эти цифры: они отображают среднюю нагрузку за определённое время (1, 5 и 15 минут), и знают, что чем меньшее значение — тем лучше. Большие же значения означают какие-то проблемы с нагрузкой на процессор. Но — какой порог? как выглядит «хорошее» и «плохое» значение Load Average? Когда начинать беспокоиться — а когда пора уже паниковать и срочно фиксить проблему?

Для начала — давайте рассмотрим, что именно обозначает Load Average. Начнём с простого примера — машина с одноядерным процессором.

Пример с движением по дороге

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

И так, оператор — какую систему измерения вы выберете? Как на счёт такой:

  • 0.00 означает что движения по мосту нет вообще. В действительности — значения между 0.00 и 1.00 будет обозначать, что очереди нет и движение свободно;
  • 1.00 означает, что мост уже занят практически на полную пропускную способность. Всё ещё в порядке, но если движение ещё немного увеличится — то продвижение машин уже замедлится;
  • свыше 1.00 уже означает образование очереди. Насколько большая? Например, 2.00 будет обозначать, что заняты две полосы — одна уже на мосту, и одна — на подъездной дороге. 3.00 означает, что заняты уже три полосы — одна на самом мосту, и две — в очереди на дороге.
Читайте также:  Видеофоны для рабочего стола windows 10

= load of 0.50

= load of 1.00

= load of 1.70

Это пример того, чем является загрузка процессора. «Машины» тут — процессы, занимающие процессорное время («переезжают мост«), или стоящие в очереди на подъезде к нему. UNIX считает загрузку, как «длина в очереди на выполнение«: сумма процессов, которые в настоящие момент выполняются + количество процессов в очереди на обработку:

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

Так что — Load Average 1.00 является идеальным показателем?

Не совсем. Проблема нагрузки 1.00 в том, что у вас не остаётся «просвета» (запаса). На практике, многие системные администраторы придерживаются оптимального значения в 0.70:

  • «Пора обратить внимание«: полезное правило 0.70 — если Load Average постоянно выше 0.70 — время искать причину прежде, чем это станет настоящей проблемой;
  • «Пора исправлять это«: полезное правило 1.00 — если Load Average становится выше 1.00 — найдите причину и исправьте её уже сейчас. В противном случае — вы рискуете быть разбуженным среди ночи — и ничего прикольного в этом уже не будет;
  • «Чёрт, 3 часа ночи — WTF?«: полезное правило 5.00 — если Load Average становится выше 5.00 — у вас могут быть серьёзные проблемы, и ваша машина либо уже зависла, либо уже работает намного медленнее, и это случится (неожиданно!) в самое неподходящее время, например — среди ночи или во время конференции. Не позволяйте этому произойти.

А как на счёт многоядерных процессоров? У меня Load Average 3.00 — но всё работает отлично!

У вас четырёхъядерный процессор? Тогда — Load Average в 3.00 совершенно нормальное значение.

На многоядерных процессорах значение LA взаимосвязано с количеством процессоров. Использование на 100% отображается как 1.00 на одноядерной системе, 2.00 на двухъядерной, 4.00 на четырёх и так далее.

Если мы вернёмся к аналогии с мостом, то 1.00 значит, что одна полоса движения на мосту полностью занята. На мосту с одной полосой — это и будет 100% его «пропускной способности». На двухполосном мосту — это уже 50%, т.к. только одна полоса занята полностью — но есть ещё одна, полностью свободная.

То же самое и с процессором — нагрузка в 1.00 будет 100% на одноядерной системе, а на двухъядерной — значение 2.00 будет 100% нагрузки.

Многоядерность vs многопроцессорность

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

Это приводит нас к ещё двум правилам:

  • «Количество ядер = максимальной нагрузке«: на многоядерных системах, Load Average не должен превышать количество ядер;
  • «Ядра есть ядра«: не важно, как распределены ядра по процессорам. Два четырёхъядерных процессора == четырём двухъядерным == восьми одноядерным процессорам.

Подведём итог

Давайте посмотрим на Load Average в выводе утилиты uptime :

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

Далее, как на счёт остальных значений? 0.65 значит нагрузку за последнюю минуту, 0.42 — за последние 5 минут и 0.36 — за прошедшие 15 минут. Это приводит нас к вопросу:

За каким именно значением наблюдать? 1, 5 или 15 минут?

Помня правила, которые мы обсудили (1.00 == «Пора исправлять это«) — вам необходимо обращать внимание на значения 5 и 15 минут. Т.е., если на вашей машине бывают пики нагрузки за 1 минуту — это нормально. Если же значение 15-ти минут поднимается выше 1.00 и остаётся таким — пора заняться этим вопросом (конечно, учитывая момент, касающийся количества ядер в системе).

Значит, количество ядер в системе важный вопрос для выяснения реальной нагрузки. Как мне узнать — сколько ядер в моей системе?

так вы получите полную информацию о процессоре(ах).

А что бы получить просто число, без другой информации — выполните:

Оригинал статьи взят отсюда>>>. Замечания/предложения к переводу категорически приветствуются.

Источник

Оцените статью