skriptik ktory davam do rc.local na optimalizaciu komunikacnych parametrov s diskami. dnes uz jadra zvyknu zapinat DMA by default, takze to mozno nic nepomoze, ze sak za pokus to stoji :)
# HDD optimisation
for disk in hda hdb hdc hdd hde hdf hdg hdh hdi; do
/usr/sbin/hdparm -c 1 /dev/$disk # 32 bit komunikacia
/usr/sbin/hdparm -d 1 /dev/$disk # zapni DMA
/usr/sbin/hdparm -u 1 /dev/$disk # unmasq IRQ
/usr/sbin/hdparm -W 1 /dev/$disk # zapni WRITE chache na disku (pozor na power failures.)
/usr/sbin/hdparm -M 254 /dev/$disk # zrus noise managemnet disku (viac vrci, ale aj slape.)
done
ak su nejake problemy s autonegociaciou na sietovke a vieme co podporuje switch na druhej strane (huby a ine hribiky snad uz dnes nikto neopuziva) tak si mozme dovolit natvrdo povedat sietovke ze ma chodit 100mbps full duplex:
/sbin/mii-tool -F 100baseTx-FD eth0
obcas moze pomoct zvysit send buffer na sietovke
ifconfig eth0 txqueuelen 1000
v pripade ze mate dost ramky a chcete skusit zoptimalizovat TCP/IP stack, mozte skusit toto, len upozornujem, ze niekedy to zlepsi jeden smer trafficu na ukor druheho (upload vs download a naopak)
echo "65536 1398080 2796160" > /proc/sys/net/ipv4/tcp_wmem
echo "2097136" > /proc/sys/net/core/rmem_max
echo "1048560" > /proc/sys/net/core/rmem_default
echo "2097136" > /proc/sys/net/core/wmem_max
echo "1048560" > /proc/sys/net/core/wmem_default
echo "163840" > /proc/sys/net/core/optmem_max
echo "3129344 3137536 3145728" > /proc/sys/net/ipv4/tcp_mem
echo "65536 1398080 2796160" > /proc/sys/net/ipv4/tcp_rmem
na zrychlenie bootovania je dobre vyhodil ldconfing z init skriptov, detekcie hardwerov a podobne zbytocnosti co si spravite rucne sami po pridani novych kniznic/hardwaru, do lila je vhodne dopisat lba32 a compact optiony..
k optimalizacii fs len tolko, ze pri mkfs.ext3 pokial netreba rezervovat nejake miesto pre roota je dobre dat mkfs.ext3 -m 0 co znamena ze nemude standartnych 10percent rezervovanych pre roota. dalej sa oplati v /etc/fstab mat v optionoch dopisane noatime, pripadne pre XFS este aj nodiratime a osyncisdsync. XFS spominam prave preto, ze sa mi javi ako najrychlejsi fs co sa obrovskeho mnozstva malych suborov tyka (maildir napr.) a aj velke subory zvlada dobre. zato pomaly nastavuje atributy a zere viac cpu (takze kompilacia jadra vam mozno rychlejsie zbehne na ext3).
este by som dodal
pre nove sietovky pouzit ethtool na nastavovanie (tie co su teraz gigabitove rovno na doskach napr.)
btw niektore typy e1000 (intel sietovky) maju bug a obcas sa resetuju, tak to sa da fixnut vypnutim tso ethtool -K eth0 tso off
dalej co sa tyka dma, tak nove zakladne dosky maju sata/pata porty obsluhovany jednym radicom (trebars piix), potom to robi neskutocne problemy, lebo dma maju zapnute iba sata (sata obsluhuje libata co je pod scsi menu a normalne pata oblsuhuje stary ata driver CONFIG_IDE v configu kernela) a tie drivre sa tam biju
potom najlepsie uplne vypnut CONFIG_IDE a nabootovat kernel z append="libata.atapi_enabled=1" v lilo.conf
potom libata bude obsluhovat aj pata aj sata porty a vsetky budu mat zapnute dma (vsetky disky budu /dev/sdx aj na pata portoch) len treba kernel 2.6.15 aspon
pripadne nove dosky maju 2 radice, jeden obsluhuje sata/pata druhy iba pata, tak na sata radic pouzit libata a na ten samostatny radic co obsluhuje iba pata pouzit driver pod CONFIG_IDE
jediny problem libata ze nepodporuje smart a ziadne nastavenia cez hdparm, ale bez ficat bez dma je strach a hroza
pomohlo presunut na kusa ine miesto v skriptoch... evidentne sa tam, kde to sedelo predtym, robilo este nieco, co bolo nezastavitelne zosyncovanim, ani sleepom.
Moj config hdparmu pre ATA disky je nasledovny
hdparm -d1c3u1m32A1a256 /dev/hd?
d1 = zapne DMA prenosy
c3 = IO operacie su vykonavane v 32bit blokoch (na PCI zbernici, treba zapnut aj v BIOSe) so specialnou sync sekvenciou
u1 = umozni odmaskovat ostatne prerusenia pocas vykonavanie diskoveho IO prerusenia, zvysi interaktivitu systemu
m32 = zapne tzv. IDE block mode (32 blokov na jedno IO prerusenie) Pozor! nevhodne pre WD, odporucaju nastavenie 4 alebo 8)
A1 = zapina predcitavaciu funkciu disku (read-lookahead)
a256 = pocet sektorov ktore sa maju citat vopred (128 KB) toto je vhodne pri velkom sekvencnom citani (niektore databazy, image suborov, filmy, vytvaranie image particii). Default hodnota je 8 sektorov (4KB). V systemoch s nahodnym seekovanim a citanim s velkym mnozstvom malych suborov moze mensia hodnota zvysit vykon.
--
Never trust an operating system You don't have sources for.
c3 je skor pre starsie disky. sync nie je potrebny (c1).
parameter m32 je redundantny, DMA to robi automaticky (pouziva sa len pre PIO).
---
Ale je to smutná epocha, keď je ľahšie rozbiť atóm ako predsudky. Einstein.