Техника значительно повышает скорость работы программ, работающих в оболочке Unix

Прочитано: 264 раз(а)


Исследователи первыми разработали метод, который может значительно ускорить определенные типы компьютерных программ автоматически, обеспечивая при этом точность результатов программы.

Их система повышает скорость работы программ, работающих в оболочке Unix, вездесущей среде программирования, созданной 50 лет назад и широко используемой до сих пор. Их метод распараллеливает эти программы, что означает, что он разбивает программные компоненты на части, которые можно запускать одновременно на нескольких компьютерных процессорах.

Это позволяет программам выполнять такие задачи, как веб-индексирование, обработка естественного языка или анализ данных, в несколько раз быстрее, чем их исходное время выполнения.

«Есть так много людей, которые используют такие типы программ, как специалисты по данным, биологи, инженеры и экономисты. Теперь они могут автоматически ускорять свои программы, не опасаясь, что получат неправильные результаты», — говорит Никос Василакис, научный сотрудник Computer. Лаборатория науки и искусственного интеллекта (CSAIL) Массачусетского технологического института.

Система также упрощает жизнь программистам, разрабатывающим инструменты, которые используют специалисты по данным, биологи, инженеры и другие специалисты. Им не нужно вносить какие-либо специальные коррективы в свои программные команды, чтобы включить это автоматическое, безошибочное распараллеливание, добавляет Василакис, который возглавляет комитет исследователей со всего мира, которые работают над этой системой почти два года.

Василакис является старшим автором последней исследовательской работы группы, в которой участвует соавтор Массачусетского технологического института и аспирант CSAIL Таммам Мустафа, и она будет представлена ​​на симпозиуме USENIX по проектированию и внедрению операционных систем. Среди соавторов ведущий автор Константинос Каллас, аспирант Пенсильванского университета; Ян Беляк, ученик варшавской средней школы им. Сташича; Димитрис Карникис, инженер-программист Aarno Labs; Тёрстон Х.И. Данг, бывший постдоктор Массачусетского технологического института, ныне инженер-программист в Google; и Майкл Гринберг, доцент компьютерных наук в Технологическом институте Стивенса.

Проблема десятилетней давности

Эта новая система, известная как PaSh, фокусируется на программах или сценариях, которые выполняются в оболочке Unix. Скрипт — это последовательность команд, которая дает указание компьютеру выполнить расчет. Корректное и автоматическое распараллеливание сценариев оболочки — сложная проблема, над которой исследователи боролись десятилетиями.

Оболочка Unix остается популярной отчасти потому, что это единственная среда программирования, позволяющая составлять один сценарий из функций, написанных на нескольких языках программирования . Различные языки программирования лучше подходят для конкретных задач или типов данных; если разработчик использует правильный язык, решение проблемы может быть намного проще.

«Людям также нравится разрабатывать на разных языках программирования, поэтому объединение всех этих компонентов в одну программу происходит очень часто», — добавляет Василакис.

Хотя оболочка Unix позволяет использовать многоязычные сценарии, ее гибкая и динамичная структура затрудняет распараллеливание этих сценариев традиционными методами.

Распараллелить программу обычно сложно, потому что одни части программы зависят от других. Это определяет порядок, в котором должны запускаться компоненты; получить неправильный порядок, и программа не работает.

Когда программа написана на одном языке, у разработчиков есть явная информация о ее функциях и языке, которая помогает им определить, какие компоненты можно распараллелить. Но эти инструменты не существуют для сценариев в оболочке Unix. Пользователи не могут легко увидеть, что происходит внутри компонентов, или извлечь информацию, которая может помочь в распараллеливании.

Своевременное решение

Чтобы преодолеть эту проблему, PaSh использует этап предварительной обработки, который вставляет простые аннотации в программные компоненты, которые, по его мнению, могут быть распараллелены. Затем PaSh пытается распараллелить эти части скрипта во время работы программы, в тот самый момент, когда она достигает каждого компонента.

Это позволяет избежать другой проблемы в программировании оболочки — невозможно заранее предсказать поведение программы.

Распараллеливая программные компоненты «как раз вовремя», система избегает этой проблемы. Он способен эффективно ускорить намного больше компонентов, чем традиционные методы, пытающиеся выполнить распараллеливание заранее.

Своевременное распараллеливание также гарантирует, что ускоренная программа по-прежнему будет возвращать точные результаты. Если PaSh достигает компонента программы, который не может быть распараллелен (возможно, он зависит от компонента, который еще не запущен), он просто запускает исходную версию и не вызывает ошибки.

«Независимо от преимуществ в производительности — если вы обещаете, что что-то будет работать за секунду, а не за год, — если есть шанс вернуть неправильные результаты, никто не будет использовать ваш метод», — говорит Василакис.

Пользователям не нужно вносить никаких изменений для использования PaSh; они могут просто добавить инструмент в свою существующую оболочку Unix и указать своим сценариям использовать его.

Ускорение и точность

Исследователи протестировали ПаШ на сотнях скриптов, от классических до современных программ, и ни один не сломался. Система могла запускать программы в среднем в шесть раз быстрее по сравнению с непараллельными сценариями, а максимальное ускорение было достигнуто почти в 34 раза.

Это также повысило скорость сценариев, которые другие подходы не могли распараллелить.

«Наша система является первой, которая демонстрирует полностью правильное преобразование такого типа, но у нее есть и косвенное преимущество. То, как устроена наша система, позволяет другим исследователям и пользователям в промышленности опираться на эту работу», — говорит Василакис.

Он рад получить дополнительную обратную связь от пользователей и увидеть, как они улучшают систему. Проект с открытым исходным кодом присоединился к Linux Foundation в прошлом году, что сделало его широко доступным для пользователей в промышленности и научных кругах.

Двигаясь вперед, Василакис хочет использовать PaSh для решения проблемы распространения — разделения программы для запуска на многих компьютерах, а не на нескольких процессорах на одном компьютере. Он также стремится улучшить схему аннотаций, чтобы она стала более удобной для пользователя и могла лучше описывать сложные компоненты программы.

«Сценарии оболочки Unix играют ключевую роль в задачах анализа данных и разработки программного обеспечения. Эти сценарии могут работать быстрее, заставляя различные программы, которые они вызывают, использовать несколько процессорных блоков, доступных в современных ЦП. Однако динамическая природа оболочки затрудняет разработку параллельных планы выполнения заранее», — говорит Диомидис Спинеллис, профессор разработки программного обеспечения в Афинском университете экономики и бизнеса и профессор аналитики программного обеспечения в Делфтском техническом университете, который не участвовал в этом исследовании. «Благодаря своевременному анализу PaSh-JIT преуспевает в преодолении динамической сложности оболочки и, таким образом, сокращает время выполнения скрипта, сохраняя при этом правильность соответствующих результатов».

«В качестве простой замены обычной оболочке, которая координирует шаги, но не переупорядочивает и не разделяет их, PaSh предоставляет простой способ повысить производительность задач по обработке больших данных», — добавляет Дуглас Макилрой, адъюнкт-профессор в Департамент компьютерных наук в Дартмутском колледже, который ранее возглавлял отдел исследований вычислительных технологий в Bell Laboratories (где родилась операционная система Unix). «Ручная оптимизация для использования параллелизма должна выполняться на уровне, для которого обычные языки программирования (включая оболочки) не предлагают чистых абстракций. Получающийся код смешивает вопросы логики и эффективности. Его трудно читать и трудно поддерживать перед лицом растущие требования. PaSh умело вступает в дело на этом уровне.

Техника значительно повышает скорость работы программ, работающих в оболочке Unix



Новости партнеров