[Файлови системи]
<Най-често използвани файлови системи>
* XFS - Отлична производителност при работа с големи файлове. Бавна при работа с малки файлове.
* ReiserFS - Отлична производителност при работа с малки файлове.
* ext3 - Добра обща производителност, добра надеждност.
* ext4 - Добра обща производителност, добра надеждност, леки проблеми с производителността при работа с sqlite и други бази данни.
* JFS - Добра обща производителност, много ниско натоварване на централния процесор.
* Btrfs - Добра обща производителност (по-добра от ext4), добра надеждност(стига да излезе стабилна версия), много възможности, все още активно се разработва. Не използвайте тази файлова система преди да има официална стабилна версия, освен ако наистина знаете какво правите и сте подготвени за потенциална загуба на данни.
Индексиране на директории
Тази опция ускорява достъпа до файлове в директории, които съдържат много файлове, като използва бинарни дървета за да съхранява информацията за директориите. Напълно безопасно е да се използва, като подобрението е значително в повечето случаи. Поради тази причина е добра идея индексирането да бъде включено:
# tune2fs -O dir_index /dev/hdXY
Това ще има ефект само върху директории, които са създадени след изпълнението на тази команда. За да се приложи върху вече съществуващи директории можете да използвате e2fsck, но имайте предвид, че файловате система не трябва да бъде монтирана т.е. трябва да заредите от livecd:
e2fsck -D -f /dev/hdXY
Toва работи както на ext2 така и на ext3 файлови системи. В зависимост от размера на файловата система това може да отнеме доста време.
<Компресиране на /usr>
Това е един много ефективен начин да се ускори четенето от хард диска, тъй като така информацията, която трябва да бъде прочетена е значително по-малко. Разбира се при използването на компресия централния процесор се натоварва допълнително, но това не се забелязва при използването на относително съвременен процесор и при положение, че повечето от файловете в /usr са с малък размер. Някои файлови системи поддържат фонова компресия (например Btrfs и ReiserFS4), но техния коефициент на компресия е ограничен от 4К размер на блока. Добра алтернатива е да се използва SquashFS за компресиране на /usr с размер на блока 64К(128К). По този начин се спестява много място, обикновено две трети от некомпресираното /usr, и по-важното е, че приложенията се стартират доста по-бързо. Недостатък е, че промените, които се извършват в /usr се записват некомпресирани. Toва се постига като се използва aufs в комбинация със SquashFS. Необходимо е периодично SquashFS имиджа да се рекомпресира за да се отразяват промените в /usr.
Необходими пакети са aufs2 и squashfs-tools. SquashFS е налична в Линукс ядрото, а aufs е достъпна като пакет за повечето дистрибуции.
Команди:
# mkdir -p /squashed/usr/{ro,rw}
В /squashed/usr/ro ще се монтира SquashFS имиджа, а в /squashed/usr/rw ще се зписват промените, които се правят в /usr. След това двете директории се монтират чрез Aufs2 в /usr.
За да компресираме /usr в SquashFS имидж използваме:
# mksquashfs /usr /squashed/usr/usr.sfs -b 65536
За да може архива да се монтира заедно с директорията за промените при boot, трябва да променим /etc/fstab:
# nano /etc/fstab
добавяме следните редове:
/squashed/usr/usr.sfs /squashed/usr/ro squashfs loop,ro 0 0
usr /usr aufs udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0
След като запишем файла можем да рестартираме. Оригиналния автор препоръчва да се изтрие старото /usr, но в зависимост от дистрибуцията това може да доведе до проблеми при boot и при рекомпресиране на SquashFS имиджа. За по-сигурно препоръчвам оригиналното /usr да се остави или като компромисен вариант, с цел спестяване на място, може да се замени с /usr от чиста инсталация на дистрибуцията с инсталирани само aufs2 и squashfs-tools.
С цел допълнително ускоряване SquashFS имиджа може да се постави на USB флаш памет. Това може да звучи глупаво, защото четенето от флашка е много по-бавно от четенето от хард диска, но това е вярно само при последователно четене. При произволен достъп флашката е значително по-бърза. Такава постановка може да се сравни с "технологията на Microsoft®" Vista ReadyBoost.
Tестовете, които съм провел са извършени на лаптоп Gateway ID49c с Gentoo (2.6.38) и флаш памет (Verbatim Store 'n' Go). Преди компресията /usr заемаше около 8G, а след това около 2G.
Kато за начало тествах някои програми за колко време се стартират:
без SquashFS:
boot до GNOME десктоп със стартирани AWN, wbar, conky, compiz-fusion, yakuake: 65 cek.
firefox: 6 cek.
OpenOffice Writer: 5 cek.
gimp: 13 cek.
vlc: 6 cek.
opera: 5 cek.
Qt Designer: 8 cek.
със SquashFS като имиджа е на хард диска:
boot до GNOME десктоп със стартирани AWN, wbar, conky, compiz-fusion, yakuake: 41 cek.
firefox: 3 cek.
OpenOffice Writer: 3 cek.
gimp: 6 cek.
vlc: 1,5 cek.
opera: 3 cek.
Qt Designer: 5 cek.
със SquashFS като имиджа е на флаш памет:
boot до GNOME десктоп със стартирани AWN, wbar, conky, compiz-fusion, yakuake: 36 cek.
firefox: 3 cek.
OpenOffice Writer: 3 cek.
gimp: 4 cek.
vlc: 1,5 cek.
opera: 2 cek.
Qt Designer: 4 cek.
В случай, че намирате тези тестове за несериозни съм извършил по-тежки тестове както препоръчва оригиналния автор:
без SquashFS:
# time find /usr -type f -printf "%s %p\n" | sort -R | awk '{ printf $2; printf "\n" }' > /sort
real 3m43.513s
# time cpio -o --quiet -H newc < sort > /dev/null
real 59m51.432s
със SquashFS като имиджа е на хард диска:
# time find /usr -type f -printf "%s %p\n" | sort -R | awk '{ printf $2; printf "\n" }' > /sort
real 0m23.814s
# time cpio -o --quiet -H newc < sort > /dev/null
real 11m45.367s
със SquashFS като имиджа е на флаш памет:
# time find /usr -type f -printf "%s %p\n" | sort -R | awk '{ printf $2; printf "\n" }' > /sort
real 0m33.935s
# time cpio -o --quiet -H newc < sort > /dev/null
real 8m24.090s
За рекомпресиране и обновяване на SquashFS имиджа може да използвате следния скрипт:
#!/bin/bash
#This script comes with ABSOLUTELY NO WARRANTY use it at your own risk!
mksquashfs /usr /squashed/usr/usr_tmp.sfs -b 65536
umount -l /usr
umount -l /squashed/usr/ro
rm /squashed/usr/usr.sfs
mv /squashed/usr/usr_tmp.sfs /squashed/usr/usr.sfs
rm -rf /squashed/usr/rw/*
mount /squashed/usr/ro
mount /usr
[CPU]
2.6.38 ядрото представя една съвсем нова система за разпределяне на процесорното време между процесите, която значително подобрява времето за реакция на системата при средно и високо натоварване. За да се използва системата в ядрото трябва да са включени:
-> General setup
-->Control Group support[CONFIG_CGROUPS](CGROUPS )
--->Group CPU scheduler[CONFIG_CGROUP_SCHED](CGROUP_SCHED)
---->Group scheduling for SCHED_OTHER[FAIR_GROUP_SCHED]
Verynice
Verynice е демон, който динамично променя приоритетите (nice levels) на процесите. Използването му е сравнително лесно - в /etc/verynice.conf се дефинират goodexe програми които трябва да има висок приоритет например X, мултимедийни програми и др. Също така там се дефинират и badexe програми, които работят във фонов режим и използват много от ресурсите на централния процесор. Това приоритизиране на процесите значително подобрява времето за реакция на системата при голямо натоварване.
[Prelink]
Повечето приложения използват споделени библиотеки. Teзи споделени библиотеки трябва да бъдат заредени в оперативната памет по време на изпълнение. За повечето малки приложения динамичното свързване се осъществява бързо, но за програми писани на C/C++, които имат много библиотечни зависимости, динамичното свързване може да отнеме значително време.
На повечето системи споделените библиотеки не се променят много често, а операциите, които се извършват за динамично свързване всеки път отнемат едно и също време. Prelink се възползва от това като свързва дънамичните библиотеки във изпълнимия файл.
Prelink може значително да намали времето за стартиране на приложенията. Например за едно KDE приложение времето може да бъде намалето до 50%. Единственото условие това да се поддържа е когато има промяна в споделените библиотеки prelink да се изпълни повторно.
След като имаме инсталиран prelink на системата можем да го стартираме по следния начин за да промени всички изпълними файлове в директориите изброени в /etc/prelink.conf:
# prelink -amR
Aко в даден момент размислите и решите да върнете изпълнимите файлове в оригиналния си вид само трябва да изпълните:
# prelink -au
Връзки:
https://wiki.archlinux.org/index.php/Maximizing_Performance
https://wiki.archlinux.org/index.php/Ext3_Filesystem_Tips
https://wiki.archlinux.org/index.php/Ext4#Improving_performance
https://wiki.archlinux.org/index.php/JFS_Filesystem#Optimizations
https://wiki.archlinux.org/index.php/Maximizing_Performance#XFS
https://wiki.archlinux.org/index.php/Maximizing_Performance#Reiserfs
https://wiki.archlinux.org/index.php/Maximizing_Performance#BTRFS
http://forums.gentoo.org/viewtopic-t-646289.html
http://www.linuxfordevices.com/c/a/News/Linux-2638-released/
http://forums.gentoo.org/viewtopic-t-869309.html?sid=82ed6f95c7818a61a8902b257469f9fa
http://www.gentoo.org/doc/en/prelink-howto.xml
https://bbs.archlinux.org/viewtopic.php?id=88515
https://bbs.archlinux.org/viewtopic.php?pid=714052