hive os высокая загрузка la что делать
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
С необходимостью правильно оценить нагрузку на систему сталкивается каждый системный администратор. Если говорить о Linux-системах, то одним из основных терминов, с которым придется столкнуться начинающему администратору окажется Load Average (средняя загрузка). Однако, если говорить о русскоязычном сегменте сети интернет, описание данного параметра сводится к общим малозначащим фразам, в то время как за этими простыми цифрами кроется глубокий пласт информации о работе системы.
Если обратиться к популярным источникам (Википедия), то можно найти примерно следующее:
Посмотреть текущую загрузку системы можно командной
Также ее значения выводят утилиты top и htop, а также множество других инструментов. В ответ мы получим что-то вроде:
Много это или мало? Хорошо или плохо? Давайте разбираться.
Чтобы понять, что такое загрузка системы следует обратиться к логике работы центрального процессора. Вне зависимости от того, мощный у вас процессор или слабый, многоядерный или нет, он выполняет некий программный код для некоторых процессов. Если процесс один, то вопросов нет, а вот когда их несколько? Надо как-то распределять ресурсы между ними и, желательно, равномерно, чтобы один процесс, «дорвавшись» до CPU, не оставил без вычислений другие.
Здесь можно провести аналогию, когда несколько игроков хотят поиграть на одной приставке. Что обычно делают в таких случаях? Договариваются о времени, скажем каждый играет по 15 минут, затем дает поиграть другому.
Процессор поступает аналогичным образом. Каждому нуждающемуся в вычислениях процессу выделяется некий промежуток времени, который зависит от типа процессора и системы, если говорить о современных процессорах Intel, то это значение обычно составляет 10 мс и называется тиком. Каждый тик процессорное время отдается какому-то одному процессу в порядке очереди, но если процесс имеет повышенный или пониженный приоритет, то он, соответственно получит большее или меньшее количество тиков.
Количество использованных тиков, в первом приближении, и представляет загрузку системы. В Linux для оценки загрузки используется интервал в 500 тиков (5 секунд), при этом учитываются как работающие процессы (использованные тики), так и ожидающие (которым не хватило тика, либо они не смогли его использовать, ожидая завершения иной операции).
Если мы используем все тики за указанный промежуток времени и у нас не будет ожидающих сводного тика процессов, то мы получим загрузку процессора на 100% или load average (LA) равное 1.
Давайте рассмотрим следующую схему:
Справа показана ситуация, когда каждый тик был занят своим процессом, но некоторые процессы так и не получили своего тика или не смогли получить, например, ждали окончания операции ввода-вывода. В таком случае загрузка процессора составит все те же 100%, но load average вырастет до 1,33, указывая на наличие очереди.
А теперь зайдем в магазин вечером, все кассы заняты, и чтобы оплатить покупки придется ждать. Теперь если за 10 минут касса обслужила 10 человек и еще 10 стоят в очереди, то средняя загрузка будет равна 2, хотя касса загружена всего на 100%.
Вернемся к процессору и еще одному моменту, процессам, ожидающим окончания операций ввода-вывода (диск, сеть и т.п.). Во многих источниках указывается, что такие процессы искажают результат load average и мы можем получить высокие значения LA при отсутствии загрузки процессора. Да, это так. Посмотрим на еще одну схему ниже:
Как видим, из 9 тиков было использовано только 6, т.е. процессор загружен всего на 67%, но так как три процесса ждут данные от диска, то load average по-прежнему равен 1.
Если продолжать аналогию с супермаркетом, то похожая ситуация возникает, когда вы уже подошли к кассе и уже собрались выгружать продукты на ленту, но ваша супруга говорит вам, что она забыла купить хлеб, и вы тут стойте, а она сбегает. Собственно, все что вам остается до того, как она принесет хлеб, это стоять рядом с кассой и ждать, пропуская тех, кто находится в очереди позади вас.
Т.е. если у нас имеется 1 процессор и 500 тиков, но за это время процессорные ресурсы требуются тысяче процессов, то нагрузка у нас явно вдвое превышает имеющиеся ресурсы. И то, что часть процессов ждут жесткий диск и процессор работает вхолостую, не говорит о том, что система находится в простое, наоборот, она не может обработать нагрузку, правда по другой, не зависящей от процессора причине.
Пользователю ведь все равно по какой причине тормозит сайт или приложение, тем более что недостаток дисковых ресурсов обычно выражается подвисании приложения, в то время как при недостатке процессорных оно просто начинает тормозить.
Подведем промежуточный итог. Load average показывает отношение имеющихся запросов на вычислительные ресурсы к количеству этих самых ресурсов (тиков). Для одного процессора (одного процессорного ядра) использование всех имеющихся ресурсов обозначает load average = 1. Причем это будет справедливо и для Core i7 и для Pentium I, хотя производительность у этих двух процессоров разная.
Теперь перейдем к многопроцессорности и многоядерности. При появлении второго процессора или второго ядра у нас появляются дополнительные вычислительные ресурсы, т.е. же самые 500 тиков. Но за эти 500 тиков система уже может обработать уже 1000 запросов, что покажет нам load average = 2.
Значит ли это, что производительность выросла в два раза? Нет! Производительность зависит от того, сколько вычислений способен произвести процессор в течении одного тика. Понятно, что более мощный процессор выполнит за этот промежуток времени больше вычислений, но оба из них сделают одинаковое число тиков (для каждого процессорного ядра). В многопроцессорных (многоядерных) системах часть процессорного времени вместо вычислений занимают задачи межпроцессорного взаимодействия, переключения контекста и т.д. Поэтому появление второго ядра никогда не даст 100% прироста производительности, но всегда позволяет обработать вдвое большее количество запросов.
Это хорошо видно на примере технологии Hyper-threading, которая позволяет сделать из одного физического ядра процессора два виртуальных. Физическая производительность ядра процессора, т.е. количество производимых им вычислений в единицу времени не меняется, но появляется, хоть и виртуальное, но второе ядро, а это еще 500 тиков. Как показывают тесты, прирост производительности от Hyper-threading составляет 15-30%, что еще раз подтверждает старую поговорку, что лучше плохо ехать, чем хорошо стоять. Второе ядро, хоть и виртуальное, позволяет обрабатывать вычислительные запросы тех процессов, которые в одноядерном варианте стояли бы в очереди.
Непонимание этого момента приводит к тому, что load average ошибочно связывают не с доступностью и достаточностью вычислительных ресурсов, а с производительностью процессора, что приводит к неверным выводам.
Например, переводчик довольно неплохой статьи на Хабре делает ошибочный вывод в отношении Hyper-threading:
Хабраюзер esvaf в комментариях интересуется, как интерпретировать значения load average в случае использования процессора с технологией HyperThreading. Однозначного ответа на данный момент я не нашел. В данной статье утверждается, что процессор, который имеет два виртуальных ядра при одном физическом, будет на 10-30% более производительным, чем простой одноядерный. Если принимать такое допущение за истину, считаю, при интерпретации load average стоит брать в расчет только количество физических ядер.
А Википедия вообще написала полную ерунду (что для технических статей там совсем не редкость):
Убедиться, что это не так довольно легко. Если запустить бесконечный цикл командой
то мы обеспечим полную загрузку одного процессорного ядра и load average = 1 (в данный момент смотрим только на первые, минутные показания данного параметра).
Мы не знаем, сколько именно операций в единицу времени выполняет наш процессор, но нам и не нужно знать это, гораздо важнее понимать, что на текущий момент все вычислительные ресурсы системы задействованы, но недостатка в них нет.
Запустим пятый процесс:
Что изменилось? Загрузка процессора осталась на уровне 100%, это и понятно, выше головы не прыгнешь, но load average вырос до 5, что означает нехватку вычислительных ресурсов примерно на 20%. Таким образом понимание сути значения средней загрузки позволяет администратору однозначно сделать выводы о текущей ситуации, чего не скажешь, глядя просто на индикатор загрузки CPU.
Теперь касательно HyperThreading, виртуализации и т.п. случаев, когда процессор, с которым работает система далеко не соответствует физическому процессору, искусственно создадим данную ситуацию. Для этого запустим на хосте параллельно с виртуальной машиной какой-нибудь ресурсоемкий процесс, например, кодирование видео. Виртуальная машина будет рассчитывать на 4 полных процессорных ядра, а по факту получит в лучшем случае половину их производительности. Проверим?
Теперь уберем стороннюю нагрузку. Гипервизор тут же передаст максимум ресурсов виртуальной машине.
Как видим, вычислительных ресурсов снова стало достаточно и load average опустился до значения 4.
Какие выводы мы можем сделать из этого примера? Что значение load average корректно отражает загрузку системы даже в тех условиях, когда иные показатели не дают корректного представления о происходящих процессах. Так нагрузка на CPU в 157% явно противоречит здравому смыслу, а вот LA = 4,55 вполне реально отражает ситуацию. Поэтому никаких корректив на виртуальные ядра, виртуализацию и т.п. вносить не надо. Load average является относительной величиной и от реальной производительности CPU не зависит в тоже время показывая наличие или дефицит вычислительных ресурсов.
Например, скользящие средние широко применяются в финансовом анализе, для выделения общих тенденций движения курсов валют и акций, позволяя отбросить так называемый «биржевой шум» и понять общие тренды рынка.
То, что подходит финансисту, наверняка подойдет и системному администратору. В чем основное преимущество скользящих средних? В том, что они позволяют выделить основные тенденции, отбросив кратковременные колебания. Это достоинство, а не недостаток, как пытается убедить нас Википедия:
Именно усредненные по особому алгоритму значения позволяют нам окинуть ситуацию взглядом вширь и вглубь и разглядеть за деревьями лес. В этом отношении временные значения load average представляют собой не время, за которое посчитали среднее значение, а период времени относительно которого проводится усреднение.
Благодаря автору Хабра ZloyHobbit, который не поленился изучить исходный код Linux, можно точно смоделировать различные значения load average при заданной модели нагрузки. Мы смоделировали ситуацию, когда первые 30 минут единственное ядро CPU было нагружено на 100%, без ждущих в очереди процессов, в последующие полчаса нагрузка была полностью снята.
Как видим, разные периоды усреднения дают совершенно различные результаты, так LA 1 (1 min), начинает показывать реальные значения где-то через 4 минуты, LA 5 для отражения текущей нагрузки потребовалось уже 20 минут, а LA 15 за полчаса полной загрузки вышла только на 0,8.
О чем это говорит и как интерпретировать данные значения? Можно сказать, что LA 1 представляет собой недавнее прошлое (несколько минут назад), LA 5 прошлое (полчаса-час) и LA 15 отдаленное прошлое (несколько часов).
Теперь, располагая этим багажом знаний, мы можем правильно интерпретировать простые, на первый взгляд, три числа load average.
Для примера возьмем такое значение:
Это говорит о том, что имеет место достаточно кратковременный (около десятка минут) всплеск нагрузки, при этом вычислительных ресурсов пока достаточно.
Говорит о том, что не так давно система испытывала значительные нагрузки в течении довольно продолжительного времени (полчаса-час).
А вот такая картина:
Для четырехядерного процессора означает, что он работает на пределе своих возможностей в течении длительного времени (несколько часов).
Как видим, load average, несмотря всего на три цифры, способна представить системному администратору огромный пласт информации о фактической загрузке системы на протяжении последних нескольких часов.
Теперь самое время дать ответы на вопросы, поставленные нами в начале статьи: «Много это или мало? Хорошо или плохо? » Для одного ядра мы считаем приемлемыми следующие значения:
На многоядерной (многопроцессорной) системе значения load average следует откорректировать пропорционально числу ядер. Узнать их количество можно командой
Так, например, с учетом вышесказанного, для четырехядерной системы LA 15 не должен превышать 3.00, для двухядерной 1.5, а для одноядерной 0.75.
Теперь, понимая, что такое load average и каким образом формируются его значения вы всегда сможете быстро оценить производительность собственной системы и вовремя принять меры если в работе вашего сервера возникнут узкие места.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Что такое LA (load average) и как правильно его рассчитывать?
Узнать нагрузку на сервере можно прописав команду w через SSH консоль.
Что нужно знать о LA?
Значение LA рассчитывается исходя из процессов, которые выполняются и находятся в очереди на выполнение (CPU, RAM, I/O). В большей степени на LA влияет загруженность процессора, которая в свою очередь является одним из основных факторов повышенной нагрузки на сервере.
1(единица) LA = 100% нагрузка на 1 ядро CPU. Соответственно, когда на VPS два ядра, то допустимая средняя нагрузка может достигать 2 LA:
Если нагрузка растёт и превышает количество ядер и держится продолжительное время, то несмотря на это, Ваш сервер продолжает работать. В данном случае, LA увеличивает очередь запросов на выполнение и в случае с виртуализацией KVM / OpenVZ данная нагрузка начинает негативно влиять на физический сервер, на котором находится Ваш VPS.
Как правило, мы не реагируем на всплески нагрузки (например, когда выполняется бэкап или выгрузка товаров в 1с), но если мы видим, что LA на физическом сервере гораздо выше нормы, то будем вынуждены предпринять меры, т.к. это будет иметь негативный эффект для всех клиентов на данном физическом сервере.
- load average, la, cpu, нагрузка, vds, vps, cputime 3 Пользователи нашли это полезным
Похожие статьи
Если у вашего сайта не отображаются латинские буквы, как в данном примере:То вам необходимо.
Для VPS/VDS Сервера мы предлагаем панель управления ISPmanager Lite совершенно бесплатно*.
Данная услуга предназначена для клиентов, которые заказали «выделенный сервер» или «VPS/VDS.
Мануал написан для тех, у кого установлена панель управления ISPmanager Lite и операцинная.
У Вас выскакивает ошибка «Конвертация в UTF-8 не поддерживается на стороне сервера» при.
Hive Os: разгон видеокарт
Идеальный разгон всегда подбирается путем «проб и ошибок», поэтому если вы хотите добиться оптимального соотношения хешрейта на ватт, Вам придется немало поэкспериментировать. Однако, Hive OS сможет Вам сильно помочь в этом, так как в него встроена база данных профилей разгона других пользователей, с удобным фильтром по типу видеокарт. Если вы не уверенны какие настройка вам установить изначально, вы можете выбрать один из популярных пресетов для своей видеокарты, а затем уже начинать менять настройки. После каждого изменения настроек разгона и андервольтинга мы рекомендуем запустить майнинг на какое-то более менее продолжительное время, чтобы убедиться что ваше оборудование продолжает работать стабильно и не появились «отклоненные шары» (это могут быть как не верные решения, которые отправляет ваша видеокарта в связи с чрезмерным разгоном, так и не вовремя отправленные шары). Большое количество отклоненных шар, часто является одним из признаков нестабильной работы, в этом случае рекомендуем немного снизить разгон и выполнить повторную проверку.
Создание профиля разгона
Для каждой фермы создаются свои индивидуальные профили разгона и они не могут быть использованы в другой ферме. У вас есть возможность создать профиль разгона для всей фермы или же для конкретного воркера. Профиль конкретного воркера всегда будет иметь более высокий приоритет, и перекрывать общие настройки для фермы. Таким образом, рекомендуется сначала задать оптимальные значения параметров для всей фермы, а затем (если это необходимо) уже настраивать каждый риг (он же воркер) по отдельности.
Итак, для создания нового профиля разгона просто перейдите на вкладку «Шаблоны разгона» («Overclocking Profiles») для вашей фермы, а затем нажмите кнопку «Добавить OC Профиль» («Add OC Profile»). Теперь в появившемся окне «Сохранить Разгон в Качестве Шаблона» («Save Overclocking as Template») назовите ваш новый профиль и нажмите «Сохранить» («Save»).
Вы создали шаблон разгона, который может быть использован конкретными воркерами или же всей вашей фермой. Вы всегда можете его скопировать и изменить для различных алгоритмов и майнеров. Хотя, созданный вами шаблон и будет использоваться для всех ваших GPU, настройки разгона для видеокарт Nvidia и AMD разные. Имейте ввиду, что вы можете иметь различные наборы настроек для разных типов графических процессоров (Nvidia, AMD) в одном и том же профиле и если ваш воркер работает на Nvidia и AMD, то настройки будут применяться к каждому типу GPU индивидуально.
Для того, чтобы отредактировать профиль разгона, просто нажмите на иконку с плюсом, которая находится справа от имени вашего профиля. Кроме того, вы можете использовать популярные шаблоны разгона от других пользователей, зайдя на вкладку «Популярные пресеты» и выбрав из списка вашу модель видеокарты.
Разгон видеокарт Nvidia.
Перед тем как менять настройки разгона вы можете запустить команду «nvidia-smi» через встроенный в Hive Os терминал, для того, чтобы определить текущие настройки ваших GPU. Для того, чтобы сделать это удаленно с панели управления HiveOS, перейдите к вашему воркеру, а затем нажмите на кнопку «Выполнить команду» («Run command») на основной панели инструментов, находящейся в верхней части экрана. В появившемся окне, к тому же, будет справочная информация по другим полезным командам, которые могут пригодится при разгоне и настройке ваших ригов. В появившемся окне в поле слева от кнопки пуск введите команду, после чего нажмите на «Пуск«. После закрытия окна подождите некоторое время (от нескольких секунд до нескольких минут) пока сгенерируется отчет. Для просмотра отчета просто кликните на него.
Теперь поговорим непосредственно про настройки разгона и андервольтинга для Nvidia GPU. У вас есть возможность задать одно общее значение каждого параметра для всех GPU в риге или же указать раздельные значения для каждой видеокарты через пробел. Например:
Чтобы указать настройки для определенного алгоритма, выберите его в списке «Алгоритм» («Algo»). Для каждого алгоритма можно создать индивидуальный набор настроек. При выборе пункта «Настройки по умолчанию» («Default config») ваши настройки будут применимы ко всем алгоритмам, однако они могут быть переписаны настройками в самих алгоритмах.
Подробнее про настройки
После изменения параметров просто нажмите на кнопку «Сохранить«.
Для примера разгон Nvidia GTX 1060.
Разгон видеокарт AMD.
Перед тем как менять настройки разгона вы можете запустить команду «amd-info» через встроенный в Hive Os терминал, для того, чтобы определить текущие настройки ваших GPU. Для того, чтобы сделать это удаленно с панели управления HiveOS, перейдите к вашему воркеру, а затем нажмите на кнопку «Выполнить команду» («Run command») на основной панели инструментов, находящейся в верхней части экрана. В появившемся окне, к тому же, будет справочная информация по другим полезным командам, которые могут пригодится при разгоне и настройке ваших ригов. В появившемся окне в поле слева от кнопки пуск введите команду, после чего нажмите на «Пуск«. После закрытия окна подождите некоторое время (от нескольких секунд до нескольких минут) пока сгенерируется отчет. Для просмотра отчета просто кликните на него.
У вас есть возможность задать одно общее значение каждого параметра для всех GPU в риге или же указать раздельные значения для каждой видеокарты через пробел. Например:
Чтобы указать настройки для определенного алгоритма, выберите его в списке «Алгоритм» («Algo»). Для каждого алгоритма можно создать индивидуальный набор настроек. При выборе пункта «Настройки по умолчанию» («Default config») ваши настройки будут применимы ко всем алгоритмам, однако они могут быть переписаны настройками в самих алгоритмах.
Подробнее про настройки
Теперь осталось нажать на кнопку «Сохранить«.
Пример разгона для 6 карт AMD RX 580
Значения показанные ниже приведены для примера, возможно для ваших карт будут оптимальные другие значения. Используйте на свой страх и риск.
Применяем профиль разгона
Теперь, для того, чтобы применить созданный вами профиль, перейдите на вкладку с воркерами и отметьте галочкой слева те воркеры, к которым вы собираетесь применить профиль разгона. Вы должны будете увидеть иконку спидометра в строке меню в правом верхнем углу экрана.
Если нажать на эту иконку спидометра, перед вами появится окно, в котором отобразится количество выбранных вами воркеров и список всех ваших полетных листов. Выберите профиль разгона, который вы хотите использовать и нажмите на кнопку «Применить«. В итоге вы должны увидите сообщение о том, что команда разгона была отправлена на воркер. Через некоторое время ваши воркеры должны будут применить изменения.
Возможно, разгон видеокарт под HiveOS не такая уж и тривиальная задача для новичка, но мы попытались максимально подробно и понятно рассказать о процессе разгона как для видеокарт AMD, так и для графических процессоров Nvidia. Хотя некоторые майнеры используют всегда настройки по умолчанию, и не разгоняют оборудование, как нам кажется, разгон и андервольтинг является неплохим подспорьем для увеличения хешрейта в майнинге или уменьшения потребления ригов. Часто благодаря разгону и андервольтингу удается добиться увеличения хешрейта при одновременном снижении потребления и температур видеокарт.