IBM00.qxd
3/22/2006
1:06 PM
Page iii
Tartalomjegyzék Tartalomjegyzék . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii Elõszó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Köszönetnyilvánítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix A szerkesztõkrõl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx A szerzõkrõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
I. rész 1. fejezet
Linux – áttekintés A Linux telepítésével kapcsolatos kérdések
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 A telepítést megelõzõ tervezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 A lemezrészek elhelyezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Több merevlemez használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 A fájlrendszerek kiválasztása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 A fájlrendszerek átalakítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 A RAID beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Beállítható szolgáltatások a 2.6-os rendszermagban . . . . . . . . . . . . . . . . . . . . . . 8 I/O felvonók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Nagy TLB lapok támogatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Naplózás a Linuxban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 /var/log/messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 /var/log/XFree86.0.log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Naplóváltás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Testreszabott naplózás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Rendszerindítás: BSD vagy System V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Rendszerindítási tábla (/etc/inittab) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 BSD inittab (Slackware) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
IBM00.qxd
iv
3/22/2006
1:06 PM
Page iv
Linux kiszolgálók teljesítményének fokozása
Sys V inittab (Red Hat) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2. fejezet
A rendszermag – áttekintés
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 A Linux fejlõdése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 A Linux rendszermag felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 A rendszermag feladatai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Felépítés és modulok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Rendszermag-szolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 A /proc fájlrendszer – külsõ teljesítménynézet . . . . . . . . . . . . . . . . . . . . . 19 Memóriakezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Folyamatkezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Folyamatközi kommunikáció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Jelzések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Csövek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 System V IPC megoldások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 A Linux SMP modellje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Többprocesszoros rendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Versengés és adatsorosítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Zárak: szemcsézettség és többletköltség . . . . . . . . . . . . . . . . . . . . . . . . . . 26 A gyorsítótár következetessége . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Processzorválasztás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Fájlrendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Virtuális fájlrendszer (VFS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ext2fs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Logikai kötetkezelés és RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Kötetcsoportok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Eszközfájlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 devfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Új szolgáltatások a 2.6-os rendszermagban . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3. fejezet
Kiszolgálóarchitektúrák
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Linux kiszolgálók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Processzorok és párhuzamos feldolgozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Kiszolgálótopológiák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Processzorok vegyítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
IBM00.qxd
3/22/2006
1:06 PM
Page v
Linux kiszolgálók teljesítményének fokozása Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Linux vállalati kiszolgálók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Linux fürtök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Nagyteljesítményû fürtök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Magas elérhetõségû fürtök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Példák kiszolgálórendszerekre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 IBM nagygépek – zSeries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Hardverfelépítés – áttekintés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Megbízhatóság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Az IBM nagygépek I/O felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Pengék . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 NUMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Hardvermegvalósítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Konkrét NUMA-megvalósítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Idõzítõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
II. rész 4. fejezet
Teljesítményelemzõ eszközök Rendszerteljesítmény-mérés
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 A Linux és a teljesítményelemzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Processzorkihasználtság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 vmstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 top és gtop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 sar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Memóriakihasználtság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 /prc/meminfo és /proc/slabinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 vmstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 I/O kihasználtság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 iostat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 sar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Hálózatkihasználtság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Hálózati statisztika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Felületadatok megjelenítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 TCP/IP protokollstatisztikák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 nfsstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
v
IBM00.qxd
vi
3/22/2006
1:06 PM
Page vi
Linux kiszolgálók teljesítményének fokozása
5. fejezet
A rendszer mûködésének nyomon követése
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Követelmények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 A top segédprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 STRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 OProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 opcontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Adatprofilkészítõ eszközök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Performance Inspector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Above Idle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Per-Thread Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Nyomkövetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Utasításkövetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Java Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Java Lock Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Futtatható Performance Inspector eszközök . . . . . . . . . . . . . . . . . . . . . . 128 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6. fejezet
Teljesítményelemzés mérõeszközök segítségével
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Mérés az alkalmazások teljesítményének javításához . . . . . . . . . . . . . . . . . . . 132 Milyen mérõprogramok léteznek? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Mikromérõprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Operációsrendszer-mérõprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Hálózati mérõprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Alkalmazás-mérõprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Webkiszolgáló-mérõprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 SPECweb, SPECweb SSL és TPC-W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 SPECjAppServer és ECPerf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 További alkalmazás-mérõprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
III. rész 7. fejezet
Rendszerhangolás Alapelvek és stratégiák: esettanulmány – mérõprogramok
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Teljesítményértékelési módszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Nyomkövetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Terhelésjellemzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Számszerû elemzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
IBM00.qxd
3/22/2006
1:06 PM
Page vii
Linux kiszolgálók teljesítményének fokozása Szimuláció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Esettanulmány – mérõprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Elemzési módszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Hardver és szoftver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Futtatási szabályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 A célok kitûzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Mérés, elemzés és hangolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Kilépési stratégia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Mérõprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Eredmények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Nyilatkozat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
8. fejezet
Az ütemezõ hangolása
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Egyprocesszoros rendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Szimmetrikus többprocesszoros rendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Nem egységes memóriaelérés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Szimmetrikus többszálas feldolgozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 A 2.6-os Linux ütemezõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Terheléselosztás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Az ütemezõ hangolható elemei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 *CHILD_PENALTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 *CREDIT_LIMIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 *EXIT_WEIGHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 *INTERACTIVE_DELTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 *MAX_SLEEP_AVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 *MAX_TIMESLICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 *MIN_TIMESLICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 *PARENT_PENALTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 *PRIO_BONUS_RATIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 *STARVATION_LIMIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
9. fejezet
A virtuális memória és a teljesítmény
Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Memória és címtér . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Címtér . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Felhasználói címtér . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
vii
IBM00.qxd
viii
3/22/2006
1:06 PM
Page viii
Linux kiszolgálók teljesítményének fokozása
A virtuális memóriaterület . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 A rendszermag címtere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Magasmemória-támogatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 A highmem felület . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Lapozás és lapcsere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Lapozási szabályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Lapcsere és memóriaegyensúly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 A Linux laptáblái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Új szolgáltatások a 2.6-os rendszermagban . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 rmap és objrmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Nagy lapok támogatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Lapfoglalás és lapcsere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Az slab memóriafoglaló . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 A virtuális memória hangolható paraméterei . . . . . . . . . . . . . . . . . . . . . . 209 A processzorütemezõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
10. fejezet Az I/O alrendszerek hatása a teljesítményre Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 I/O ütemezés és a blokk I/O réteg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 A Linux 2.6 I/O ütemezõi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 A Linux 2.4 I/O ütemezõje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 A 2.6 határidõs I/O ütemezõje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Az ütemezõ hangolható paraméterei . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 A 2.6 elõrelátó ütemezõje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 A 2.6-os rendszermag CFQ ütemezõje . . . . . . . . . . . . . . . . . . . . . . . . . . 224 A 2.6-os rendszermag noop I/O ütemezõje . . . . . . . . . . . . . . . . . . . . . . . 225 Az I/O ütemezõ hatása a teljesítményre . . . . . . . . . . . . . . . . . . . . . . . . . 225 Olvasási és írási kéréskötegek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Elõrelátó heurisztika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 A teljesítményt befolyásoló I/O elemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Az I/O eszközök megcímzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
11. fejezet Fájlrendszerhangolás Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 A fájlrendszerek alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Fájlrendszer-megvalósítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Optimális fájlrendszerek létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
IBM00.qxd
3/22/2006
1:06 PM
Page ix
Linux kiszolgálók teljesítményének fokozása A fájlrendszerekkel kapcsolatos alapfogalmak . . . . . . . . . . . . . . . . . . . . 232 Naplózó fájlrendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Amikor egy jó fájlrendszer elromlik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 A megoldás: tranzakciók használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Számtalan lehetõség . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 A lemezek szerepe a fájlrendszer teljesítményében . . . . . . . . . . . . . . . . . . . . . 239 Adattárolás a fizikai lemezen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 A lemezek felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Átviteli sebesség . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 hdparm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Töredezett fájlrendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Fájlösszehangolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Hogyan biztosíthatjuk az adatok és a fájlok épségét? . . . . . . . . . . . . . . . 245 Rendszerhívások használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Fájlleírók használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 A sync/fsync hatása a teljesítményre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Aszinkron írás és olvasás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Az aszinkron I/O használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Aszinkron I/O függvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Nyers lemez I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 A nyers I/O beállítása Linuxon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Példa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Ext2 és Ext3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Az Ext2 felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Blokkfoglalás az Ext2 fájlrendszerben . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Ext2 fájlrendszer létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Az Ext2 fájlrendszer Ext3 bõvítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Rendszermag-támogatás az Ext3-hoz . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Az Ext3 használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Ext3 partíció létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Ext2 fájlrendszer Ext3-ra alakítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Önálló naplózó eszköz használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Ext2/Ext3 segédprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 ReiserFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 A ReiserFS-támogatás engedélyezése a rendszermagban . . . . . . . . . . . . 258 A ReiserFS használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 ReiserFS fájlrendszer létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 A sebesség növelése külsõ naplóval . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 A fájlrendszer becsatolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 Mount-kapcsolók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 A ReiserFS hangolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 ReiserFS-segédprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
ix
IBM00.qxd
x
3/22/2006
1:06 PM
Page x
Linux kiszolgálók teljesítményének fokozása
JFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 A JFS-támogatás engedélyezése a rendszermagban . . . . . . . . . . . . . . . . 264 A JFS használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 JFS fájlrendszer létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 A sebesség növelése külsõ naplóval . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 A fájlrendszer becsatolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Mount-kapcsolók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 A JFS hangolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 JFS-segédprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 XFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Az XFS-támogatás engedélyezése a rendszermagban . . . . . . . . . . . . . . . 267 Az XFS használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 XFS fájlrendszer létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Tele fájlrendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 A sebesség növelése külsõ naplóval . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 A fájlrendszer becsatolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Mount-kapcsolók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Az XFS hangolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 XFS-segédprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
12. fejezet A hálózat hangolása Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 A hálózati protokollverem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Hangolás rendszermag-paraméterekkel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 A rendszermag automatikus hangolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 A legfontosabb rendszermag-paraméterek . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 A csatolótárak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Alapértelmezett csatolótárméret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Legnagyobb csatolótárméret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 netdev_max_backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 somaxconn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 optmem_max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 A TCP/IPv4 protokoll rendszermag-paraméterei . . . . . . . . . . . . . . . . . . . . . . . 279 A TCP tár- és memóriakezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 TCP-beállítások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 TCP kapcsolatkezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 A TCP kapcsolat életben tartása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 IP kaputartomány . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
IBM00.qxd
3/22/2006
1:06 PM
Page xi
Linux kiszolgálók teljesítményének fokozása
13. fejezet Folyamatok közötti kapcsolattartás Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Mit jelent a folyamatok közötti kapcsolattartás? . . . . . . . . . . . . . . . . . . . . . . . . 287 Linux SysV IPC erõforrások és az ipcs parancs . . . . . . . . . . . . . . . . . . . . . . . . 288 Az ipcs parancs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 IPC azonosítók és korlátaik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Szemaforparaméterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 semmni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 semmns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 semmsl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 semopm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 semvmx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Használaton kívüli szemaforparaméterek . . . . . . . . . . . . . . . . . . . . . . . . 292 Üzenetsor-paraméterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 msgmni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 msgmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 msgmnb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Használaton kívüli üzenetsor-paraméterek . . . . . . . . . . . . . . . . . . . . . . . 294 A megosztott memória paraméterei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 shmmni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 shmmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 shmmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 shmall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Az IPC paraméterek dinamikus módosítása . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 A /proc használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 A sysctl használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Az IPC paraméterek statikus módosítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Csövek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
14. fejezet Kódhangolás Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Általános alapelvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Az alkalmazás mûködésének megértése profilkészítés segítségével . . . . . . . . 300 Fordítói kapcsolók mint hangolóeszközök . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 A teljesítményhangolás alapvetõ lépései . . . . . . . . . . . . . . . . . . . . . . . . . 302 Néhány szó a fordítói optimalizálásról . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Kódhangolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Algoritmusok: a teljesítményt befolyásoló tervezési döntések . . . . . . . . . . . . . 303 Problémák és lehetséges megoldások . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Példa: Milyen gyorsan vagyunk képesek kapcsolódni, létrehozni egy fájlt, elolvasni azt, és bontani a kapcsolatot? . . . . . . . . . . 304
xi
IBM00.qxd
xii
3/22/2006
1:06 PM
Page xii
Linux kiszolgálók teljesítményének fokozása
A program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 A kód felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 A kiszolgáló . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Idõmérés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Csatolók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Szálak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Összehangolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 Fájl I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 Az ügyfél . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Megjegyzések a kódhoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Fordítói kapcsolók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Programkönyvtárak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
IV. rész A Linux kiszolgálóalkalmazások teljesítményjellemzése 15. fejezet Webkiszolgálók Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 HTTP kérések és válaszok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 A webkiszolgáló viselkedése a hálózaton . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 A webkiszolgálói tranzakciók felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Webkiszolgáló-modellek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 A webkiszolgálók hangolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 Minden webkiszolgálóra érvényes hangolási lehetõségek . . . . . . . . . . . . . . . . 338 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 A Flash és az eseményvezérelt kiszolgálók . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Tux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 A webkiszolgálók teljesítményét mérõ eszközök . . . . . . . . . . . . . . . . . . . . . . 340 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
16. fejezet Fájl- és nyomtatókiszolgálók Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 A kijelölt hálózati tárolókiszolgálók típusai . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 A hálózati tároló teljesítményének optimalizálása . . . . . . . . . . . . . . . . . . . . . . 344 Milyen adatokat tároljunk távoli rendszeren? . . . . . . . . . . . . . . . . . . . . . . . . . . 344 SAN vagy hálózati fájlrendszer/NAS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Hálózatifájlrendszer-protokollok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Az ügyfél és a kiszolgáló megvalósítási lehetõségei . . . . . . . . . . . . . . . . . . . . 350 A Linux ügyfél hangolása – néhány kulcsfogalom . . . . . . . . . . . . . . . . . . . . . . 350 Protokollrétegek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Megalkuvó zárolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
IBM00.qxd
3/22/2006
1:06 PM
Page xiii
Linux kiszolgálók teljesítményének fokozása Metaadatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Fájlváltozási értesítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Írásvédett kötetek és írásvédett fájlok . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 A Linux fájlkiszolgálók hangolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 Teljesítménymérés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Terhelésmérés a jobb kapacitásfelméréshez . . . . . . . . . . . . . . . . . . . . . . . . . . 358 A nyomtatókiszolgáló teljesítménye . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
17. fejezet Adatbázis-kiszolgálók Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Az adatbázis-felépítések áttekintése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Az adatbázis-hangolás területei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 I/O-hangolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 A várakozási sor hossza és a válaszidõk . . . . . . . . . . . . . . . . . . . . . . . . . 363 Terheléskiegyenlítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Globális memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 A naplózó eszköz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Jellemzõ adatbázis-feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Folyamatkezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Memóriakezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 I/O-kezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Visszaküldõ gyorstárazás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Nyers I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Vektoros I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Aszinkron I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Közvetlen I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Blokkméretû I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 I/O kérelemzárolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
18. fejezet Alkalmazáskiszolgálók Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Az alkalmazáskiszolgáló definíciója . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 A Java, a J2EE és az alkalmazáskiszolgálók . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Az alkalmazáskiszolgálók teljesítményjellemzése . . . . . . . . . . . . . . . . . . . . . . 377 Az alkalmazáskiszolgálók jellemzõi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 Alkalmazáskiszolgálók Linuxon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
xiii
IBM00.qxd
xiv
3/22/2006
1:06 PM
Page xiv
Linux kiszolgálók teljesítményének fokozása
A teljesítmény fokozása és a rendelkezésre állás növelése . . . . . . . . . . . . . . . 390 SMP méretezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Fürtözés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Topológia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Teljesítményhangolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
V. rész Hangolási esettanulmányok 19. fejezet Esettanulmány: A Linux 2.6 I/O ütemezõinek hangolása Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 A teljesítménymérési környezet és a terhelési profilok . . . . . . . . . . . . . . . . . . 406 Az I/O ütemezõk és a teljesítmény . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Egy processzort és egy lemezt tartalmazó rendszer . . . . . . . . . . . . . . . . . . . . . 408 8 utas RAID-5 rendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 16 utas RAID-0 rendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Az AS ütemezõ szekvenciális olvasási teljesítménye . . . . . . . . . . . . . . . . . . . . 413 Az AS és a deadline teljesítményének összehasonlítása . . . . . . . . . . . . . . . . . . 414 A CFQ teljesítménye . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
20. fejezet Esettanulmány: A fájlrendszer hangolása Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 A fájlelrendezés elemzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Az Ext2/Ext3 elrendezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 A Journaled File System (JFS) elrendezés . . . . . . . . . . . . . . . . . . . . . . . . 429 A ReiserFS elrendezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 Az XFS elrendezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Fájlrendszerek hangolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Az Ext3 hangolási lehetõségei: önálló naplózó eszköz használata . . . . . 435 A ReiserFS fájlrendszer hangolási lehetõségei: nagyobb sebesség külsõ naplóval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 A JFS fájlrendszer hangolási lehetõségei: nagyobb sebesség külsõ naplóval 441 Az XFS fájlrendszer hangolási lehetõségei . . . . . . . . . . . . . . . . . . . . . . . 443 A bemenet–kimenet mérése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 iostat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Az iostat és a sar segédprogramok használata . . . . . . . . . . . . . . . . . . . . . 446 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
IBM00.qxd
3/22/2006
1:06 PM
Page xv
Linux kiszolgálók teljesítményének fokozása
21. fejezet Esettanulmány: Hálózati teljesítmény Linuxon Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 Az esettanulmányban használt mérõprogramok . . . . . . . . . . . . . . . . . . . . . . . 454 NetBench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Netperf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 VolanoMark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 SPECWeb99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Továbbfejlesztések a 2.4-es és 2.6-os Linux rendszermagokban . . . . . . . . . . . 455 SendFile-támogatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 TCP daraboló tehermentesítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Folyamat- és IRQ-kötés a hálózati terhelésben . . . . . . . . . . . . . . . . . . . . 460 NAPI-támogatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 TCP tehermentesítõ motor támogatása . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Esettanulmány . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 NetBench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 Netperf3 (Gigabit Ethernet hangolási esettanulmány) . . . . . . . . . . . . . . . 469 VolanoMark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 SpecWeb99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
22. fejezet Esettanulmány: Teljesítményhangolás üzleti terhelés alapján Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 Hangolás üzleti terhelés alapján – áttekintés . . . . . . . . . . . . . . . . . . . . . . . . . . 477 A J2EE szabványos üzleti terhelésmodellje . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Üzleti terhelésmodellünk: részvénypiac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Rendszerfelépítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 További információk a Trade3 alkalmazásról . . . . . . . . . . . . . . . . . . . . . 481 Teljesítményelemzési módszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Kulcsfontosságú pontok, amelyeket tekintetbe kell venni a teljesítményhangolásnál . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 A teljesítményelemzési példa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 A webkiszolgáló . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Az adatbázis-kiszolgáló oldala: a szûk keresztmetszet? . . . . . . . . . . . . . . 489 A Java virtuális gép . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 Az alkalmazáskiszolgáló . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 Hiperszálas feldolgozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Hivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
xv
IBM00.qxd
xvi
3/22/2006
1:06 PM
Page xvi
Linux kiszolgálók teljesítményének fokozása
A függelék A rendszermag paramétereinek hangolása Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 A sysctl felület . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 A sysctl használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 A procfs felület . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 A procfs használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 A sysfs (csak a Linux 2.6 rendszermagnál) . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 A sysfs használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Általános rendszermag-paraméterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Megosztott memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Folyamatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Jelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Profilkészítés és hibakeresés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Rendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Virtuális memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Fájlrendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Hálózat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Net Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 NEIGHBOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 CONFIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Útválasztás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 IP tördelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Tárgymutató . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519