ฉันกำลังเขียนคำแนะนำนี้เพื่อบันทึกความคืบหน้าของฉันและให้ผู้อื่นมีส่วนร่วมในการเพิ่มประสิทธิภาพของ Linux ให้ดียิ่งขึ้น ท้ายที่สุดหลายคนดีกว่าหนึ่ง คุณสามารถใช้พวกเขาทั้งหมดหรือเพียงไม่กี่คน อ่านหัวข้ออย่างเต็มที่ก่อนเริ่ม
ขณะนี้ฉันอยู่ในโนบาร่าดังนั้นบางขั้นตอนอาจแตกต่างกันไปจาก distro ถึง distro
หมายเหตุ: คู่มือนี้ไม่ได้มีไว้สำหรับผู้เริ่มต้นที่ยังใหม่กับ 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 in /proc/config.gz หรือการเรียกใช้อย่างง่าย make listnewconfig หรือ make oldconfig (มักจะเริ่มกระบวนการที่ยาวนานลองค้นหาการกำหนดค่าของคุณในซอร์สโค้ด distro ของคุณด้วย)
แก้ไข Makefile และเปลี่ยน EXTRAVERSION เพื่อเพิ่มบางสิ่งบางอย่าง ตัวอย่างเช่น "extraversion = <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 ใน /boot/
ตอนนี้รีสตาร์ทและเรียกใช้ uname -r เพื่อดูเคอร์เนลของคุณ
มีหลายแพทช์ที่คุณสามารถใช้เพื่อเพิ่มประสิทธิภาพหรือทำให้ชีวิตง่ายขึ้น
มีแพทช์มากมายให้เลือกและคุณจะต้องค้นหาสิ่งที่เหมาะกับคุณที่สุด ฉันจะใช้แพทช์เคอร์เนล Graysky2 ที่นี่ ดาวน์โหลด repo ทั้งหมดหรือเพียงแค่ไฟล์ที่คุณต้องการ ในกรณีของฉันฉันมี GCC 10 และเคอร์เนลล่าสุดดังนั้นฉันจะใช้สิ่งนี้
คัดลอกไฟล์แพทช์ที่ต้องการลงในรูทของพจนานุกรม Linux ที่แยกออกมา สถานที่เดียวกันกับ .config 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 ปลอดภัยตราบใดที่คุณไม่ได้คาดหวังว่า Powerloss ฉับพลันจะเกิดขึ้นหรือได้รับการสนับสนุนจากแบตเตอรี่
บนอุปกรณ์ที่มีแคชเขียนแบตเตอรี่แบตเตอรี่ที่มีความผันผวนตัวเลือก Nobarrier จะไม่นำไปสู่การทุจริตของระบบไฟล์เนื่องจากบล็อกที่ค้างอยู่ควรจะไปยังที่เก็บถาวร ผู้ชาย 5 btrfs
sudo systemctl daemon-reload
sudo systemctl enable fstrim.timer
สำคัญ: ฉันมักจะชอบปิดใช้ mitigations แต่อีกครั้งฉันอยู่ในซีพียูที่ใช้ AMD และไม่มี Meltdown เท่านั้น Spectre ฉันไม่ได้เรียกใช้สคริปต์ที่ไม่รู้จักและแม้ว่าฉันจะต้องใช้ฉันใช้คอนเทนเนอร์และ 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 สำหรับประสบการณ์ที่เหมือน GUI
เรียกใช้สิ่งต่อไปนี้เพื่อค้นหาว่าบริการใดที่ใช้เวลานานที่สุด:
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain สิ่งเหล่านี้อาจแตกต่างกันไปจากระบบสู่ระบบและ distro ถึง distro; ในกรณีของฉัน (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 ซึ่งฉันมักจะชอบทำด้วยตนเอง
หากคุณมี RAM 8GB หรือมากกว่าคุณอาจได้รับประโยชน์จากมัน มิฉะนั้นทิ้งไว้ตามที่เป็นอยู่
หากต้องการดูการเปลี่ยนแปลงในปัจจุบันให้ป้อน 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
การตั้งค่านี้เป็นไปได้มากที่สุดจะไม่คงอยู่ระหว่างการบูตครั้งต่อไป ฉันชอบที่จะเปลี่ยนมันด้วยตนเองแทนที่จะทำบริการ SystemD (ฉันเป็นแล็ปท็อปและมันก็ร้อน) คุณอาจต้องการ Google ว่าจะทำให้มันคงที่สำหรับ distro ของคุณได้อย่างไรหากคุณต้องการหรือ:
echo ' GOVERNOR="performance" ' | sudo tee /etc/default/cpufrequtils
sudo systemctl disable schedutil ค่าเริ่มต้นคือ schedutil ; คุณสามารถเห็นคนอื่นได้ที่นี่
หมายเหตุ : คุณสามารถเปลี่ยนค่าเริ่มต้นระหว่างการรวบรวมเคอร์เนล
คุณสามารถค้นหาเครื่องมือโอเวอร์คล็อกเฉพาะสำหรับ GPU ของคุณ แต่เพื่อให้แน่ใจว่าการ์ดกราฟิกของคุณไม่ได้รับการระงับโดยระบบปฏิบัติการ (โดยเฉพาะ 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 (อาจแตกต่างกันไปในเกม)
การใช้แบ็กเอนด์ Opengl ในเกมแทน Vulkun (อาจแตกต่างกันไปในเกม)
อย่าลังเลที่จะเปิดปัญหาหรือแก้ไข readme ด้วยตัวเอง
ได้รับใบอนุญาตภายใต้สิ่งเหล่านี้: