Автор Тема: Оптимизации на Линукс десктоп  (Прочетена 38197 пъти)

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Здравейте,

Както бях предложил в една друга тема, отварям тази тема с цел да споделяме и коментираме всякакви оптимизации за десктоп на база Линукс.

Вместо да нахвърлям всички видове оптимизации които ползвам (или съм ползвал) реших да пиша първо за най-общите 3/три приложими за всяка дистрибуция.

1.Ядрото, има много къстъм-ядра някои от тях насочени към десктоп потребителите - ck-sources, zen-sources, rt-sources и други.
Лично аз ползвам liquorix-ядро за Убунту и Дебиан (има ppa за него). Известно неудобство (но и предимство) е че обновяват много често, на 2-3 дни обикновенно.
За Arch-базирани системи, ползвам основно: linux-rt & linux-zen (няколко месеца ползвах linux-rt-bfq и бях мнго доволен, но май вече го няма като готова "рецепта")  :o

2.Файловата система (основно за ext4) съм се ровил и експериментирал, ето резултата:
relatime,nodiratime,delalloc,barrier=0,commit=7
По нататък вероятно ще дам/дадете повече информация за тези опции. Слагам ги в /etc/fstab

3.Мрежовия стек и вирт. памет: пак ще дам готови настройки: /etc/sysctl.d/somename.conf или /etc/sysctl.conf
# Accelerate transfer
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216
net.ipv4.tcp_slow_start_after_idle = 0
# vm.swappiness=10
# switch off IPv6
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# --99--
vm.swappiness=5
vm.vfs_cache_pressure=75
vm.dirty_background_bytes=16777216
vm.dirty_bytes=50331648
...

Тук съм събрал неща намерени на няколко места. Може да коментираме, добавяме, махаме и там каквото искате  ;D
« Последна редакция: Sep 09, 2019, 12:28 от ray »
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #1 -: Sep 09, 2019, 13:32 »
ОК, почвам :)

1.  Системата ми е стокова. Ubuntu 18.04.3 LTS с ядро към момента Linux 5.0.0-27-generic. Имам 24GB RAM, 500GB NVME и 1ТБ механичен HDD (смятам че подробностите са важни)

2. И моята файлова система е ext4 (и на 2те устройства), но ще оставя тази точка за после, че ми стана интересна точка 3 :)

3. За да изглежда по-нагледно, ето как е по подразбиране същото описано горе:
(Ако някой иска да си види неговото, съм го написал като скрипт)

Цитат
# Accelerate transfer
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 212992
net.core.wmem_max = 212992
net.ipv4.tcp_rmem = 4096        131072  6291456
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.tcp_slow_start_after_idle = 1
# vm.swappiness=10
# switch off IPv6
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
# --99--
vm.swappiness = 60
vm.vfs_cache_pressure = 100
vm.dirty_background_bytes = 0
vm.dirty_bytes = 0

Ето какво промених аз:

Цитат
# Accelerate transfer
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096        131072  16777216
net.ipv4.tcp_wmem = 4096        16384   16777216
net.ipv4.tcp_slow_start_after_idle = 0
# vm.swappiness=10
# switch off IPv6
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
# --99--
vm.swappiness = 5
vm.vfs_cache_pressure = 100
vm.dirty_background_bytes = 0
vm.dirty_bytes = 0

Сега въпросът е дали да намаля това vm.vfs_cache_pressure = 100, тъй като до колкото прочетох, ако имаш множество файлове, дори хората го увеличават. Някой може ли да обясни?
« Последна редакция: Sep 09, 2019, 13:35 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #2 -: Sep 09, 2019, 13:33 »
На  страницата на liquorix намерих един (може би) интересен скрипт:
https://techpatterns.com/forums/about2455.html
https://github.com/damentz/smt-manager
Активен

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #3 -: Sep 09, 2019, 14:00 »
https://docs.gluster.org/en/latest/Administrator%20Guide/Linux%20Kernel%20Tuning/

https://www.codero.com/knowledge-base/content/3/388/en/improving-performance-on-low_memory-linux-vms.html

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

PS: нещо интересно (и май неочаквано): не съм пипал нищо преди това
sudo /usr/local/bin/smt-manager.pl
Password:
CPU topology:
0: primary | offline
1: primary | online
2: primary | online
3: primary | online

PS2: При мен скрипта не работи, поне няма ефект  :o (обаче сега не съм с такова ядро/liquorix, знам ли може да е от това, пък и тук съм с AMD)
« Последна редакция: Sep 09, 2019, 15:03 от ray »
Активен

cybercop

  • Напреднали
  • *****
  • Публикации: 5626
  • Distribution: Ubuntu LTS, CENTOS 6.x
  • Window Manager: Xfce, Gnome 2
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #4 -: Sep 10, 2019, 09:40 »
Аз ползвам стандартни ядра и правя много малки промени по конфигурационните файлове. Обикновено, само сменям отсрочката преди стартиране от конфигурацията на GRUB (2 секунди са ми достатъчно)
GRUB_DEFAULT=0
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

и задавам vm.swappiness=10 в /etc/sysctl.conf

Но, имам много малко стартирани услуги, не ползвам графични шарении, анимация при стартиране, мениджъри за обновление и автоматична проверка за такива.
https://i.postimg.cc/8kW8DqYt/service.png
Компютъра от който пиша е под Ubuntu 18.04, инсталирана върху ext4 с netplan+NM. Под btrfs, някои приложения, като Chromium базираните браузъри стартират над два пъти по- бързо при първо стартиране (има някаква игра със зареждането на кеша), но в момента не бързам за никъде. Когато правя инсталация за други хора, инсталирам върху btrfs за да са доволни. Така е и при някои от моите компютри.
П.П.: Като погледнах снимката се сетих, че съм нашарил малко и конфигурацията на Bash, но това не се брои за оптимизация.
Понеже става въпрос за десктоп, да споделя, че в Ubuntu 18.04 ползвам GTK2 базирана добавка xfce4-whiskermenu-plugin от Ubuntu 16.04. Добавката за 18.04 е GTK3 базирана и просто не е на мястото си в GTK2 базирания xfce4-panel, каквито и опити за интеграция да правих.
« Последна редакция: Sep 10, 2019, 10:11 от cybercop »
Активен

Ползването на Linux води до пристрастяване. Факт.
http://s19.postimg.cc/4oajwoq5v/xenial2.png

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #5 -: Sep 10, 2019, 11:11 »
Здравейте,

Продължавам със следващите три "оптимизации"  ;)

Първата е за позване на РАМ-базиран swap заедно с нормалния, трика е да бъде с по-висок приоритет (по-голямо число).
Така ако имате повечко памет и отделите едни 512 МБ до 1 ГБ ще имате бърз суап и един бавен дисков ако все пак нещо съвсем се натовари.
Тук ще бъда мързелив и само ще спомена какво ползвам тъй като едни неща ги няма в Убунту/Дебиан, други ги има в АРЧ-базираните.
Общо взето търсете: zswap, zram и евентуално в Гого. Ако все пак искате ще изровя повече подробности   ::)

Второ нещо което ползвам е QOS за задаване на приоритети за различните протоколи в УЕБ.
Намерих този скрипт "e-hfsc" (https://github.com/k0smik0/e-hfsc), със сигурност има и по-нови и по-добри, но нали съм мързелив карам с този.
Тук давам по-скоро идея да се ползва QOS за приоритизиране на видовете трафик.

Последно от тази група са програми чрез които задавам различен приоритет (niceness) на по-големите и тежки приложения - chromium, firefox, evolution, etc.
Тук ползвам две програми от AUR - verynice и още една (сега нещо не мога да намеря коя беше, ще пиша пак) - те са за АРЧ-базирани дистрибуции.
Гледам че има пакет и за CentOS-6/32-bit, но не съм се ровил, ползвал това в CentOS.

PS: намерих и втората програма за задаване на niceness: Ananicy (https://github.com/Nefelim4ag/Ananicy) - има я в AUR, може би е възможно да се инсталира и от сорс (не съм пробвал).
You can install ananicy manually by:

$ git clone https://github.com/Nefelim4ag/Ananicy.git /tmp/ananicy
$ cd /tmp/ananicy
$ sudo make install
« Последна редакция: Sep 10, 2019, 12:12 от ray »
Активен

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #6 -: Sep 10, 2019, 12:35 »
Докато се ровех намерих още няколко интересни (поне за мен) програми:

schedtool: http://manpages.ubuntu.com/manpages/xenial/man8/schedtool.8.html
cpulimit & limitcpu (ако искате да ограничите ползването на процесора и т.н.) https://github.com/opsengine/cpulimit

PS: https://wiki.archlinux.org/index.php/Improving_performance#Optimize_the_filesystem
« Последна редакция: Sep 10, 2019, 13:06 от ray »
Активен

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #7 -: Sep 11, 2019, 12:45 »
Още една оптимизация (за Arch основно), ускоряване работата на браузърите като се мести кеша в рам-диск, има и пакет/aur за това.
aur/profile-sync-daemon 6.34-2 (+521 2.60%) (Installed)
    Syncs browser profiles to tmpfs reducing SSD/HDD calls and speeding-up browsers.

Още нещо което ползвам на Arch и подобни - gopreload (ускорява зареждането на големи програми).
aur/gopreload-git r49.ebb83fe-2 (+27 0.00%) (Installed: r59.21b08e6-1)
    Preloads files needed for given programs

Това основно го ползвам с браузърите и пощенските клиенти.
За друго сега не се сещам, май основното е вече тук (споменато). За подробности по настройките ако  е необходимо - питайте  ::)

Въпроси, коментари, предложения и всичко друго споделяйте  ;D
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #8 -: Sep 11, 2019, 13:28 »
Въпроси, коментари, предложения и всичко друго споделяйте  ;D
Аз лично не практикувам вече оптимизации свързани с местене към рамта, понеже ползвам nvme-та и реално почти няма смисъл. Механични хардове ползвам единствено за сторидж.

Оптимизацията от мен е:
При изгасянето на Ubuntu (не знам при другите systemd дистрибуции) понякога зацикля за повечко време поради невъзможност да загаси някой процес. Времето за изчакване се намаля от тук:
Цитат
nano /etc/systemd/system.conf

DefaultTimeoutStopSec=90s
Зависимост от машината, слагам различно време, но 10-20, мисля е най-оптимално.

пп:
........
Първата е за позване на РАМ-базиран swap заедно с нормалния, трика е да бъде с по-висок приоритет (по-голямо число).
Така ако имате повечко памет и отделите едни 512 МБ до 1 ГБ ще имате бърз суап и един бавен дисков ако все пак нещо съвсем се натовари.
...
Това пък изобщо не мога да схвана защо го правиш. Дори и да си с механичен диск.
« Последна редакция: Sep 11, 2019, 13:37 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #9 -: Sep 11, 2019, 13:50 »
https://askubuntu.com/questions/625405/zram-vs-regular-swap-partition

Разбира се няма идеално решение, има варианти за избор и лични предпочитания/нужди  :)

PS: swapon --show
NAME       TYPE        SIZE USED  PRIO
/dev/sda2  partition     2G   0B    -2
/dev/zram0 partition 559,7M   0B 32767
« Последна редакция: Sep 11, 2019, 13:59 от ray »
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #10 -: Sep 11, 2019, 14:03 »
Аха, май схванах. Значи оптимизацията идва от това, че компресираш датата. Сиреч печелиш количество, а не бързина. Правилно ли съм разбрал ?
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #11 -: Sep 11, 2019, 14:15 »
Според мен печелиш и от двете, все пак скоростта на достъп до РАМ и мех.диск (не съм гледал как е със SSD или друг бърз сторидж) е значителна (да не кажа голяма)

Накратко казано, имаш доста памет и рядко и малко (като обем) влизаш в суап-а, нищо не пречи да отделя едни 512 МБ за бърз суап, другия е почти ненужен, но нека си стои.
Дисковия суап е с приоритет -2 и ще се ползва само ако и когато другия (бързия) се запълни, което едва ли ще стане в нормални условия  >:D
В допълнение на това данните в рам-суапа се компресират и така се печели и обем ... zcache също е опция  ;)
Нещо такова ми се върти из главата  ::)
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #12 -: Sep 11, 2019, 15:22 »
Накратко казано, имаш доста памет и рядко и малко (като обем) влизаш в суап-а, нищо не пречи да отделя едни 512 МБ за бърз суап, другия е почти ненужен, но нека си стои.
Не виждам просто смисъл да се заделят 512 МБ РАМ за 512 МБ РАМ бърз суап. Единствено създаваш оувърхед. От това, което прочетох, това се ползва заради компресията. Тоест ако не ти стига рамта и си на суап ("бавна памет"), да изстискаш още някой мб "бърза памет" заради компресията. В днешно време, за мен суапа е почти напълно излишен. Аз го държа, ей така да го има, но реално суапинес = 0 не ми е проблем.
« Последна редакция: Sep 11, 2019, 15:32 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Re: Оптимизации на Линукс десктоп
« Отговор #13 -: Sep 11, 2019, 23:13 »
От известно време не ползвам суап.
Може би трябваше. На едната машина не ми стигаха 8 рам - браузърите я издяждаха. Ма сестра ми като я счупи след едно препъване в кабел, при ремонта я удвоих. На другите две също съм нахакал максимално възможно рам. Успях един път да оползотворя около две трети от паметта. За останалото не зная, какви приложения още трябва да отворя.
Но може би ще трябва да направя едни 512МВ суап, защото някои програми просто я ползват, за да си пишат временни неща там - vim например. Ако съм в къщи батерията на лаптопа я вадя и това веднъж ми спести доста работа, след изгасване на тока. Тогава още ползвах суап.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

lunarvalley

  • Гост
Re: Оптимизации на Линукс десктоп
« Отговор #14 -: Sep 12, 2019, 11:29 »
аз съм с 8 до 16 Гб РАМ на различните компютри. SWAP винаги слагам, но са едни символични 1024МБ
Активен