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


14

Я багато шукав в Інтернеті і не зміг знайти точну відповідь.

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

Більшість дистрибутивів використовує двійкові резервні копії (debian тощо).

Перше питання: Скільки збільшення швидкості можна очікувати від складеного пакета? Скільки збільшення швидкості я можу отримати від реальних пакетів, таких як apache або mysql? тобто запити в секунду?

Друге питання: чи означає, що двійковий пакет не використовує жодних інструкцій процесора, що були введені після першого 64-розрядного процесора AMD? Чи означає, що для 32-бітових пакетів цей пакет працює на 386 і в основному не використовує більшість сучасних інструкцій процесора?

Додаткова інформація:

  • Я говорю не про робочий стіл, а про серверне середовище.
  • Мене не хвилює час компіляції
  • У мене більше серверів, тому збільшення швидкості більш ніж на 15% варто використовувати пакети вихідного коду
  • Будь ласка, не полум'я.

1
Просто для виправлення помилкового припущення: FreeBSD приходить як з деревом портів (джерело), ​​так і з бінарними пакетами. Дивіться man (1) pkg_addі ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/.
Геннес

Відповіді:


7

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

  • Розгортання власних власних виправлень
  • Налаштування ядра легко
  • Упаковка власних оновлень

Якщо ви не робите жодної з цих речей, вам не потрібен розподіл джерела. Для особистого використання вони дуже зручні, оскільки дозволяють поступово оновлювати речі за бажанням, не переймаючись надто бінарною сумісністю, що не є проблемою, яку я часто бачу в умовах підприємства.

Варто зазначити, що ви можете робити ці речі і з бінарним розподілом, виготовляючи власні пакети RPM або будь-що інше. Аналогічні витрати управління.

У основному ви не побачите 15% збільшення швидкості, компілюючи з джерела. Мені буде не шкода оцінювати це навіть у 5% у будь-якому розумному випадку. Якщо скласти з джерела, ви отримаєте кілька речей:

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

Однак компілятор дуже рідко насправді генерує їх, і загальна економія від їх використання, як правило, дуже мізерна, коли продуктивність програми сприймається в цілому. Такі речі, як доступ до оперативної пам’яті (та затримка), а також затримка диска та пристрою - набагато більші фактори, і вам слід справді починати з цього місця.

Програми, які можуть скористатися спеціальною компіляцією, яка працюватиме лише на порівняно недавньому ядрі Intel i7 або i5, включають такі, які роблять багато векторної математики, і такі, які виконують багато шифрування та дешифрування AES або вимагають багато випадкових чисел. Якщо ви хочете використовувати Intel DRBG, вам також потрібно це зробити.

Якщо жодне з них не стосується вас, ви будете дуже задоволені будь-яким дистрибутивом на основі debian або червоного капелюха там, і вам доведеться набагато менше витрат на обслуговування.


9

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

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

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

Якщо ви перебуваєте в точці, коли ефективність стеків популярних програм (LAMP) є проблемою, будь ласка, не забудьте оптимізувати обладнання вашого сервера (тип процесора, розташування оперативної пам’яті), мережеву інфраструктуру, систему моніторингу та мати змогу визначити вузькі місця системи раніше спускаючись цією стежкою.

Ви вражаючи обмеження продуктивності в даний час ?


5

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

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

Надалі, якщо графітна інфраструктура GCC коли-небудь стабілізується, це матиме потенціал для ще більших вигод.


Анекдот на підтвердження цієї відповіді: деякі орієнтири, з якими я працював разом з Каїром та Піксманом, складеними -march=nativeна процесорі Skylake (клієнт), були на 5-20% швидшими, ніж бінарний дистрибутив. (Ці пакети, мабуть, відносно легко для компіляторів, щоб автоматично векторизувати.) -fno-semantic-interpositionЩе один хороший прапор для спробу, як це є -falign-functions.
ZachB

4

Це залежить від того, що ви хочете у вашій системі, і дійсно тут є три школи думки (і це справедливо як для апаратного, так і для програмного забезпечення)

По-перше, мейнстрім, наскільки йде більшість людей на SF - ви хочете, щоб те, що ви знаєте , спрацювало, вам потрібна підтримка, і ви цього хочете зараз . У цьому випадку, працюючи з системами на основі redhat (RHEL надає вам чудову підтримку, а centos - це відновлення добре перевіреного розподілу RHEL у громаді). Однак ви не отримаєте останнього та найкращого. У багатьох випадках це стосується і обладнання.

Друга - точка зору "середина дороги", яка є серединою - це щось із схожим на ubuntu. Ви хочете нових пакетів (за невеликої вартості абсолютно міцної стійкості), вам потрібен інсталятор і приємні речі .

У деяких випадках люди можуть зіткнутися з проблемою, але у вас є новіші пакети, і речі проходять перевірку . Хоча тут багато ненависті до Ubuntu, це хороший компроміс між простотою налаштування та досить новими пакетами. Debian, мабуть, є дещо більш консервативним вибором. У ці дні ви навіть можете встановити Ubuntu з ядром із низькою затримкою поза коробкою. Я схильний відчувати, що для мене працюють ubuntu та debian, але ymmv. Дуже багато місць, на яких розміщено багато серверів, таких як facebook та google.

Нарешті, є джерела розподілу. Початкова установка в більшості випадків - це сильний біль в тилу. Ви помилилися з налаштуванням свого ядра? На жаль, витратьте кілька годин на перекомпіляцію. Ви також не отримаєте інсталятора - ось для n00bs. Ви часто отримуєте кровоточиві крайові програми та можливість компілювати їх у міру необхідності (що включає можливість вибору оптимізації для швидкості та використання пам’яті, наприклад) та постійний випуск. Якщо у вас дуже специфічні, езотеричні потреби, gentoo чудово. Якщо вам потрібно розгорнути кілька десятків систем і хочете автоматизувати це… удачі. Розподіл на основі джерел також не змінюється. Ви отримуєте велику гнучкість, * деяку ** додаткову швидкість, але не ремонтопридатність на тому ж рівні, що і пакетне ІМО розподілу на основі пакета. Ти нішвидше за все, ви отримаєте 15% додаткової швидкості, і ви, швидше за все, витратите час, намагаючись налаштувати прапор компіляції для свого обладнання, і якщо щось зіпсуєте, витратите час на розробку того, що саме не вдалося.

введіть тут опис зображення

BSD - це окреме сімейство ОС. Деякі народні клянуться ними (принаймні один номер комітету регулярно є користувачем freebsd), а різні BSD мають різні фокуси - наприклад, openbsd є захопленим безпекою, а freebsd - "мейнстрімом". Вони можуть не мати, в деяких випадках мають однаковий апаратний апарат, який працює Linux, але це залежить від досить багатьох факторів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.