Я пишу это руководство, чтобы сохранить свой прогресс и позволить другим внести свой вклад в повышение производительности Linux еще дальше; В конце концов, многие лучше, чем один. Вы можете использовать их все или лишь несколько из них. Прочитайте тему полностью перед началом .
В настоящее время я нахожусь на Нобаре, поэтому некоторые шаги могут варьироваться от дистрибуции до дистрибуции.
Примечание: это руководство не для начинающих, которые являются новичками в Linux, но некоторые из них могут безопасно использовать ими.
К настоящему времени все согласны с тем, что компиляция вашего ядра является одним из лучших вариантов, чтобы получить максимально быструю скорость. Возможно, вы захотите Google How to make custom kernel in <distro> чтобы получить пакеты, необходимые для компиляции ядра.
Загрузите последнее ядро или что -либо еще. Извлечь это; С этого момента я собираюсь принять общее имя на linux-xxx .
Следующим шагом является поиск файла config . Большую часть времени вы можете бежать:
cp -v /boot/config- $( uname -r ) .config Изнутри linux-xxx , который должен дать выход, подобный:
' /boot/config-y.y.y-generic ' - > ' .config ' Если он не удается, вы можете найти Config в /proc/config.gz или простой запуск make listnewconfig или make oldconfig (он обычно начинает длинный процесс; попробуйте найти вашу конфигурацию в вашем исходном коде дистрибуции).
Редактировать Makefile и изменить EXTRAVERSION , чтобы что -то добавить. Например, "Extreversion = <YourName>".
(Возможно, вы захотите увидеть следующую подтопию перед этим), теперь запустите make xconfig . Теперь здесь возможно много оптимизаций, многие мертвые коды и модули могут быть удалены и включены. Пойдем по безопасной дороге.
- Processor type and features
- Processor family
- [ x ] Core2/newer XeonGeneric-x86-64 по умолчанию.Теперь вы можете запустить:
dmesg --level=err
dmesg --level=warn Чтобы увидеть, сможете ли вы включить дополнительные флаги для дополнительных функций. Например, psmouse serio1: elantech: The touchpad can support a better bus than the old PS/2 protocol. Make sure MOUSE_PS2_ELANTECH_SMBUS and MOUSE_ELAN_I2C_SMBUS are enabled to get a better touchpad experience. может быть решено путем включения их обоих.
Наконец, составление ядра:
# sed -ri '/CONFIG_SYSTEM_TRUSTED_KEYS/s/=.+/=""/g' .config
make -j N CFLAGS= ' -march=native -O3 -flto -pipe ' CXXFLAGS= ' -march=native -O3 -flto -pipe '
make -j N CFLAGS= ' -march=native -O3 -flto -pipe ' CXXFLAGS= ' -march=native -O3 -flto -pipe ' modules
sudo make modules_install
sudo make install Где N - это количество cores , которые у вас есть, в качестве альтернативы используйте $(getconf _NPROCESSORS_ONLN) .
Если какие -либо шаги выходят из строя, запустите make clean и запустите снова.
Сделав его по умолчанию в Grub (я использую Grub2, ваш процесс может варьироваться):
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo grubby --set-default /boot/vmlinuz-x.x.x-x Вы можете найти свой vmlinuz-xxx-x in /boot/
Теперь перезапустите и запустите uname -r , чтобы увидеть ваше ядро.
Есть несколько патчей, которые вы можете использовать для повышения производительности или для облегчения жизни.
Есть много патчей, и вам придется найти те, которые подходят вам лучше. Я буду использовать платы ядра Graysky2 здесь. Загрузите весь репо или просто файл, который вам нужен. В моем случае у меня есть GCC 10 и последнее ядро, поэтому я буду использовать это.
Скопируйте желаемый патч -файл в корень извлеченного словаря Linux; то же место, что и .config .
patch -p1 < enable_additional_cpu_optimizations_for_gcc_v10.1+_kernel_v5.8+.patch
Вы должны увидеть такой выход:
patching file arch/x86/Kconfig.cpu
patching file arch/x86/Makefile
patching file arch/x86/Makefile_32.cpu
patching file arch/x86/include/asm/vermagic.hТеперь вы можете начать с шага 4 в предыдущей настройке и увидите:
- Processor type and features
- Processor family
- [x] Native optimizations autodetected by GCCСуществуют другие патчи, такие как связанные с расписанием, на которые вы можете применить. Опять же, попробуйте найти свои патчи, которые подходят вашей системе.
Постарайтесь сохранить последнее рабочее ядро, то есть иметь минимум два ядра (тот, который вы используете, и предыдущий). ПРИМЕЧАНИЕ. Удаление в настоящее время бегающего ядра (определено uname -r ) сделает вашу систему не загруженной.
Эти записи должны быть удалены:
/boot/vmlinuz-x.x.x-x
/boot/initrd-x.x.x-x
/boot/System-map-x.x.x-x
/boot/config-x.x.x-x
/lib/modules/x.x.x-x/
/var/lib/initramfs/x.x.x-x/
/boot/loader/entries/ * x.x.x-x sudo grub2-mkconfig -o /boot/grub2/grub.cfg или sudo update-grub2
sudo gedit /etc/fstab , измените его, чтобы посмотреть примерно так (это на Fedora, ваше может отличаться):
UUID= < do-not-change > / btrfs subvol=root,x-systemd.device-timeout=0,ssd,noatime,space_cache,commit=120,compress=zstd,discard=async,lazytime 0 0
UUID= < do-not-change > /boot ext4 defaults 1 2
UUID= < do-not-change > /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID= < do-not-change > /home btrfs subvol=home,x-systemd.device-timeout=0,ssd,noatime,space_cache,commit=120,compress=zstd,discard=async,lazytime 0 0Необязательно:
nobarrier
Опция nobarrier безопасен, так как вы не ожидали, что внезапный пауэрлов произойдет или поддерживает аккумулятор.
На устройстве с изменчивым кэшем записей, поддерживаемых аккумулятором, опция NoBarrier не приведет к коррупции файловой системы, поскольку ожидающие блоки должны быть в постоянном хранилище. Человек 5 Btrfs
sudo systemctl daemon-reload
sudo systemctl enable fstrim.timer
Важно: мне обычно нравится отключать mitigations , но опять же, я нахожусь на процессоре на основе AMD и не имею только Spectre Meltdown , я не запускаю неизвестный сценарий, и даже если мне нужно, я использую контейнеры и Firefox с noscript и несколькими другими дополнениями безопасности. Тем не менее, если вы понимаете проблемы безопасности, вы можете отключить их и увидеть существенный рост производительности.
sudo grubby --args "mitigations=off nowatchdog processor.ignore_ppc=1 amdgpu.ppfeaturemask=0xffffffff ec_sys.write_support=1 split_lock_detect=off" --update-kernel=ALLИЛИ
sudo gedit /etc/default/grub
Вы найдете строку GRUB_CMDLINE_LINUX=" ... rhgb quiet изменить ее на ( ... означает другие параметры):
GRUB_CMDLINE_LINUX= " ... rhgb quiet mitigations=off nowatchdog processor.ignore_ppc=1 split_lock_detect=off " Кроме того, редактировать GRUB_TIMEOUT=5 на GRUB_TIMEOUT=1.
sudo grub2-mkconfig -o /etc/grub2-efi.cfg
ИЛИ
sudo grub2-mkconfig -o /etc/grub2.cfg
После перезагрузки вы можете запустить cat /proc/cmdline чтобы увидеть варианты загрузки.
Наша последняя настройка как бы улучшила его, но давайте попробуем что -то большее.
Удалить приложения запуска; Я использую gnome-tweaks для опыта, подобного графическому графику.
Запустите следующее, чтобы узнать, какая услуга занимает дольше всего:
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain Они могут варьироваться от системы к системе и дистрибуции до дистрибуции; В моем случае (Fedora) я отключил dnf-makecache.service. который занял около 32s . Для этого:
sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl disable dnf-makecache.service
sudo systemctl disable dnf-makecache.timer
sudo gsettings set org.gnome.software download-updates falseВозможно, вы захотите Google каждую услугу, о которой вы думаете, отключите, и что он делает; В моем случае это просто обновляет DNF -кэш, который я обычно люблю делать вручную.
Если у вас 8 ГБ или более оперативной памяти, вы можете извлечь выгоду из этого; В противном случае оставьте это таким, как есть.
Чтобы увидеть текущую швырогство, введите cat /proc/sys/vm/swappiness ; он должен печатать 60 ; Мы хотим сделать это 10.
sudo gedit /etc/sysctl.conf
Введите vm.swappiness=10 и перезагрузитесь; Теперь шаг 1 должен распечатать 10.
scaling_governor на performance Не меняйте его на performance на процессорах на основе Ryzen, так как это может (я, кажется, получаю лучшую производительность на AC, но опять же, performance , похоже, в некоторых случаях не позволяет увеличить их производительность), используя ondemand . Или schedutil лучше (больше склоняться к schedutil , как только он будет исправлен).
Запустите cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor чтобы увидеть вашего нынешнего губернатора.
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Эта настройка, скорее всего, не будет сохраняться во время следующей загрузки; Мне нравится менять его вручную, а не делать системную услугу (я ноутбук, и он становится горячим). Вы можете захотеть Google, как сделать его настойчивым для вашего дистрибутива, если хотите или:
echo ' GOVERNOR="performance" ' | sudo tee /etc/default/cpufrequtils
sudo systemctl disable schedutil По умолчанию schedutil ; Вы можете увидеть здесь других.
Примечание . Вы также можете изменить по умолчанию во время компиляции ядра.
Вы можете найти инструменты разгона, характерные для вашего графического процессора, но чтобы убедиться, что ваша видеокарта не подавляется ОС (особенно AMD):
Проверка, является ли это auto :
cat /sys/class/drm/card0/device/power_dpm_force_performance_level
cat /sys/class/drm/card1/device/power_dpm_force_performance_levelПроверьте параметры GPU по:
sudo cat /sys/kernel/debug/dri/0/amdgpu_pm_info
sudo cat /sys/kernel/debug/dri/1/amdgpu_pm_infoТеперь установите все на высокое:
sudo su
echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level
echo high > /sys/class/drm/card1/device/power_dpm_force_performance_level Вы можете изменить их обратно на auto , если ваша система перегревается.
Archwiki/улучшение производительности
Отключение Cool'n'Quiet или speedstep или PowerNow! от BIOS (вызовет нагрев на ноутбуках, включите его только во время игр)
Проверьте другие функции BIOS тоже; Они варьируются от системы к системе, но должны иметь значительный рост производительности
Использование X вместо Wayland (может варьироваться от игры)
Использование Backend Opengl в играх вместо Vulkun (может варьироваться в игре)
Не стесняйтесь открывать проблему или редактировать Readme самостоятельно.
Лицензирован под одним из них: