ArchLinux: производительность превыше всего
Сегодня речь пойдет о ArchLinux, почему я выбрал данную систему как замену Windows.
Linux — это обычное ядро, что используется в системах как фундамент для возведения любого проекта. Мы не будем повторять заезженных истин и сразу перейдем к делу. Основные популярные системы Windows и Linux — это собственно Windows 10 и Ubuntu, все они предоставляют пользователю интуитивно понятный интерфейс и широкий спектр кастомизации, но это только на первый взгляд. За системой рюшечек скрыты монолитные настройки, что тормозят не только развитие технологий, но и не позволяют выжимать максимум из вашей игровой системы. Что за бред спросите вы, вы ведь всегда обновляете свой Windows, держите свежими драйверы и вообще у вас в Crysis 1000 fps? Давайте разбираться.
Windows — это монолитная система закрытого типа, что тянет за собой зависимости, начиная с самых первых своих версий, что делается в угоду совместимости и поддержки старых программ. Понимаете, к чему это ведет? Мы собираем мусор со всех версий и вынуждены переносить её в самую новую, lol, да это как баги Morrowind в Fallout 76.
Наполненность мусором ведет к лишним зависимостям, что выражаются в ненужных модулях системы, таких как Реестр, и ведет к раздуванию системы и лишнему потреблению ресурсов компьютера, это, кстати, одна из причин проигрыша Windows на серверном рынке, но я отвлекся.
Установка программ выполняется в исполнении в основном exe файлов, что уже несут в себе все необходимые компоненты для работы программ, это опять же удобно, но снова, привет мусор. Подводя итог под этим кратким описание просто хочется сказать, что, несмотря на всю свою поддержку, распространенность и простоту — Windows является престарелой красавицей, что пытается молодиться.
Ubuntu — Linux-подобная операционная система открытого типа, Windows в Мире Linux, ибо аналогично Windows, за данной системой стоит компания, что занимается поддержкой, развитием и распространением системы. Проблемы Ubuntu заключаются в политике обновлений. Представим ситуацию, вы в четверг купили новенькую Radeon 7, но последняя Ubuntu обновилась в среду, а следующее обновление будет только через месяц. Вы не сможете пользоваться на полную вашей новенькой Radeon 7, ибо сама система и все модули имеет слепок не самой первой свежести, именно это не позволяет выжимать максимум.
Установка программ это еще тот геморрой, не существует централизованного хранилища, вечно приходится подключать ppa (ссылки на архив программ), что тоже приводит к мусору. Также хочется упомянуть, что когда за крупной системой стоит компания, то конечно она вносит изменения в структуру кода, ядра, добавляет зависимости, что необходимы для работы того или иного (похоже на ситуацию с Windows). Это приводит к аналогичным излишним потреблениям ресурсов, вот почему я начинаю дико ржать, когда говорят про Ubuntu, как лучшую игровую систему из Мира Linux.
ArcLinux — тот самый свободный Linux о котором вы слышали. За ним не стоит компания, а разработка ведется свободной командой и сообществом, что голосованием определяет изменения. В отличии от примеров выше, имеет политику постоянного обновления. Программа вышла, добавили в тестовый архив и потом она у вас, всегда самые свежие программы, всегда самое свежее ядро, минимальное количество изменений по сравнению с ванильным ядром.
Установка программ имеет централизованный вид в виде UAR — глобальный пополняемый архив с любыми программами на все случаи жизни. Из-за отсутствия мусора, это лучшая игровая система, что позволяет обойти любой Windows и Ubuntu, но только в прямых руках. (Как играть на Linux — Тык).
Хорошо, о основных системах поговорили, но зачем мне вообще переходить с Windows? Да незачем, если тебя все устраивает и тебе нравиться иллюзия, что это твой ПК, и у тебя максимальная производительность с четырьмя 2080 TI. Windows игровой системой обеспечивает именно та самая пресловутая совместимость и активное участие Microsoft в смерти OpenGL и рождении DirectX, но современное состояние старушки — это куча неотключаемых сервисов, что влияют на её загрузку и твой пинг. Все типы синхронизации, что ты даже не видишь, происходят на твоем ПК 24/7, ибо происходит постоянный поток данных с серверами Мicrosoft, что влияет на производительность, но ты конечно скажешь, что в мире 20 поточных процессоров и 5 кукурузных Гигагерц это не важно. К сожалению, важно, ибо существует такое понятие как DPC latency — это по-простому пинг локального оборудования, и чем ниже он, тем выше плавность вне зависимости от FPS. Выжимание максимума к в Windows ограничено закрытостью системы, ибо невозможно, например, оптимизировать саму систему и саму программу именно под ваш процессор, а не под общий стек-набор процов.
Тестируем ядра без оптимизации под процессор и с ней.
Оптимизация Linux для desktop и игр
В этой статье я хочу поделиться почти 10-летним опытом использования Linux на домашнем компьютере. За это время я провел много экспериментов над ядром, испробовал различные конфигурации для разных применений и теперь хочу все это систематизировать в длинный пост с рекомендациями как выжать из linux максимум и добиться отличной производительности, без необходимости покупать мощное железо.
Лично я считаю часть, где я написал про тюнинг ядра все же немного устарела и современное железо уже априори выдает необходимую производительность для нормальной работы, но, как мне удалось заметить недавно, с играми все равно, даже сейчас, есть проблемы, даже на мощном железе.
Хоть я и пообещал, что после прочтения этой статьи, можно будет играть в Metro 2033 на калькуляторе (шутка, такого не будет), все же она начнется с рекомендации купить кое-что из железа, если у вас этого еще нет.
1. Купите SSD, если у вас его еще нет
Почему-то многие люди скептически относятся к SSD, хотя это первый и важнейший компонент компьютера, который собирается быстро работать.
Серьезно, все что описано дальше в статье даст вам какой-то прирост в производительности и времени отклика, но любой, даже самый дешевый SSD, сократит время запуска большинства программ до 0, что, визуально, будет очень заметно. Почти в любом компьютере (и сервере) главный тормоз это всегда дисковая подсистема и никакой HDD никогда не даст вам нужной скорости поиска (которая у SSD стремится к 0 мс). За все время общения с компьютерами и их апгрейда, только переход на SSD дал значительный прирост в скорости работы и отклике. Помните как медленно работают дискеты, какое у них огромное время поиска? Примерно вот так воспринимается жесткий диск после SSD.
Так что если у вас еще нет SSD, то продолжать дальше смысла нет, ваш компьютер (хоть даже оснащенный 12-ядерным Xeon’ом) все равно будет работать медленно, так что вперед за покупками.
Касательно надежности: есть миф что SSD умирают спустя год. Его рождению мы обязаны первым SSD на бажных чипах SandForce. Естественно, любой новый SSD из магазина как минимум надежнее и долговечнее современных жестких дисков, так что не стоит беспокоиться по этому поводу вообще. Свой SSD я купил 2 года назад б/у, на то время он был в использовании год. Сейчас у него 11 681 часов наработки и использование ресурса 10%, так что при том же режиме использования, мне его хватит еще на 27 лет. Думаю, к этому времени технологии хранения данных уже несколько раз изменятся. Так что повторюсь, проблемы с надежностью более чем надуманы.
Более подробно о мифах SSD расписал товарищ Вадим Стеркин в своём блоге. Правда, блог у него о Windows, но сути это не меняет. Настоятельно советую почитать, очень интересно.
В Ubuntu 14.04 SSD работают из коробки, опция discard автоматом прописывается в fstab, кроме этого больше ничего не нужно делать.
В других дистрибутивах нужно проверять, есть ли эта опция у разделов на SSD. Стоит упомянуть, что данную опцию поддерживает только ext4. Для других ФС придется пользоваться fstrim из планировщика.
2. Таблица разделов
Не делите диски на разделы.
Для домашнего компьютера это бессмысленно и вредно. На SSD у вас должен быть один раздел для корня, там у вас будет хранится система и все данные. На HDD (если нужен) у вас должен быть один раздел с точкой монтирования в /mnt (у меня /mnt/data), где будут хранится большие малоиспользуемые данные (фильмы, музыка, игры). НЕ НУЖНО делать HDD точкой монтирования /home, так как в /home 99% программ хранит свои данные и постоянно к ним обращается, поэтому /home должен быть на SSD.
Повторюсь кратко: на 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, так что позже, если все хорошо, идет простой выход из спячки, а если произошел сбой питания — то система восстановится с диска.
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-систем.
Для установки, я качаю с kernel.org необходимую версию ядра без стабилизационнх патчей и накладываю на него pf-kernel. В общем случае это выглядит так:
Это очень важный патчсет, именно он позволяет системе быть отзывчивой, даже в моменты большой нагрузки. В результате, например, даже при максимальной нагрузке, время запуска приложений остается таким же, как и при простое!
Вот, например, скриншот htop при работе Dota 2 + The Sims 3 (multiseat):
При такой нагрузке на третьем экране можно спокойно работать и 25% (в 5-минутном окне по данным load-average) перегрузка CPU даже не чувствуется. Хотя, конечно, проц надо менять 
5. Тюнингуйте ядро!
В ядре по умолчанию используются не очень оптимальные параметры, обусловленные историческим предназначением linux для серверов и доступности для отладки.
Так что делайте make xconfig
Я расскажу о наиболее важных опциях для оптимизации
Выключаем preemption, устанавливаем низкую частоту таймера и выключаем dynticks!
ДА! Мы действительно, даже вопреки документации к BFS отключаем «жизненно важные» опции для повышения отзывчивости системы. А причина в том что они — устарели, толку от них никакого и к тому же preemption негативно влияет на производительность.
Было время, когда у меня был одноядерный процессор, тогда еще в готовых ядрах не включали preemption и высокочастотный таймер, вот тогда, после включения этих опций был огромный эффект. А именно, тяжеловесное приложение, занимающее 100% CPU, даже при наличии дискового ввода-вывода и нехватке ОЗУ никак не влияло на интерактивность и отзывчивость. В те времена, еще кроме WinXP ничего не было, а подробно рассказывать как ужасно себя ведет XP в таких ситуациях, думаю, не надо, она обычно намертво виснет, заставляя тянуться к кнопке reset. Так что иметь систему, которая почти никогда не тормозит и не зависает было приятно.
Но те времена прошли, многоядерные процессоры и огромные объемы памяти сами по себе решают проблемы отзывчивости под нагрузкой, так что дополнительно решать их программными средствами не только бесполезно, но и вредно.
Так что идем в 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. 100 все же будет маловато, да и смысла особого нет (читайте в описании почему), но вы можете поэкспериментировать. Также, 300 Гц нацело делится и на 25 и 30, что является типичными частотами для видео, это вносит свой вклад в борьбу с тирингом (это из хелпа. По факту, с тирингом успешно борется только тройная буферизация + vsync).
В этом разделе есть немало интересных опций, посмотрите, например можно выключить hot-plug для cpu и памяти, так как на десктопе это просто невозможно сделать (а выключать-включать на лету ядра редко кому нужно).
Так как у меня не ноутбук, я выключаю все что связано с энергосбережением, то есть к примеру выключаю поддержку CPU Frequency scaling вообще.
По умолчанию BFQ выключен и его надо включить а также выбрать используемым по умолчанию.
6. Prelink
Можно предварительно связать с исполняемыми файлами динамические библиотеки, что позволяет еще более уменьшить время запуска приложений. По этой теме есть отдельная статья от peter23.
7. Заключение
Самое главное, что я всегда замечаю — после наложения патчсета и тюнинга ядра уходят «подергивания» в играх. Чем слабее железо, тем заметнее эти подергивания, хотя у меня есть подозрения что это все же какая-то проблема в драйверах nVidia, потому что разные версии ведут себя по-разному.
Ради пруфов решил провести тесты с помощью Geekbench 3 из Steam и gputest, результаты которых немного странные:
3.14-pf:
Single-Core Score 2421
Multi-Core Score 8209
gputest: 3720 pts, 62 FPS
3.13-generic:
Single-Core Score 2646
Multi-Core Score 8414
gputest: 3713 pts, 61 FPS
Windows:
Single-Core Score 2572
Multi-Core Score 8242
gputest: 3634 pts, 60 FPS
Как видно, почему-то на «оптимизированный» вариант в тесте CPU набирает меньше попугаев, а в тесте GPU — больше. Только сейчас я заметил что тестировал разные ядра, возможно в этом и причина различий результатов. Как будет время, проведу эти же тесты на 3.16, надеюсь, удастся найти причину. Самое же веселое тут в том, что у Windows результаты хуже, особенно в 3D значительно.
Альманах новичка. Развеиваем заблуждения о ArchLinux и Linux-мире
Совсем скоро компания Valve выпустит новейшее игровое устройство Steam Deck, которое будет работать под управлением операционной системы ArchLinux. Многие, возможно, сразу попытаются установить туда Windows, но мы всё же попробуем составить небольшую инструкцию, которая в дальнейшем поможет новичкам разобраться не только с ArchLinux, но и Linux-миром в целом.
Внимание!
Слова автора не являются истиной в последней инстанции, так как он тоже человек, а значит, тоже может ошибаться. Прислушивайтесь, но и думайте своей головой!
Содержание
Что такое ArchLinux
ArchLinux — это один из самых свободных Linux-дистрибутивов, так как за ним не стоит компания, а разработка ведётся независимой командой, где пользователи путём всеобщего голосования выбирают дальнейший вектор развития системы. Такой подход позволяет избегать постороннего вмешательства и содержать программный код в максимальной чистоте. Дистрибутив ArchLinux распространяется по модели «Rolling release» и все его компоненты полностью бесплатны, что и позволяет системе не иметь проблем с драйверами для нового оборудования или ограничений во времени поддержки системы. Поставив систему 1 раз, вы автоматически будете иметь самый быстрый бинарный Linux-дистрибутив, свежие версии ПО, последние ядра и безграничное время поддержки, а централизованная Archwiki с программным архивом AUR позволит найти ответы и программы на все случаи жизни.
Конструктор
Впервые затрагивая тему Linux — многие новички теряются, так как привыкли к монолитности систем на базе Windows и им весьма сложно осознавать, что если в системе нет чего-то привычного, то это значит, будто система плохая и вообще не стоит внимания. На самом деле Linux заранее более продуманное решение для пользователя, чем Windows, ведь изначальная идея заключалась не только в свободе, но и в подготовке многих дистрибутивов для работы пользователя со множеством задач сразу из коробки. Для примера возьмём ArchLinux и дистрибутивы на его основе: Manjaro Gnome, Garuda KDE, ArchBang Openbox. Если обычный ArchLinux — это базис системы без ничего, которую мы точим под свои нужны, то Manjaro Gnome, Garuda KDE и даже ArchBang Openbox являются готовыми проектами с заранее настроенными компонентами для упрощения работы. Даже если посмотреть само название дистрибутива, то вторая часть является обозначением заранее выбранного в системе рабочего окружения (DE).
Desktop environment — это среда рабочего стола (окружение), которая позволяет нам взаимодействовать с системой. Обычно идёт в комплекте с Display manager (менеджером входа). Когда вы загружаете Windows, то наблюдаете привычную картину с требованием ввести логин и пароль, а дальше уже рабочий стол, пуск и прочее веселье, что и является менеджером входа и средой рабочего стола. В отличие от Windows, почти все компоненты в Linux не прибиты гвоздями и не зависят друг-друга, а значит, могут заменяться без какого-либо вреда для системы.
В этом собственно и весь Linux, так как вы можете взять уже готовое решение, где даже не потребуется заходить в консоль и вся логика взаимодействия с системой станет повторять Windows или можете создать собственный неповторимый дизайнерский интерфейс. Всё зависит только от вашего желания и знаний.
Установка
Широки заблуждения, что установка Linux-систем это ввод сотен непонятных команд в консоли и заниматься таким должны только программисты за весомую плату. Благо, всё это бред, ибо как процесс установки Windows XP отличается от установки Windows 10, то так и Linux-дистрибутивы могут иметь совершенно разные методы установки. Для примера вновь возьмём Garuda KDE, ArchLinux и добавим anarchy installer. Запишем образы по очереди через Rufus и выберем с помощью F11 при загрузке.
1. После окончания загрузки служб вводим 1 и нажимаем ENTER.
2. Нас приветствует выбор языка установщика, выбираем Русский.
3. Выбор языка раскладки клавиатуры, пожалуйста, выбирайте US во избежание бага.
4. Выбор и сортировка зеркал серверов обновления системы и программ, просто тыкаем ENTER.
5. Выбор страны зеркал вашей страны, я выбираю RU — Россия.
6. Выбор языка программ и системы, я выбираю ru_RU — UTF 8 — для Русского языка.
7. Настройка времени, выбираем или местное время по странам или сразу UTC.
8. Разметка диска, выбираем автоматически и жмём ENTER.
9. Выбираем на какой диск хотим установить систему и жмём ENTER.
10. Выбор файловой системы зависит от предпочтений, но автор советует BTRFS.
11. Выбор файла подкачки, на ваше усмотрение, но я жму нет.
12. Выбор раздела разметки, если у вас новый пк — жмите да.
13. Подтверждаем запись.
14. Выбираем ядро и графическое окружение сами для избежания мусора, Anarhy-Advenced.
15. Выбор ядра, zen, ибо оно быстрее.
16. Выбор шела, на вкус и цвет, но автор выбирает zsh.
17. ENTER.
18. ENTER.
19. ENTER.
20. 32-битные библиотеки необходимы для работы Steam, включаем.
21. Включать ли интернет при старте, да.
22. Включить ли поддержку WIFI? Выбираем сами.
23. Нет, но если вы из 2004, то вам это нужно.
24. Если вы хотите установить рядом с Windows или любой другой системой, то жмите да, я же жму нет.
25. Да.
26. Выбираем More-Desctop, нажимаем ENTER.
27. Выбираем Gnome и жмём пробел, а потом ENTER.
28. Отказываемся от EXSTRA, ибо оно ведёт к захламлению системы.
29. Если у вас ноутбук, то ставим.
30. Устанавливаем менеджер входа.
31. Я выберу gdm.
32. Водим имя нашего пк.
33. Вводим пароль для root.
34. Создаём нового пользователя и аналогично указываем для него пароль, жмём готово.
35. Запускаем установку и PROFFIT.
Вся «сложная установка» Linux свелась к нажатию нескольких кнопок и надеюсь, мне удалось убедить вас, что процесс установки прост и всё сводится к обычному далее>>далее>>готово, ведь установщик — это такая же обычная программа, которая может быть продвинутой или простеньким установочным скриптом для ручного ввода.
Мой первый Linux
Вне зависимости от вашего выбора — поздравляю, вы установили свой первый Linux-дистрибутив, но что делать дальше и как устанавливать драйверы и программы?
Linux-системам почти не требуется установка каких-либо драйверов, потому как изначально большинство оборудования уже включено в ядро системы, а дополнительная инсталляция может потребоваться только в случае использования экзотического оборудования или видеокарт Nvidia.
С установкой ПО ещё проще, если раньше для установки программы необходимо было искать исходный код и выполнять компиляцию на PC, то теперь многие дистрибутивы имеют центры приложений с готовыми бинарными программами. В центре приложений, который доступен обычно через пуск, вы сможете найти steam, браузеры, графическое ПО, игры, но опять-таки, всё будет зависеть от выбора дистрибутива и его целенаправленности.
Буду честным, способ работы с системой через центр приложений или повторение логики Windows — это неудобный и скучный бред, который только отнимает приличное количество времени и не позволяет отследить ошибку, если какая-то программа дала сбой.
Не посетив ни 1 сайта и менее чем за 30 секунд, Linux-пользователь скачает видеоплеер, браузер и steam. Разве такой способ не удобнее и проще? Каждый выбирает сам, я же просто хотел донести, что, как и в случае с изменением компонентов системы, у нас никто не отбирает выбор. Долго собирать из исходного кода для максимальной производительности, качать бинарную версию очень быстро и для всех систем или нажать красивую кнопку для новичков. Мы вольны сами выбирать и менять систему, как нам будет угодно, что наверное и является самым привлекательным при выборе Linux.
Как играть в игры
Не стану повторять заезженных истин, о которых мне уже доводилось писать ранее, но отмечу лишь то, что Linux уже давно превратился в полноценную игровую платформу, а успешное развитие Wine и Proton позволяет напрямую запускать большинство Windows-игр (даже с античитами). Для демонстрации простоты запуска воспользуемся стандартным средством Proton, который доступен в настройках steam, и выполним запуска случайной Windows-игры из моей библиотеки.
Хотя ошибка записи в виде небольшого тиринга присутствует, игровой процесс идеален и не доставляет никаких проблем, а случайный выбор игры лишь ещё раз подтверждает весомый прогресс достигнутый в работе над Wine и Proton.
Конечно, не всё так радужно и существует ещё множество подводных камней в мире игрового Linux, но с каждым днём ситуация меняется и проблем становится меньше.
Заключение
Linux повзрослел и уже способен удовлетворить потребности не только в профессиональном сегменте, но и показать обычному пользователю, что не сто́ит отказывать себе в использование новой системы, ведь познавая Windows, вы тоже многое не умели, а приходили ко всему постепенно. Отбросьте глупые заблуждения, попробуйте и, возможно, вы найдёте то, что так долго искали.

