ISCSI jõudluse suurendamine Linuxis
Sisukord
iSCSI jõudluse suurendamine
vaja leida hea kompromiss latentsi suhtes. Tüüpilise iSCSI kasutava masina kettkasutusmuster on teistsugune -- rohkem väiksemaid pakette ja latents on kriitilisem. Tuleb analüüsida mis kihid üksteise peale on laotud ning kus ja mida puhverdatakse. Võimalik et tuleb tuunida ka I/O scheduleri seadeid hostis ja/või klientides.
Alternatiivseid iSCSI stacke võib kah proovida, selles suhtes on viimastes kernelites toimunud mingid arengud ja loodetavasti paremuse suunas.
Jumbo kaadrite lubamine
Kõik switchid ei pruugi jumbo kaadreid ja flowcontrolli toetada. Tasub enne switchi manualist järgi uurida kui neid hakata lubama. Töötavat võrguseadet saab jooksvalt ümber seadistada ifconfigu abil.
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0E:0C:70:C9:63 inet addr:172.19.51.160 Bcast:172.19.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
See mis meid huvitab on MTU väärtus. Hetkel on see seatud 1500 peale mis pole jumbo paketi suurus. Selleks, et muuta tuleb anda järgnev käsk:
# ifconfig eth0 mtu 9000 # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0E:0C:70:C9:63 inet addr:172.19.51.160 Bcast:172.19.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:9000 Metric:1
Selleks, et muuta seadistus Debianis püsivaks /etc/network/interfaces
auto eth1 iface eth1 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 MTU 9000
isc-dhcpd abil muutmine
subnet 192.168.0.0 netmask 255.255.255.0 { option broadcast-address 192.168.0.255; option routers 192.168.0.1; option interface-mtu 9000; }
Testimiseks proovime pingida
# ping 10.10.0.1 -M do -s 8972 PING 10.10.0.1 (10.10.0.1) 8972(9000) bytes of data. 8980 bytes from 10.10.0.1: icmp_req=1 ttl=64 time=2.39 ms 8980 bytes from 10.10.0.1: icmp_req=2 ttl=64 time=0.283 ms 8980 bytes from 10.10.0.1: icmp_req=3 ttl=64 time=0.259 ms
Linuxi I/O SCHEDULERi muutmine
Linux pakub mitmesuguseid kerneli I/O scheduleerijaid. Näiteks Redhatis on vaikimisi "CGQ" (Completely Fair Queuing). Näiteks Open-iSCSI grupp teatab, et vahel võib "NOOP"i kasutamine toimida iSCSI serveri puhul paremini.
Scheduleri saab jooksvalt muuta keskonnas näiteks järgnevalt:
#echo noop > /sys/block/${DEVICE}/queue/scheduler
Samamoodi saab hiljem muuta seadistuse tagasi cfg peale
LINUX READ AHEAD VALUE
Vaikimisi küsib Linux lugemise ajal järgmised 256 sektorit. Selle muutuja suurendamine võib lugemiskiirust märkimisväärselt suurendada. Ehk öelda siis kernelile, e ta loeks rohkem sektoreid vaikimisi ette.
Seda read-ahead numbrit saab muuta blockdev käsuga.
See on kasulik muidugi vaid järjestikuliselt I/O'd kasutavate rakenduste puhul ja võib põhjustada jõudluseprobleeme juhusliku lugemise korral. Järjestikuse lugemise puhul võis märgata aga jõudluse tõusu 10% kuni 20% vahemikus.
Süntaks on: blockdev –setra X <device name>
Näiteks
# /sbin/blockdev –setra 4096 /dev/sda
Et vaadelda eksisteerivat read ahead seadistusi kirjuta:
# blockdev –getra <device name>
Jumbod tuelb kindlasti lubada kui switch ja kõik masinad toetavad.
http://forum.open-e.com/showthread.php?t=1138
http://www.randomboot.org/storage/518-iscsi-performance-tuning.html