Назад | Перейти на главную страницу

Разница в производительности между скомпилированными и бинарными дистрибутивами / пакетами linux

Я много искал в Интернете и не мог найти точного ответа.

Есть дистрибутивы, такие как Gentoo (или FreeBSD), которые не поставляются с двоичными файлами, а только с исходным кодом для пакетов (портов).

В большинстве дистрибутивов используются бинарные резервные копии (debian и т.

Первый вопрос: насколько я могу ожидать увеличения скорости от скомпилированного пакета? Насколько я могу увеличить скорость при использовании реальных пакетов, таких как apache или mysql? т.е. запросов в секунду?

Второй вопрос: означает ли двоичный пакет, что он не использует никаких инструкций процессора, которые были введены после первого 64-битного процессора AMD? Означает ли это, что с 32-битными пакетами пакет будет работать на 386 и в основном не использует большинство современных инструкций ЦП?

Дополнительная информация:

Краткий ответ ... Многие крупномасштабные приложения, чувствительные к скорости / задержкам, работают в стандартных дистрибутивах Linux. Red Hat, CentOS, Debian, Ubuntu ... Все они хорошо работают в большинстве случаев. Наибольшая выгода достигается за счет настройки приложений, стандартной оптимизации ядра и ОС, а также инфраструктуры.

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

Я управлял серверами на базе Gentoo в условиях частой финансовой торговли. Несмотря на то, что в Gentoo было небольшое улучшение производительности, я все же перешел на Red Hat и CentOS. Преимущества Gentoo на бумаге были легко преодолены за счет более разумного выбора оборудования, лучшей поддержки производителя серверов и интеграции оборудования, более разумного исправления инженерами Red Hat и более эзотерических технологий, таких как обход ядра...

Если вы находитесь в точке, где эффективность популярных стеков приложений (LAMP) является проблемой, убедитесь, что вы оптимизировали оборудование вашего сервера (тип ЦП, расположение ОЗУ), сетевую инфраструктуру, систему мониторинга и сможете определить узкие места системы до иду по этому пути.

Вы достигли ограничения производительности сейчас?

Разница в производительности почти во всех случаях будет минимальной и бесполезной. Веские причины использовать исходные дистрибутивы (при развертывании собственных двоичных пакетов, как позволяет система bindist gentoo) включают:

  • Развертывание собственных патчей
  • Простая настройка ядра
  • Упаковка собственных обновлений

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

Стоит отметить, что вы можете делать это и с двоичным дистрибутивом, создавая свои собственные пакеты RPM или что-то еще. Накладные расходы на управление аналогичны.

Вы практически не увидите увеличения скорости на 15% при компиляции из исходников. Я бы не хотел оценивать его даже в 5% в любом разумном случае. Компиляция из исходников дает вам пару вещей:

  • Вы можете использовать предпочитаемую версию компилятора
  • Вы можете указать компилятору генерировать инструкции из расширений ISA, не используемых в пакетах двоичных дистрибутивов, таких как AESNI и AVX.

Однако компилятор в любом случае действительно очень редко их генерирует, и общая экономия от их использования, как правило, очень мала, если рассматривать производительность приложения в целом. Такие вещи, как доступ к ОЗУ (и задержка), а также задержка диска и устройства, являются гораздо более важными факторами, и вам действительно стоит начать с этого.

Приложения, которые мощь Воспользуйтесь настраиваемой компиляцией, которая будет работать только на относительно недавних процессорах Intel Core i7 или i5, включая те, которые выполняют много векторных вычислений, и те, которые выполняют много шифрования и дешифрования AES или требуют большого количества случайных чисел. Если вы хотите использовать Intel DRBG, вам нужно сделать это в настоящее время.

Если ни один из них не подходит к вам, вы будете вполне довольны любым из имеющихся дистрибутивов на основе Debian или Red Hat, и у вас будет намного меньше накладных расходов на обслуживание.

Конечно, все высказанные замечания верны. Я просто хотел бы затронуть идею о том, что увеличение производительности на 5% -15% недостижимо, особенно с современными версиями GCC, это действительно зависит от архитектуры процессора и того, насколько она близка к базовой линии, используемой в качестве цели. для бинарных дистрибутивов. GCCs -march = native будет, помимо использования расширений ISA, также оптимизировать для размеров кэша / строк L1 и L2. Правильно выровненный код (для вашего процессора) может быть намного быстрее, особенно когда также используется -flto, чтобы компилятор мог знать все, что ему нужно учесть. [к сожалению, некоторые пакеты не работают с LTO]

Кроме того, компиляция выбранных пакетов с -Ofast в дополнение к march = native и LTO может иметь большое значение.

В будущем, если инфраструктура GCC Graphite когда-нибудь стабилизируется, это может принести еще большую прибыль.

Это зависит от того, что вы хотите в своей системе, и на самом деле здесь есть три точки зрения (и это верно как для оборудования, так и для программного обеспечения)

Во-первых, мейнстрим для большинства людей в научной фантастике - вам нужно что-то, что вы знаете воля работа, ты хочешь служба поддержки и ты этого хочешь сейчас. В этом случае переход на системы на основе redhat (RHEL предоставляет вам отличную поддержку, а centos - это перестроенная сообществом хорошо протестированная версия RHEL). Однако вы не получите новейшего и самого лучшего. Во многих случаях это относится и к оборудованию.

Вторая точка зрения - это «середина пути», то есть золотая середина - работа с чем-то вроде ubuntu. Вам нужны новые пакеты (за небольшую плату за абсолютную стабильность), вам нужен установщик и Хорошие вещи.

В некоторых случаях люди действительно сталкиваются с проблемами, но у вас есть более новые пакеты, и что-то разумно проверенный. Хотя здесь очень много ненависти к Ubuntu, это хороший компромисс между простотой установки и достаточно новыми пакетами. Вероятно, Debian - немного более консервативный выбор. В наши дни вы даже можете настроить Ubuntu с ядром с низкой задержкой прямо из коробки. Мне кажется, что ubuntu и debian работают на меня, но ymmv. Многие места, где развернут много серверов, таких как facebook и google, выбирают этот вариант.

Наконец, есть дистрибутивы на основе исходного кода. Первоначальная установка в большинстве случаев вызывает сильную боль в задней части. Вы ошиблись при настройке ядра? Ой, потратьте несколько часов на перекомпиляцию. У вас тоже нет установщика - это для n00bs. Вы часто получаете передовые приложения и возможность компилировать их по мере необходимости (что включает в себя возможность выбирать оптимизацию для скорости или использования памяти, например) и скользящий выпуск. Если у вас очень специфические, эзотерические потребности, gentoo отлично подойдет. Если вам нужно развернуть несколько десятков систем и вы хотите автоматизировать это ... удачи. Распределения на основе исходного кода просто не масштабируются. Вы получаете большую гибкость, * некоторую ** дополнительную скорость, но не ремонтопригодность на том же уровне, что и при распространении IMO на основе пакетов. Вы не вероятно, вы получите на 15% больше скорости, и вы, вероятно, в конечном итоге потратите время, пытаясь настроить флаг компиляции для вашего оборудования, а если вы что-то напутаете, потратите время на выяснение того, что именно не смогли.

BSD - это отдельный семья операционных систем. Некоторые люди их поддерживают (по крайней мере, один из постоянных пользователей коммуникационной комнаты является пользователем freebsd), и разные BSD имеют разные цели - например, openbsd одержим безопасностью, а freebsd является «основным». В некоторых случаях они могут не иметь такой же аппаратной поддержки, как Linux, но это зависит от многих факторов.