Продолжаем тему вопросов на собеседовании. Очень часто я спрашиваю про LA, что означают 3 числа и как они считаются. По факту ответа задаю вопрос когда 2 физически одинаковых сервера (например с 10 ядрами) имеют разный LA, при этом один из них имеет LA 100 и не тупит, а другой при LA 10 слайд шоу. Что может происходить?
Вот буквально пример прошлой недели, когда Proxmox потерял BackUP NFS шару при переезде 🙂 Сервер при этом был крайне отзывчивым и вполне себе рабочим.
Когда мы видим LA 100 на 10 ядрах и живую систему — это классический CPU-bound: задачи честно стоят в очереди за квантом времени, и планировщик Linux просто эффективно их «разруливает».
Совсем другая история начинается, когда процессы уходят в так называемый Uninterruptible Sleep (статус D в top). В этом состоянии процесс не потребляет ресурсы процессора, но ядро всё равно учитывает его при расчете Load Average.
Именно это произошло с моим Proxmox: когда NFS-шара «отвалилась», все системные вызовы к ней просто повисли в ожидании ответа от сети. В итоге мы получаем ситуацию, когда LA огромен, но система отзывчива.
Мораль истории в том, что LA — это не показатель нагрузки системы, а всего лишь длина очереди, где в одной куче смешаны и те, кто хочет работать, и те, кто «просто постоять», всегда смотрите на iowait и статусы процессов — они скажут гораздо больше, чем три заветные цифры.
RSS
Твиттер
G+
Категория: 
