Современные суперкомпьютеры — очень сложные системы. Они состоят из десятков тысяч разных компонентов. Чтобы суперкомпьютер работал эффективно, нужно тщательно следить за каждым из них. Кроме того, на суперкомпьютере одновременно решаются задачи разных пользователей. Эти программы могут создавать нагрузку, которая замедляет, иногда очень сильно, другие работающие программы. Некоторые программы из-за проблем с оптимизацией работают плохо, приводя к неэффективной трате дорогого компьютерного времени. Чтобы избежать всех этих негативных эффектов необходимо все время отслеживать состояние всех компонентов и параметры работающих программ. О существующих системах мониторинга наша беседа с Константином Стефановым.
Константин Сергеевич Стефанов — старший научный сотрудник Научно-исследовательского вычислительного центра Московского государственного университета им. М.В. Ломоносова.
— Над чем работают сотрудники лаборатории параллельных информационных технологий НИВЦ МГУ?
— Главное направление лаборатории связано с проблемами параллельных вычислений на больших установках. Помимо этого, сотрудники занимаются эксплуатацией нескольких суперкомпьютеров Московского университета и помогают пользователям.
— Что собой представляет современный суперкомпьютерный комплекс?
— У любого суперкомпьютерного комплекса есть сердце — вычислитель. Он состоит из тех же компонентов, что и привычные для нас ноутбуки или сервера, только более мощных и подобранных специальным образом.
Суперкомпьютер предполагает наличие инфраструктуры обслуживания: подвод электричества, обеспечение бесперебойности электропитания, отведение тепла и системы поддержания правильной температуры, влажности.
— Какие задачи решают современные суперкомпьютеры?
— Суперкомпьютер «Ломоносов», например, умеет решать массу задач. Сегодня он объединяет более 2 тыс. пользователей, которые вместе работают над несколькими сотнями научных проектов. Это могут быть проекты в области медицины, биологии, химии, физики, гидродинамики и множества других дисциплин.
— Существует некий парадокс эффективности суперкомпьютера, когда не все его ресурсы используются при решении тех или иных задач. Почему так происходит?
— Любой суперкомпьютер состоит из тех процессоров, систем памяти и хранения, которые создают фирмы-производители. При решении задач пользователи получают в распоряжение конкретную технику и конкретное программное обеспечение. Некоторые задачи решаются быстро и эффективно, а другие — нет. Возможно, они бы решались быстрее на другом оборудовании, но его нет, и пользователям приходится работать с тем, что есть. Они пытаются подгонять параметры и решение, что приводит к ошибкам, в том числе, связанным с эффективностью работы оборудования.
При решении задач, как правило, задействовано сразу множество частей суперкомпьютера. Иногда, эти части работают с разными скоростями. Если речь идет о двух вычислительных процессах, то это не так страшно. Но когда задача использует сразу несколько тысяч таких частей, то небольшая задержка в каждой из них вызывает ощутимое время простоя. Именно это и приводит к низкой эффективности работы суперкомпьютеров.
— Вы упомянули, что суперкомпьютеры состоят из огромного количества частей. Естественно, эти части ломаются и выходят из строя. Как специалисты следят за информационным заводом?
— В каждой большой установке, как и в наших стационарных компьютерах, заложена система резервирования. Суперкомпьютер не остановится, если выйдет из строя, например, охлаждающая установка. Всегда есть элементы, которые поддержат работоспособность системы в случае сбоя. При этом ввод в работу замещающего компонента чаще всего проходит без участия людей. Однако чинить поврежденный элемент все равно нужно.
Мы следим за каждой частью суперкомпьютера, анализируем в каком она состоянии. Зачастую некоторые неполадки можно заметить заранее, не дожидаясь поломки; специалисты могут наладить работу механических частей, улучшить подачу электрического снабжения и т.д.
В этом нам помогает система мониторинга суперкомпьютера. Она предоставляет всю информацию: какие компоненты работают хорошо, какие — на пределе, а какие выведены из строя. При этом система мониторинга должна также и понимать — когда тот или иной элемент изъят для ремонта, а когда он вернулся в строй, и требуется его отладка.
Между тем, задачи мониторинга осложняются тем, что суперкомпьютер — это достаточно плотная система. Обычный стационарный компьютер или ноутбук потребляет примерно 100 ватт электричества. При этом даже обычный ноутбук нагревается при работе. Электрический чайник потребляет 2 киловатта. А один «шкаф» суперкомпьютера два метра высотой может потреблять до 100 киловатт — как 50 электрочайников. И если система охлаждения выйдет из строя, то суперкомпьютер моментально перегреется. Поэтому действовать нужно очень быстро — найти неисправность и переключиться на некий резерв. И, в крайнем случае, если ничего не помогает, быстро выключить оборудование. Именно поэтому так важно вовремя реагировать на нештатные ситуации, а в идеале прогнозировать их.
— Каким образом их можно прогнозировать?
— Например, мы можем получить данные о том, сколько электричества потребляет компрессор кондиционера. Когда подшипники компрессора выходят из строя, ему становится тяжелее крутиться. Соответственно, он потребляет больше электричества, преодолевая силу трения. По таким косвенным признакам мы можем отследить работоспособность кондиционеров.
При обычных условиях работы система может оказаться горячее, чем раньше. Это также говорит о возможных неисправностях.
Конечно, не обходится без неожиданных поломок. И в этом случае, как я уже говорил, необходимо быстро их обнаружить и принять нужное решение. Это два важных направления, которые ведутся одновременно. Одно другое никак не заменяет.
— Система мониторинга включена в структуру суперкомпьютерного комплекса или она автономна?
— Любое программное и аппаратное обеспечение суперкомпьютера — это некий комплекс. Каждый суперкомпьютер уникален. Все компоненты подбираются и подгоняются для конкретной суперкомпьютерной установки.
При создании нового суперкомпьютера применяются и новые инфраструктурные и программные решения. Это серьезная работа, которая проводится на этапе проектирования, на этапе запуска и на протяжении всего периода эксплуатации. Система мониторинга должна также обладать собственной производительностью. Только так она сможет обрабатывать огромный объем информации. И речь не только о работоспособности компьютера, но и об эффективности.
Как я упоминал, программы не всегда эффективны. И понять, насколько хорошо работает та или иная программа, отдельная сложная задача.
Прежде всего, у нас не всегда есть необходимая информация. Операционная система, например, может указать лишь на время работы процессора, затраченное на решение. Если мы видим, что при подсчете были паузы, значит, есть проблема. Возможно, операционная система ждет данные от системы хранения или обращения в память. Возможно, перегрелся процессор, и аппаратура компьютера специально уменьшила время работы или тактовую частоту, чтобы не допустить выхода из строя.
Это лишь часть информации. При этом каждый компонент суперкомпьютера выдает порядка сотни разных величин. Эту информацию необходимо получать с высокой частотой, поскольку суперкомпьютер обрабатывает до миллионов и миллиардов операций в секунду. Даже если мы будет получать данные раз в секунду, мы всё равно не сможем точно понять, к какому месту программы они относятся, поскольку информация поступает о достаточно больших «кусках» программы. Эти сообщения мы должны свести, понять, к какой конкретно задаче они относятся, эффективно ли она расходует мощности или неэффективно.
Бывают задачи, которые не могут работать лучше на существующем «железе». В этом случае нам приходится закрывать глаза на существующие проблемы, ведь эти задачи все равно надо решать.
Система мониторинга производительности создана как раз для того, чтобы получать исходные данные и передавать их другим системам, которые займутся интеллектуальным анализом. Перед нами две разные задачи. Первая связана со сбором данных в режиме реального времени. А вторая предполагает более сложный анализ, который возможен уже после отработки программы.
— Существует мнение, что сами пользователи при составлении задачи не всегда думают о ее оптимизации и эффективном использовании суперкомпьютера. Им важен результат, а не время, за которое можно этот результат получить. Как решить этот вопрос?
— Очевидный способ — просвещение. Пользователи не задумываются об эффективности не потому, что они такие плохие. Зачастую они даже не знают, что могут столкнуться с такой проблемой.
Многие пользователи, особенно те, которые решают профессиональные задачи, пользуются готовыми пакетами. В них заложено множество разных вариантов решения похожих задач. Иногда можно слегка изменить входные данные и способ вычисления. И задача решается гораздо лучше. Мы можем сказать об этом пользователю, а он в свою очередь, анализирует, подходит ли ему другой метод решения?
Мы лишь направляем пользователя, но решение всегда остается за ним.
— Суперкомпьютеры постоянно обновляются и развиваются. Как специалистам поспеть за всеми изменениями?
— Поток информации действительно велик. С другой стороны, революционные изменения происходят не так часто. При этом в суперкомпьютерном мире наблюдается и некая эволюция. Есть ряд проектов, которые предполагают создание к 2022 году установок с кардинально новой производительностью. Ведутся теоретические дискуссии о том, чего мы можем достигнуть с такой производительностью, к чему нужно быть готовыми, чего мы еще не знаем. Как правило, перед созданием очередной большой установки, решения проверяются на установках меньшего масштаба. Результаты обобщаются и публикуются в статьях. Всё это, конечно, нужно изучать, чтобы не отставать.
Сейчас ситуация осложняется тем, что многие конференции отменены из-за пандемии. Вроде бы кажется, что общение с коллегой не несет полезной информации по сравнению с научной статьей. Однако при неформальном общении и возникают полезные идеи. Это позволяет оставаться на «гребне волны», понимать, что происходит в индустрии и чего ждать дальше.
— России нужны новые мощные компьютеры?
— Я лицо, конечно, заинтересованное, поскольку моя работа напрямую связана с суперкомпьютерами. А суперкомпьютер, к сожалению, живет недолго. Считается, что эксплуатация установки не должна превышать 5 лет. В России свои сложности —нам сложно получить новое оборудование, при этом легче продлевать эксплуатацию старого. Поэтому наши суперкомпьютеры используются дольше, хотя рано или поздно всё равно выходят из строя.
Я работаю в вычислительном центре 20 лет. За это время мы эксплуатировали 6 установок. Естественно, часть из них устарела и больше не используется. Не будет суперкомпьютеров — у меня не будет этой работы, придется переквалифицироваться.
Анализируя то, как работают наши суперкомпьютеры, какая образуется очередь из пользователей, ясно, что задачи есть.
— Расскажите, над чем вы работаете сейчас?
— В течение последних 8 лет я занимаюсь развитием системы мониторинга производительности. Она собирает данные о работе программ, ищет простои, анализирует количество обращений в память, к дискам и пытается их обрабатывать.
Ранее все системы были устроены одинаковым образом: они собирали данные, сохраняли их в одном месте, а специалисты потом пытались с ними разобраться. Этот подход имеет право на существование, но требует при этом больших мощностей для хранения. Мы подобные системы приобрести не можем. Поэтому возникла идея обрабатывать данные на лету без сохранения. Конечно, мощностей центральных серверов не хватает. Поэтому мы предложили «отщипнуть» чуть-чуть мощности от каждого вычислительного узла на нужды обработки.
Хотя и здесь нам предстоит еще поработать. Небольшая ошибка в компоненте системы мониторинга может привести к тому, что она отберет себе слишком много памяти и не оставит ничего задаче.
Помимо этого, существует проблема отслеживания эффективности задачи. Перед запуском для нее выделяются конкретные вычислительные узлы. Программа-планировщик определяет свободные узлы и запускает задачу. Соответственно, система мониторинга должна понимать, что на этих ресурсах запустилась новая задача, и собрать данные в одном месте. Это необходимо, чтобы другим компонентам анализа не пришлось выдирать данные из общего потока сообщений.
Помимо данных о самой задаче нужна информация об использовании суперкомпьютера в целом. Поэтому одна и та же система должна уметь отдавать часть данных на исследование задачи, а часть данных, чтобы посмотреть статистику по всей машине. Вся эта динамическая реконфигурация с возможностью обработки по разным путям в разных режимах и составляет суть той системы, которой я занимаюсь.
Фото на странице: 123RF
Фото на превью: скриншот записи интервью