При работе с суперкомпьютером необходимо учитывать огромное множество факторов. Суперкомпьютерный информационный завод требует постоянного внимания специалистов по администрированию. Каждую секунду суперкомпьютер обрабатывает колоссальное количество информации. Поэтому неудивительно, что иногда случаются ошибки и сбои в его работе. В этом случае специалисты должны реагировать быстро и четко. При этом ответственность за эффективную работу суперкомпьютера ложится также и на самих пользователей. О работе суперкомпьютерных комплексов и проблемах администрирования наша беседа с Сергеем Жуматием.
Сергей Жуматий – ведущий научный сотрудник Научно-исследовательского вычислительного центра МГУ им. М.В. Ломоносова.
— От чего зависит качество работы суперкомпьютеров?
— Существует множество разных факторов. Но прежде всего, важно понимать, что мы подразумеваем под качеством работы. Чаще всего под этим понимают полную загруженность суперкомпьютера, когда при решении задач используется весь его потенциал. Однако на практике такое достигается редко.
Конечно, это сильно зависит от предметной области, от задач, которые на нем считаются. Тогда вопрос уже будет звучать по-другому — насколько эти задачи используют мощность суперкомпьютера? Используют ли они все его ресурсы? Могут ли они, в принципе, использовать все ресурсы? Возможно, некоторые из этих задач проще запустить на более простой платформе.
— Почему некоторые задачи не используют весь потенциал суперкомпьютера?
— Дело в том, что суперкомпьютер предназначен для запуска специализированных задач — так называемых параллельных задач, состоящих из множества подзадач, решаемых одновременно. Чтобы создать такую программу, нужно обладать хорошими знаниями. При этом после создания самой программы необходимо ее оптимизировать. Многие пользователи, которые самостоятельно пишут программы, зачастую не занимаются ее отладкой. Они видят, что параллельная программа стала работать быстрее. Им этого вполне достаточно. Но на практике мы не раз сталкивались с программами, которые могут работать в 3, в 5 или даже в 10 раз быстрее благодаря грамотной оптимизации — изменениям параметров запуска, алгоритмов и т.д.
С коллегами из лаборатории параллельных информационных технологий мы внедрили систему, которая позволяет следить за задачей, а также за тем, как она себя ведет, сколько вычислительной мощности процессора «съедает», сколько памяти потребляет и пр. При этом система мониторинга не внедряется в саму программу и не снижает ее скорость.
Даже по косвенным признакам мы можем отслеживать заведомо плохо оптимизированные программы. Например, при запуске задача использует лишь одно ядро из 20 доступных в вычислительном узле. Это говорит о том, что задача плохо оптимизирована, или пользователь забыл правильно ее скомпилировать: не указал ключи для использования всех доступных ядер.
С помощью созданной системы мониторинга, запущенной в пробном режиме, мы отслеживаем подозрительные программы и связываемся с их авторами, чтобы выяснить — уверены ли они в том, что задача решается правильно.
В будущем мы планируем автоматизировать этот процесс. Уведомления авторам будут отправляться автоматически, если система обнаружит проблему с эффективностью. Помимо уведомления пользователь получит рекомендации для улучшения и исправления.
Это действительно сложная сфера, требующая специальных инструментов, владения специальными навыками.
— Расскажите подробнее о проекте Octoshell.
— Проект Octoshell как раз помогает администраторам и пользователям решать рутинные задачи. В частности, Octoshell автоматизирует наше общение с пользователями. При возникновении проблем или вопросов, связанных с установлением новых пакетов или исправлением ошибок, им достаточно обратиться к нам через Octoshell.
Раньше нам приходилось общаться через электронную почту, и это было очень сложно. Ведь, когда ты общаешься с двумя-тремя пользователями, это вполне приемлемо. Но если их сразу несколько десятков — это сложная задача. Тяжело запомнить, кто, когда и по какому вопросу обращался. К тому же может возникнуть проблема, с которой уже обращались какое-то время назад. Но найти нужную переписку невозможно.
Octoshell автоматизировал процесс общения администратора и пользователя. Мы создавали эту систему так, чтобы она не влияла на работу суперкомпьютера. Даже при выключении Octoshell или его апгрейде суперкомпьютер ничего не заметит. Именно поэтому Octoshell может применяться для работы на любых суперкомпьютерах. Без остановки, без изменения режима работы. Он устанавливается на совершенно независимый сервер и не вмешивается во внутреннюю «кухню» работы суперкомпьютера.
При этом Octoshell берет на себя всё общение с пользователями и рутинные задачи: создание аккаунтов, квотирование и прочие базовые вещи. Помимо этого проект можно расширять. К примеру, мы интегрировали в него систему мониторинга, о которой я говорил. Когда система определяет, что та или иная задача работает неэффективно, она связывается с Octoshell и передает ему необходимую информацию. Octoshell, в свою очередь, определят, к какому пользователю относится эта задача, нужно ли отправлять ему оповещение по электронной почте и т.д. Он рисует графики, подсвечивая возникшие проблемы, собирая всю информацию на одной страничке.
Пользователь заходит в Octoshell и сразу видит предупреждение — некоторые задачи требуют внимания. Сегодня мы постоянно работаем над расширением его функциональности, дописываем новые модули, благо сервис позволяет это делать без ущерба для других систем.
С Octoshell работа стала продуктивнее. Переписка с пользователями стала проще. Более того, когда пользователь хочет задать вопрос администратору в Octoshell, он сначала должен пройти специальный интеллектуальный опросник. Это позволяет нам детализировать особенности возникшей проблемы. Как показывает практика, примерно 10-15% проблем отпадают уже на этом этапе. Наводящие вопросы позволяют сразу найти ту или иную ошибку, которую пользователи могут решить самостоятельно, а техподдержке сразу получить нужную информацию для решения проблемы. Это в разы ускоряет работу.
— Какие навыки нужны людям, которые сейчас занимаются поддержкой и администрированием суперкомпьютеров? Это же колоссальный набор информации.
— Совершенно верно. Хорошее решение — разделять обязанности между несколькими людьми. Например, вопросы, связанные с квотированием или оформлением документов, в принципе, не требуют знаний, напрямую связанных с суперкомпьютерами.
Администрирование, разумеется, требует хороших знаний Linux, на котором работают все суперкомпьютеры. Нужно иметь представление о том, как устроены специфические пакеты и средства, применяемые на суперкомпьютерах. Они могут отличаться в зависимости от самих суперкомпьютеров. Речь идет о разном программном обеспечении, о разных системах, которые управляют потоком заданий и др. У них есть общие черты, но важно понимать, что с каждой из них придется разбираться индивидуально.
Стоит сразу отметить, что это быстроразвивающаяся область. Здесь всё меняется очень стремительно. Постоянно появляется что-то новое. А то, что было до — либо теряет актуальность, либо приобретает новые функции и начинает работать по-другому. Всё это обязательно нужно отслеживать и стараться не упустить.
— То есть специалисты, работающие с суперкомпьютерами, постоянно учатся?
— Да. Непрерывно. Даже если специалист не намерен что-то менять на своем суперкомпьютере, он всё равно должен знать, что происходит вокруг. Он всегда должен быть готовым к переменам, которые случаются каждые 2-3 года.
Сами суперкомпьютеры, к сожалению, тоже быстро устаревают. По международным меркам, суперкомпьютер, который проработал 3-5 лет, уже неэффективен. А это значит, что на его поддержку уходит больше денег, чем на покупку нового. В России, конечно, всё не так.
Например, суперкомпьютеры «Ломоносов» и «Ломоносов-2» — настоящие долгожители. Мы поддерживаем их на протяжении долгих лет. Какие-то вещи мы стараемся оставить в неизменном состоянии. Какие-то всё равно приходится менять: вносить новые программные решения, а иногда и аппаратные, если это необходимо нашим пользователям. Мы стараемся всегда идти им навстречу.
— Насколько я знаю, некоторые суперкомпьютеры обновляют, увеличивая мощность.
— Да, совершенно верно. Это хороший способ поддерживать их в актуальном состоянии. Но нарастить мощность, можно лишь 1-2 раза. К апгрейдам нужно подходить аккуратно и вдумчиво. Важно правильно оценить — действительно ли имеет смысл докупить что-то новое или проще построить с нуля новый суперкомпьютер.
— А в чем основная причина устаревания? Неужели так быстро усложняются задачи, которые должен решать суперкомпьютер?
— Как показывает практика, пользователи быстро находят задачи, которые занимают любой суперкомпьютер. Когда мы построили наш самый первый маленький суперкомпьютер в 1999 году, нам приходилось самим предлагать пользователям внутри МГУ использовать его. Мы говорили: «У нас появился суперкомпьютер, который может считать большие ресурсоемкие задачи». И часто получали ответ: «Зачем? Нам достаточно своих компьютеров. Я за сутки могу посчитать на системном блоке всё, что мне нужно».
Но уже через год после создания первого настоящего суперкомпьютера, мы имели на нём 100% занятость, а очередь всегда была ненулевая. Через 3-4 года пользователям приходилось ждать очереди по несколько часов.
То есть, чем больше мы наращивали мощности, тем больше появлялось задач, которые могли их потребить. К тому же всегда будут существовать задачи, для решения которых не хватает существующих мощностей. Увеличивая мощности, мы сталкиваемся с возникновением новых методов и задач, о которых мы раньше не задумывались. Какой смысл думать о них, если нет мощностей? Но как только появляются достаточные мощности, сразу происходит скачок в расчетах. И это относится не только к задачам физики и химии — самым ресурсоемким задачам, но и ко многим областям моделирования и прогнозирования.
Именно поэтому наращивать мощности суперкомпьютеров можно еще очень-очень долго. У этих систем многолетние перспективы. И альтернатив пока нет.
— А как насчет квантового компьютера?
— Эта область действительно интересная. Я думаю, у квантового компьютера достаточно хорошие перспективы. Есть множество задач, которые хорошо ложатся на квантовые вычисления. Сама идея квантовых вычислений развивается очень бурно. В принципе, даже на обычных суперкомпьютерах часто (пусть и медленно) моделируются квантовые задачи. Перспективы использования подобных алгоритмов широкие. Однако такие алгоритмы не очень частые. Речь идет об относительно небольшом классе задач, которые хорошо ложатся на квантовые вычисления. Когда квантовые компьютеры станут более производительными, а главное, более дешевыми для производства, они обязательно найдут свое применение в качестве ускорителей для определенного рода расчетов. Многие задачи будут считаться в тысячи раз быстрее.
— Последний вопрос, скорее, житейский. Как вы сейчас работаете в режиме самоизоляции? Есть ли какие-то сложности, с которыми вы столкнулись?
— Сложности, конечно же, есть. Но хочу заметить, что моя работа претерпела не такие большие изменения. Пользователи или администраторы суперкомпьютеров могут находиться в любой точки земного шара и работать через интернет. Это большой плюс. Но при возникновении неполадок приходится приезжать, чтобы поработать руками. К счастью, нам помогают наши инженеры, которые могут выполнять разные задачи. Тем не менее, 2-3 раза мне пришлось съездить на место самому.
— То есть у суперкомпьютера отпуска не бывает?
— Нет. Наш суперкомпьютер загружен так же, как и до режима самоизоляции. Пользователи не упускают возможности посчитать свои задачи. Нагрузка не снижается.
Фото предоставлено из личного архива спикера.