- 1. Купуйте SSD, якщо у вас його ще немає
- 2. Таблиця розділів
- 3. Використовуйте 64-бітове ядро
- 4. Використовуйте патсет pf-kernel
- 5. тюнінг ядро!
- 6. Prelink
- 7. Висновок
У цій статті я хочу поділитися майже 10-річним досвідом використання Linux на домашньому комп'ютері. За цей час я провів багато експериментів над ядром, випробував різні конфігурації для різних застосувань і тепер хочу все це систематизувати в довгий пост з рекомендаціями як вичавити з linux максимум і домогтися відмінної продуктивності, без необхідності купувати потужне залізо.
1. Купуйте SSD, якщо у вас його ще немає
Чомусь багато людей скептично ставляться до SSD, хоча це перший і найважливіший компонент комп'ютера, який збирається швидко працювати.
Будь-який, навіть самий дешевий SSD, скоротить час запуску більшості програм до 0, що, візуально, буде дуже помітно. Майже в будь-якому комп'ютері (і сервері) головне гальмо це завжди дискова підсистема і ніякої HDD ніколи не дасть вам потрібної швидкості пошуку (яка у SSD прагне до 0 мс). За весь час спілкування з комп'ютерами і їх апгрейда, тільки перехід на SSD дав значний приріст в швидкості роботи і відгуку. Пам'ятайте як повільно працюють дискети, яке у них велике час пошуку? Приблизно ось так сприймається жорсткий диск після SSD.
Так що якщо у вас ще немає SSD, то продовжувати далі сенсу немає, ваш комп'ютер (хоч навіть оснащений 12-ядерним Xeon'ом) все одно буде працювати повільно, так що вперед за покупками.
Відносно надійності: є міф що SSD вмирають через рік. Його народженню ми зобов'язані першим SSD на бажних чіпах SandForce. Природно, будь-який новий SSD з магазину як мінімум надійніше і довговічніше сучасних жорстких дисків, так що не варто турбуватися з цього приводу взагалі. Свій SSD я купив 2 роки тому б / у, на той час він був у використанні рік. Зараз у нього 11 681 годин напрацювання і використання ресурсу 10%, так що при тому ж режимі використання, мені його вистачить ще на 27 років. Думаю, до цього часу технології зберігання даних вже кілька разів зміняться. Так що повторюся, проблеми з надійністю більш ніж надумані.
В Ubuntu 14.04 SSD працюють з коробки, опція discard автоматом прописується в fstab, окрім цього більше нічого не потрібно робити.
В інших дистрибутивах потрібно перевіряти, чи є ця опція у розділів на SSD. Варто згадати, що цю опцію підтримує тільки ext4. Для інших ФС доведеться користуватися fstrim з планувальника.
2. Таблиця розділів
Чи не ділите диски на розділи.
Для домашнього комп'ютера це безглуздо і шкідливо. На SSD у вас повинен бути один розділ для кореня, там у вас буде зберігається система і всі дані. На HDD (якщо потрібний) у вас повинен бути один розділ з точкою монтування в / mnt (у мене / mnt / data), де будуть зберігається великі маловикористовувані дані (фільми, музика, ігри). НЕ ПОТРІБНО робити HDD точкою монтування / home, так як в / home 99% програм зберігає свої дані і постійно до них звертається, тому / home повинен бути на SSD.
Не слухайте шкідливих порад щодо винесення таких даних на HDD, як уже було сказано проблеми зносу SSD немає, це міф, і велике число циклів запису взагалі не впливає на довговічність SSD. Ще раз відсилаю до стате Вадима Стеркиной, там це все описано більш детально і підкріплено поясненнями.
Щодо SWAP-розділу: він вам не потрібен. Якщо у вас не вистачає оперативної пам'яті, то OOM-killer буде прибивати ресурсомісткі програми, якщо це відбувається щось докупити оперативки, благо її ціна не сильно кусається. Використання swap як розширювача оперативної пам'яті значно уповільнює роботу комп'ютера. Є багато думок, що без SWAP будуть якісь проблеми, але я гадаю, коріння ці розмов ростуть від Win9x і на сьогодні це вже міфи, особисто я не помічав ніяких проблем від відмови від SWAP. Як пруф: на VPS зараз рідко побачиш підключений SWAP і працюють же якось!
suspend-to-disk вам теж не потрібний, тому що холодний старт з SSD швидше ніж відновлення зі сплячки з HDD, так що користуйтеся suspend-to-ram або вимикайте комп'ютер повністю. Єдиний плюс від Свапи - можливість піти в гібридну сплячку, це коли система готується до suspend-to-disk, але виконує suspend-to-ram, так що пізніше, якщо все добре, йде простий вихід зі сплячки, а якщо стався збій харчування - то система відновиться з диска.
Я використовую всюди файлову систему ext4, так як з іншими мені не вдалося отримати помітної різниці в продуктивності, а ext4 найбільш поширена, плюс є утиліти для відновлення даних (але не сподівайтеся на них, а робіть бекапи). При створенні використовуйте -T largefile або largefile4.
3. Використовуйте 64-бітове ядро
Від продуктивності оперативної пам'яті мало що залежить, від неї не збільшиться FPS в іграх і не стануть швидше запускатися програми. Використання 64-бітних додатків теж не дає ніякого приросту для звичайних завдань, тільки для дуже специфічних математичних розрахунків і операцій архівування. Також, використання 64 ядра не потрібно для адресації більше 4 ГБ пам'яті, PAE дозволяє адресувати до 64 ГБ пам'яті на 32 бітної системи.
Але використовуючи 64-бітове ядро, додатки можуть адресувати більше ніж 4 ГБ пам'яті, що досить корисно, так як інакше може виникати ситуація коли OOM-killer буде прибивати програми, хоча оперативки ще досить. Також на 64-бітної системі можна адресувати відразу ж всю фізичну пам'ять, на 32 бітної же все що вище ~ 800 МБ треба постійно ремапіть, що трохи знижує швидкість сторінкового обміну, хоча, як я вже сказав, це особливо не впливає на швидкість роботи.
Ще помічав ефект, що OOM-killer може прибивати процеси, які начебто ще не зайняли 4 ГБ. У мене таке було з деякими іграми. Проблема вирішилася переходом на 64 біта. Так що без 64-бітного ядра вже нікуди, хоч це і додає невеликі накладні витрати на використання пам'яті.
4. Використовуйте патсет pf-kernel
pf-kernel - це набір патчів для ядра linux, зібрані українцем Олександром Наталенко ( pfactum ) Спрямовані на поліпшення desktop-experience linux-систем.
Він складається з:
Найбільш корисними є патчі BFS і BFQ, про які вже дуже багато написано. BFQ бореться з проблемою гальм системи під час виконання великих дискових операцій (знаменитий баг 12309, який за документами виправлено, але по факту продовжує докучати), BFS - планіровщій процесів, більш відповідний для деськтопной роботи, ніж ті що йдуть в ядрі. Наприклад CFS, який використовується за умовчанням допускає ситуацію, коли 2 процесу, які вимагають пріоритет реального часу будуть здійсняться на одному ядрі, хоча інші ядра зайняті фонової завданнями. Природно, така поведінка призводить до глобальних гальмах. Зате «чесний планувальник». BFS не такий «чесний», але зате набагато більш наближений до реалій настільних комп'ютерів з невеликим (велике - це 4096) кількістю ядер.
Для установки, я качаю з kernel.org необхідну версію ядра без стабілізаціоннх патчів і накладаю на нього pf-kernel. У загальному випадку це виглядає так:
cd / usr / src wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.12.tar.xz tar -xf linux-3.12.tar.xz cd linux-3.12 wget https: //pf.natalenko.name/sources/3.12/patch-3.12.4-pf.bz2 bunzip2 patch-3.12.4-pf.bz2 patch -p1 & lt; patch-3.12.4-pf
Це дуже важливий патчсет, саме він дозволяє системі бути чуйною, навіть в моменти великого навантаження. В результаті, наприклад, навіть при максимальному навантаженні, час запуску додатків залишається таким же, як і при просте!
5. тюнінг ядро!
В ядрі за замовчуванням використовуються не дуже оптимальні параметри, обумовлені історичним призначенням linux для серверів і доступності для налагодження.
Так що робіть make xconfig
Найбільш важливі опції для оптимізації
Вимикаємо preemption, встановлюємо низьку частоту таймера і вимикаємо dynticks!
Йдемо в Processor type and features і вибираємо для параметра Preemption Model значення No Forced Preemption (Server). Чи не лякаємося фрази «ocasional longer delays are possible» тому що дану проблему у нас ефективно вирішує BFS і багатоядерний процесор. Як і написано в описі, ми виграємо в «raw processing power».
Також, з метою оптимізації, для параметра Processor family виберіть свій процесор.
Далі, встановлюємо для параметра Timer frequency значення 300 HZ.
У цьому розділі є чимало цікавих опцій, подивіться, наприклад можна вимкнути hot-plug для cpu і пам'яті, так як на робочому столі це просто неможливо зробити (а вимикати-включати на льоту ядра рідко кому потрібно).
Так як у мене не ноутбук, я вимикаю все що пов'язано з енергозбереженням, тобто наприклад вимикаю підтримку CPU Frequency scaling взагалі.
Тепер відключимо динамічний таймер. Не впевнений точно, так як не перевіряв конкретно, але схоже саме ця опція призводить до постійних «посмикування» на деяких відео і особливо в іграх. Так що йдемо General setup -> Timers subsystem і для опції Timer tick handling вибираємо Periodic timer ticks (constant rate, no dynticks).
включаємо BFQ
За замовчуванням BFQ вимкнений і його треба включити а також вибрати використовується за умовчанням.
Йдемо Enable the block layer -> IO Schedulers включаємо опції BFQ I / O scheduler і BFQ hierarchical scheduling support, для опції Default I / O scheduler вибираємо, очевидно, BFQ.
6. Prelink
Можна попередньо пов'язати з виконуваними файлами динамічні бібліотеки, що дозволяє ще більше зменшити час запуску додатків. По цій темі є окрема стаття від peter23 .
7. Висновок
Після накладення патчсета і тюнінгу ядра йдуть «посмикування» в іграх. Чим слабкіше залізо, тим помітніше ці посмикування, хоча у мене є підозри що це все ж якась проблема в драйверах nVidia, тому що різні версії поводяться по-різному.
(via habrahabr )
Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту і натисніть Ctrl + Enter.
Пам'ятайте як повільно працюють дискети, яке у них велике час пошуку?