Операционная система суперкомпьютера — это операционная система , предназначенная для суперкомпьютеров . С конца 20-го века операционные системы суперкомпьютеров претерпели значительные изменения, поскольку в архитектуре суперкомпьютеров произошли фундаментальные изменения . [1] В то время как ранние операционные системы были индивидуально адаптированы для каждого суперкомпьютера для увеличения скорости, тенденция отходит от внутренних операционных систем и переходит к некоторой форме Linux , [2] при этом она работает на всех суперкомпьютерах в списке TOP500 в ноябре 2017 года. В 2021 году 10 лучших компьютеров работают, например, под управлением Red Hat Enterprise Linux (RHEL) или какой-либо его версии или другого дистрибутива Linux , например Ubuntu .
Учитывая, что современные суперкомпьютеры с массовым параллелизмом обычно разделяют вычисления от других служб, используя несколько типов узлов , они обычно используют разные операционные системы на разных узлах, например, используя небольшое и эффективное легковесное ядро , такое как Compute Node Kernel (CNK) или Compute Node Linux (CNL) на вычислительных узлах, но более крупную систему, такую как дистрибутив Linux, на серверах и узлах ввода-вывода (I/O). [3] [4]
В то время как в традиционной многопользовательской компьютерной системе планирование заданий фактически является проблемой распределения задач для ресурсов обработки и периферии, в системе с массовым параллелизмом система управления заданиями должна управлять распределением как вычислительных, так и коммуникационных ресурсов, а также изящно справляться с неизбежными сбоями оборудования при наличии десятков тысяч процессоров. [5]
Хотя большинство современных суперкомпьютеров используют операционную систему Linux, [6] каждый производитель внес свои собственные изменения в используемый им дистрибутив Linux, и не существует отраслевого стандарта, отчасти потому, что различия в аппаратной архитектуре требуют изменений для оптимизации операционной системы под каждую аппаратную конструкцию. [1] [7]
На заре суперкомпьютеров основные архитектурные концепции быстро развивались, и системное программное обеспечение должно было следовать за инновациями в области оборудования, которые обычно быстро менялись. [1] В ранних системах операционные системы были индивидуально адаптированы для каждого суперкомпьютера, чтобы набирать скорость, однако в спешке с их разработкой возникли серьезные проблемы с качеством программного обеспечения, и во многих случаях стоимость и сложность разработки системного программного обеспечения стали такой же проблемой, как и проблема аппаратного обеспечения. [1]
В 1980-х годах стоимость разработки программного обеспечения в Cray сравнялась с расходами на оборудование, и эта тенденция частично обусловила переход от внутренних операционных систем к адаптации универсального программного обеспечения. [2] Первая волна изменений в операционных системах пришлась на середину 1980-х годов, когда операционные системы, специфичные для вендоров, были заброшены в пользу Unix . Несмотря на ранний скептицизм, этот переход оказался успешным. [1] [2]
К началу 1990-х годов в программном обеспечении суперкомпьютерных систем произошли серьезные изменения. [1] К этому времени растущее использование Unix начало менять способ рассмотрения системного программного обеспечения. Использование языка высокого уровня ( C ) для реализации операционной системы и опора на стандартизированные интерфейсы контрастировали с подходами, ориентированными на язык ассемблера в прошлом. [1] По мере того, как поставщики оборудования адаптировали Unix к своим системам, в Unix добавлялись новые и полезные функции, например, быстрые файловые системы и настраиваемые планировщики процессов . [1] Однако все компании, которые адаптировали Unix, вносили в него уникальные изменения, а не сотрудничали над отраслевым стандартом для создания «Unix для суперкомпьютеров». Это было отчасти потому, что различия в их архитектурах требовали этих изменений для оптимизации Unix для каждой архитектуры. [1]
По мере того, как операционные системы общего назначения становились стабильными, суперкомпьютеры начали заимствовать и адаптировать критический системный код из них и полагаться на богатый набор вторичных функций, которые были с ними. [1] Однако в то же время размер кода для операционных систем общего назначения быстро рос. К тому времени, когда код на основе Unix достиг длины 500 000 строк, его обслуживание и использование стали проблемой. [1] Это привело к переходу на использование микроядер , которые использовали минимальный набор функций операционной системы. Такие системы, как Mach в Университете Карнеги-Меллона и ChorusOS в INRIA, были примерами ранних микроядер. [1]
Разделение операционной системы на отдельные компоненты стало необходимым, поскольку суперкомпьютеры разработали различные типы узлов, например, вычислительные узлы против узлов ввода-вывода. Таким образом, современные суперкомпьютеры обычно используют различные операционные системы на разных узлах, например, используя небольшое и эффективное легковесное ядро, такое как CNK или CNL, на вычислительных узлах, но более крупную систему, такую как производная Linux , на серверах и узлах ввода-вывода. [3] [4]
CDC 6600 , который обычно считается первым суперкомпьютером в мире, работал под управлением операционной системы Chippewa , которая затем была развернута на различных других компьютерах серии CDC 6000. [9] Chippewa была довольно простой системой, ориентированной на управление заданиями, производной от более ранней CDC 3000 , но она оказала влияние на более поздние системы KRONOS и SCOPE . [9] [10]
Первый Cray-1 был доставлен в Лос-Аламосскую лабораторию без операционной системы или какого-либо другого программного обеспечения. [11] В Лос-Аламосе для него было разработано прикладное программное обеспечение и операционная система. [11] Основная система разделения времени для Cray 1, Cray Time Sharing System (CTSS), была затем разработана в Ливерморской лаборатории как прямой потомок Livermore Time Sharing System (LTSS) для операционной системы CDC 6600 двадцатилетней давности. [11]
При разработке суперкомпьютеров рост затрат на программное обеспечение вскоре стал доминирующим фактором, о чем свидетельствует тот факт, что в 1980-х годах стоимость разработки программного обеспечения в Cray выросла до уровня стоимости оборудования. [2] Эта тенденция частично обусловила переход от собственной операционной системы Cray к системе UNICOS на основе Unix . [2] В 1985 году Cray-2 стала первой системой, поставляемой с операционной системой UNICOS. [12]
Примерно в то же время ETA Systems разработала операционную систему EOS для использования в своих суперкомпьютерах ETA10 . [13] Написанная на Cybil , языке, похожем на Pascal, от Control Data Corporation , EOS выдвинула на первый план проблемы стабильности при разработке стабильных операционных систем для суперкомпьютеров, и в конечном итоге на той же машине была предложена Unix-подобная система. [13] [14] Уроки, извлеченные из разработки системного программного обеспечения ETA, включали высокий уровень риска, связанный с разработкой новой операционной системы для суперкомпьютера, и преимущества использования Unix с его большой существующей базой библиотек системного программного обеспечения. [13]
К середине 1990-х годов, несмотря на существовавшие инвестиции в старые операционные системы, тенденция была направлена на использование систем на основе Unix, которые также способствовали использованию интерактивных графических пользовательских интерфейсов (GUI) для научных вычислений на нескольких платформах. [15] Движение к потребительской ОС имело противников, которые ссылались на быстрый темп и направленность разработки Linux как на основное препятствие для принятия. [16] Как написал один автор, «Linux, скорее всего, догонит, но у нас уже есть крупномасштабные системы». Тем не менее, эта тенденция продолжала набирать обороты, и к 2005 году практически все суперкомпьютеры использовали некоторые Unix-подобные ОС. [17] Эти варианты Unix включали IBM AIX , систему Linux с открытым исходным кодом и другие адаптации, такие как UNICOS от Cray. [17] К концу 20-го века Linux, как предполагалось, занимал самую большую долю пирога суперкомпьютеров. [1] [18]
Суперкомпьютер IBM Blue Gene использует операционную систему CNK на вычислительных узлах, но использует модифицированное ядро на основе Linux, называемое I/O Node Kernel ( INK ) на узлах ввода-вывода. [3] [19] CNK — это легковесное ядро , которое работает на каждом узле и поддерживает одно приложение, запущенное для одного пользователя на этом узле. Ради эффективной работы дизайн CNK был сохранен простым и минимальным, с физической памятью, статически отображаемой, и CNK не нуждается и не обеспечивает планирование или переключение контекста. [3] CNK даже не реализует файловый ввод-вывод на вычислительном узле, а делегирует это выделенным узлам ввода-вывода. [19] Однако, учитывая, что на Blue Gene несколько вычислительных узлов совместно используют один узел ввода-вывода, операционная система узла ввода-вывода требует многозадачности, отсюда и выбор операционной системы на основе Linux. [3] [19]
В то время как в традиционных многопользовательских компьютерных системах и ранних суперкомпьютерах планирование заданий было по сути проблемой планирования задач для обработки и периферийных ресурсов, в массивно-параллельной системе система управления заданиями должна управлять распределением как вычислительных, так и коммуникационных ресурсов. [5] Важно настроить планирование задач и операционную систему в различных конфигурациях суперкомпьютера. Типичный параллельный планировщик заданий имеет главный планировщик , который инструктирует некоторое количество подчиненных планировщиков запускать, контролировать и управлять параллельными заданиями и периодически получает от них отчеты о состоянии выполнения заданий. [5]
Некоторые, но не все планировщики суперкомпьютеров пытаются поддерживать локальность выполнения заданий. Планировщик PBS Pro, используемый в системах Cray XT3 и Cray XT4, не пытается оптимизировать локальность на своем трехмерном торическом соединении , а просто использует первый доступный процессор. [20] С другой стороны, планировщик IBM на суперкомпьютерах Blue Gene стремится использовать локальность и минимизировать сетевое соперничество, назначая задачи из одного и того же приложения на одну или несколько средних плоскостей группы узлов 8x8x8. [20] Планировщик Slurm Workload Manager использует алгоритм наилучшего соответствия и выполняет планирование кривой Гильберта для оптимизации локальности назначений задач. [20] Несколько современных суперкомпьютеров, таких как Tianhe-2, используют Slurm, который разрешает конфликты за ресурсы во всей системе. Slurm — это открытый исходный код , работающий на базе Linux, очень масштабируемый и способный управлять тысячами узлов в компьютерном кластере с постоянной пропускной способностью более 100 000 заданий в час. [21] [22]
{{cite web}}
: CS1 maint: несколько имен: список авторов ( ссылка )