Wednesday, October 6, 2021

CPU Load

 Есть команда vmstat, у неё есть столбец r (runqueue), который можно считать мерой загрузки сервера (load). Ещё есть команда uptime, она выводит на экран среднюю загрузку за 1 минуту (Load-1), за 5 минут (Load-5) и за 15 минут (Load-15).
Для любителей шарад - снимок с реальной системы Linux@x64.

Сравниите значения vmstat-r и load-1.
Какой вывод напрашивается ?




Часто считается, что Load в Линуксе, это синоним vmstat-r.
Т.е. если запустить vmstat 60, то столбец r  - это то же самое, что и load-1 в uptime (одноминутное среднее).
Оказалось - нет.

Посмотрим ещё раз:


 Среднее арифметическое по столбцу vmstat-r - это 1.8, а load average = 13,6.
Load Average - ближе к значению столбца vmstat-b.

Т.е. при расчёте load average, Линукс складывает процессы, которые на ЦПУ и процессы которые ждут окончания В/В (столбец b).

 А потом значение Load мы видим в AWR:


 

Теперь понятно, что показывает sar -q , когда он показывает разные runq-sz и ldavg-1:

 

Такой подход (складывать ЦПУ + В/В) - это специфика Линукса.
В больших Юниксах - Solaris, AIX, HPUX - ЦПУ считается отдельно, а В/В-отдельно.

Хотя тут сложно сказать кто больше прав, если процесс часть выделенного ему кванта прожил на ЦПУ, а затем не использовав весь квант времени выполнил В/В и освободил процессор, то в какую статистику записывать такой процесс? в статистику ЦПУ или В/В или в обе?

 Man для uptime прямо об этом говорит:

       System load averages is the average number of processes that are
       either in a runnable or uninterruptable state.  A process in a
       runnable state is either using the CPU or waiting to use the CPU.
       A process in uninterruptable state is waiting for some I/O
       access, eg waiting for disk.  The averages are taken over the
       three time intervals.  Load averages are not normalized for the
       number of CPUs in a system, so a load average of 1 means a single
       CPU system is loaded all the time while on a 4 CPU system it
       means it was idle 75% of the time.

 Man для vmstat:

  Procs

       r: The number of runnable processes (running or waiting for run time).
       b: The number of processes blocked waiting for I/O to complete.

Что показывает vmstat-r в разных ОС:

Solaris: run queue - показывает только процессы, стоящие в очереди к процессорам.
             Процессы, которые работают на ЦПУ не учитываются. Поэтому vmstat-r на Solaris показывает более низкие значения, чем в других ОС.
 
Linux: on CPU + run queue - процессы, которые работают на ЦПУ + стоят в очереди к ЦПУ,
                        т.е. все процессы, которые в состоянии runnable.
AIX:   on CPU+run queue.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.

How to disable/setup autostart parameters for specified instance ?

Q: We have a 4-node RAC. I need to disable autostart of the DB on one node only.    How to do it and how to see autostart parameters, confir...