Я заменил стандартные ядра Linux на версии Rust, и это на удивление быстро.

Я заменил стандартные ядра Linux на версии Rust, и это на удивление быстро.


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

GNU coreutils настолько просты, насколько это возможно в Linux, и они кажутся нетронутыми. Но как только я понял, что надежность не всегда означает оптимальность, особенно на современном оборудовании, я понял, что пришло время попробовать что-то другое. Итак, моей следующей остановкой стала uutils, повторная реализация GNU coreutils на Rust. Я начал с замены одной команды, затем другой, и зачастую утилиты работали быстрее. Если вы проводите много времени в терминале, стоит попробовать.

Трение, которое вы перестали замечать, скрывалось на виду

«Намного быстрее» звучит быстрее, пока не сравнишь

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

На современных устройствах легко увидеть, насколько устарели эти предположения. Эти машины оснащены чрезвычайно быстрыми дисками NVMe, а ядра ЦП обычно недостаточно используются обычным пользовательским инструментом. Однако, поскольку мы до сих пор используем множество инструментов из разных эпох аппаратного обеспечения, они, как правило, однопоточные и консервативные. Большинство барьеров, с помощью которых они были созданы, больше не существуют.

Никто не тестирует и не подвергает сомнению основные утилиты, потому что они всегда работают. Фактически, когда мы хотим повысить производительность, мы корректируем наши сигналы и модифицируем ядро. Но сравнение выходов рядом показало мне, что проблема в устройстве.

Как uutils/coreutils ведут себя по-разному под нагрузкой

Я заменил стандартные ядра Linux на версии Rust, и это на удивление быстро.
Афам Онимаду/МУО

Благодаря многолетним усилиям и сотням участников, Utils стремится к почти полной совместимости с GNU. Он перестраивает инструменты в Rust, и новые дистрибутивы, такие как Ubuntu 25.10, теперь поставляются с ним по умолчанию.

Первый заказ, который действительно привлек мое внимание, был сортировать. Для файла журнала размером 100 МБ GNU Sort потребовалось 2,819 секунды реального времени (10,204 секунды пользовательского процессорного времени), в то время как реализация Rust выполнила ту же задачу за 0,092 секунды реального времени. Добро пожаловать На многих больших бревнах команда чувствовала себя быстрее. Массовое копирование нескольких небольших файлов показало существенную разницу в скорости, которую следует заметить. Каждая команда, которую я пробовал, была недостаточно быстрой, но у меня было достаточно, чтобы продолжать их заменять.

Реактивность – вот что вышло на первый план. Впервые я почувствовал, что заказы выполнены, хотя я этого и ожидал. Это становится существенной разницей при отладке, если вы выполняете быстрые итерации или объединяете инструменты в конвейеры.

Некоторые инструменты работают на одном уровне, а некоторые крайние случаи лучше подходят для зрелых оптимизаций GNU. Но разница в том, что реализация Rust кажется более подходящей для современного многоядерного оборудования.

Разница в безопасности и стабильности, которую вы видите, когда переживаете по этому поводу

Почему современный рерайтинг меняет не только скорость?

coreutils и утилиты
Афам Онимаду/МУО

Хотя мне нравилась скорость, меня побудила использовать эти инструменты последовательность. Модель безопасности памяти Rust предотвращает весь спектр ошибок, распространенных в инструментах на основе C — переполнение буфера, использование после освобождения, разыменование указателя void — без необходимости использования ручных средств защиты. Даже если вы не можете увидеть их напрямую, предсказуемость является важным элементом, если вы вводите большие объемы входных данных в инструмент командной строки.

Я наблюдал в целом чистое поведение, включая очевидные ошибки и предсказуемые сбои при работе с большими наборами данных, искаженный текст или необычные шаблоны ввода. Например, передача искаженного текста UTF-8 в уу-вырезать Сразу же была отображена очевидная ошибка, а GNU Cut выдал неожиданный результат. Это не означает, что GNU coreutils нестабильны, но еще более обнадеживает наличие встроенного базового инструмента с современными гарантиями безопасности с самого начала.

Utils также поддерживает обширную культуру тестирования, которая включает непрерывную интеграцию всего набора инструментов. Это ключевой фактор, который приводит к уверенности, если вы в значительной степени полагаетесь на сценарии и автоматизацию.

Изменение основных утилит системы кажется безрассудным — это не так.

Как безопасно тестировать утилиты, не трогая базовую систему

временное изменение пути
Афам Онимаду/МУО

GNU coreutils кажется одним из компонентов Linux, у которого сейчас есть лучшие современные альтернативы. Вы можете подумать, что менять это опасно, но это только потому, что вы не понимаете, насколько это обратимо. При установке uutils ничего не перезаписывается, поскольку оно установлено по умолчанию. уу- Префикс. Так, например, у вас есть uu-сортировка И уу-лс. Вы можете сравнить обе версии бок о бок. Это форма A/B-тестирования команд.

Вы даже можете пойти еще дальше, временно изменив PATH. Таким образом, вам не нужно удалять какие-либо файлы GNU, прежде чем устанавливать приоритет двоичных файлов Rust. Просто вернув PATH, вы вернетесь к исходной настройке.

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

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

Я не думаю, что всем следует немедленно переходить на GNU. Однако, что еще более важно, этот уровень Linux, который мы никогда не подвергаем сомнению, не заморожен. Любая команда, которую вы используете каждый день, не является священной. Реальность такова, что, поменяв их местами, вы сможете сэкономить несколько минут в день и работать более продуктивно.

MacBook и ноутбук Dell под управлением ZorinOS рядом друг с другом

Извините, фанаты Linux: эта ОС на самом деле является лучшей заменой Windows.

Не Линукс, не Винда. что-то лучше.

Leave a Reply

Your email address will not be published. Required fields are marked *