Частота обновления load averange

12
Playray
На сайте с 06.09.2008
Offline
133
1962

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

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

Можно ли как то чаще обновлять LA ?

Ну и заодно вопрос, какой оптимальны LA для максимальной производительности?

Сейчас поставил 20 на 8 потоков, вроде бы нормально...

Заранее спасибо!

LEOnidUKG
На сайте с 25.11.2006
Online
1723
#1

LA это не только процессор.

НО, если уж сильно грубо говоря:

LA1 = 100% нагрузка одного ядра.

LA2 = 100% нагрузка двух ядер и т.д.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Playray
На сайте с 06.09.2008
Offline
133
#2
LEOnidUKG:
LA это не только процессор.

НО, если уж сильно грубо говоря:
LA1 = 100% нагрузка одного ядра.
LA2 = 100% нагрузка двух ядер и т.д.

Я понимаю принцип, что LA это очередь задач к процессору...

Но вопрос в частоте измерения, вот например, при LA=8 мы добавляем еще задачу, и в логах я вижу, что добавились задачи все с одним значением LA, я сначала думал что у htop на экране LA обновляется не в реальном времени, но получается что и для скриптов нет моментального LA, а только значения которое обновляется например раз в секунду?

Еще заметил, что когда LA упал и htop показывает что нагрузка на проц упала, другие ресурсы тоже не заняты, просто LA выходит обновляется с лагом, поэтому и спрашиваю, есть варианты ускорения обновления LA?

Если говорить про то какой LA про какой LA оптимальнее, то заметил что например обычные сайты с LA 10-15 на 4х ядрах открываются практически как обычно, но если LA будет 30, то тормаза будут в 30 раз сильнее, а не в 2-3...

Mik Foxi
На сайте с 02.03.2011
Offline
1076
#3

Ну так смотрите первую цифру LA, она быстрее всех обновляется.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
F0
На сайте с 15.04.2010
Offline
72
#4

Мне в своё время всё разъяснила статья на хабре. https://habr.com/ru/post/216827/

Из опыта: первая цифра не должна быть больше количества ядер.

Mik Foxi
На сайте с 02.03.2011
Offline
1076
#5

f0b0s, она может быть многократно выше, все индивидуально, смотря как на это реагируют конкретные скрипты.

lonelywoolf
На сайте с 23.12.2013
Offline
151
#6

LoadAverage - количество процессов, ожидающих выполнения в единицу времени. Измеряется за минуту, 5 минут и 15 минут (обычно). Прямого отношения к нагрузке эта штука вообще не имеет, лишь косвенное. Мне известны специфические серверы с LoadAverage 200+ единиц, при этом работающие вполне нормально. Просто софт там такой запущен... Временной лаг в данном случае минута максимум. Если это много- оцеивайте нагрузку по другим показателям.

Платный и бесплатный хостинг с защитой от DDoS (http://aquinas.su)
Андрей
На сайте с 30.09.2009
Offline
482
#7
LEOnidUKG:
НО, если уж сильно грубо говоря:
LA1 = 100% нагрузка одного ядра.
LA2 = 100% нагрузка двух ядер и т.д.

Это уж перебор как грубо, нельзя такое вообще публиковать. После мифы по сети ходят, а их ноги из таких постов.

Все индивидуально под каждый проект.

EuroHoster.org ( https://eurohoster.org/ru/ ) - территория быстрых серверов. Выделенные серверы, VPS, SSL, домены и VPN.
B
На сайте с 21.10.2010
Offline
94
#8

cat /proc/loadavg

средняя загрузка за минуту (первая цифра) обновляется примерно раз в 5 секунд

Причин высокого LA может быть много разных и сложно посоветовать какой-то хороший и правильный не понимая как работает приложение.

Для postgresql-серверов я стараюсь удерживать его в границах количества выделенных под инстанс ядер (скачки Core x 2 допустимы)

Для CPU-intensive (когда всё упирается в процессор) LA > количества ядер обычно говорит о перегруженности

Для веб-серверов php-fpm я стараюсь не допускать LA большего, чем количество ядер x2

Про io-intensive - всё оч сложно.

Для комбинированной нагрузки тоже всё сложно.

Вообще можно попробовать сделать интегральную метрику - брать LA за минуту и количество процессов-воркеров.

Например, если процессов-воркеров стало мало - можно начинать добавлять задачи (но при условии что можно спрогнозировать как именно воркеры нагружают ядро).

Дела должны делаться
danforth
На сайте с 18.12.2015
Offline
153
#9

Не совсем понимаю зачем эти костыли. Возьмите модель fan-out / fan-in. Берете сервер очередей (например, NATS), с одной стороны producerы - пишут в очередь, с другой стороны consumerы читают, и выполняют работу. Масштабируется легко. Можно определять размер очереди и переставать пушить, чтобы не завалить сам сервер очередей.

Junior Web Developer
B
На сайте с 21.10.2010
Offline
94
#10

Не совсем понимаю зачем эти костыли. Возьмите модель fan-out / fan-in. Берете сервер очередей (например, NATS), с одной стороны producerы - пишут в очередь, с другой стороны consumerы читают, и выполняют работу. Масштабируется легко. Можно определять размер очереди и переставать пушить, чтобы не завалить сам сервер очередей.

Я исходный вопрос воспринимаю как вопрос о том как динамически управлять размером пула консьюмеров для максимальной утилизации железа.

Но у автора топика может быть иная вселенная.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий