270 likes | 351 Views
Intelligens rendszerfelügyelet. Teljesítménymérés. Tóth Dániel (és Micskei Zoltán). Teljesítménymérés. Mi köze ennek a monitorozáshoz?. Az én gépem 3DMark2018-ban 38592 pontot ér el!. Nekem kicsit komolyabb dologra kell a teljesítménymérés….
E N D
Intelligens rendszerfelügyelet Teljesítménymérés Tóth Dániel (és Micskei Zoltán)
Teljesítménymérés • Mi köze ennek a monitorozáshoz? Az én gépem 3DMark2018-ban 38592 pontot ér el! Nekem kicsit komolyabb dologra kell a teljesítménymérés… Én 7.131 GHz-re húztam a processzoromat és most az Everest CPU benchmarkban 13823 pontot ér el! $$$
Teljesítménymérés • Mi köze ennek a monitorozáshoz? Ha nem tudja kiszolgálni, vegyünk több vasat! Nekem az a fontos, hogy az „üzleti” célt ki tudja szolgálni az infrastruktúra Biztos, hogy ez segít? Biztos, hogy ez a költséghatékony megoldás?
Teljesítménymérés • Mi köze ennek a monitorozáshoz? • A monitorozásnak lehet egy részfeladata a futási teljesítményadatok gyűjtése • Mit tegyünk ha nem elég jó a teljesítmény? • Több, gyorsabb erőforrás allokálása a feladatra? • Nem tudjuk, hogy pontosan melyik részfeladatra allokáljunk többet… • Nem tudjuk, hogy mi lesz a pontos hatása • Lehet, hogy az alkalmazást kéne inkább optimalizálniuk a programozóknak? • De melyik részét? • És mi lesz ennek az üzleti szempontból fontos hatása? Capacity Management
Teljesítménymérés • Összetett fogalom • Metrikák: • válaszidő, késleltetés, áteresztőképesség… • Minden szereplőnek más fontos: • felhasználó: felület válaszideje • fejlesztő: skálázhatóság • üzemeltető: kihasználtság
Teljesítménymérés Garantáltan valós adatok, nem irányítható terhelés Tetszőlegesen generált terhelés
Az előző rész tartalmából… • Tipikusan miket mérünk? • Hardver erőforrások • Pl.: CPU terheltség, memória foglaltság, I/O… • Operációs rendszer • Virtuális memória, fájlrendszer… • Web szerver • kérés/perc, hibás kérések száma, byte/sec… • Adatbázis szerver • tranzakció/perc, zárak száma, lekérdezési terv
PÉLDA: Adatbázis szerver teljesítménye • Adatbázis tranzakció teljesítmény:
Komplex alkalmazások teljesítménymérése • Egy konkrét kérés lefutási ideje? • Komponenseken mért részidők párosítása?
ApplicationResponseMeasurement (ARM) Kibocsátó: The Open Group Megalkotók: IBM, Sun, HP, Oracle, SAP… Verziók: ARM 1.0 – 1996, aktuális: ARM 4.1 – 2007 Cél: alkalmazások menedzselése végpontól-végpontig
Cél • Üzleti alkalmazások felügyelete • Menedzsment platform és az alkalmazás összekapcsolása • Tipikus kérdések: • Milyenek az alkalmazás szintű válaszidők? • Mik a szűk keresztmetszetek? • Milyen IT erőforrásokat használ egy adott kérés? • Mi miatt hibásodott meg a kérés?
Megoldás ötlete • Az alkalmazás kódjának instrumentálása • processRequest() • { • armTransaction.start(); • // processRequest • armTransaction.stop(); • } • doTransaction() • { • armTransaction.start(); • // dotransaction • armTransaction.stop(); • } • newRequest() • { • armTransaction.start(); • // call business logic • armTransaction.stop(); • } 2 ms 4 ms 5 ms Webszerver Adatbázis szerver Alkalmazásszerver
ApplicationResponseMeasurement • Szabvány: C és Java nyelvű API • ARM keretrendszer: Adatgyűjtő ágens Áttekintés, jelentés Teljesítmény adatok Szabványos API ARM implementáció
Felügyelet a teljes tranzakción keresztül • Hívási lánc követése: • „Correlatortoken” átadása a beágyazott hívásoknak T3 Szülő: T2 T2 Szülő: T1 T1 Szülő: - Webszerver Adatbázis szerver Alkalmazásszerver
Finomabb felbontás kezelése Kezdeti felkészülés mérése Várakozási idő számítása
Mért adatok felhasználása T3 Végrehajtás : 3 ms Várakozás: 0 ms T2 Végrehajtás : 4 ms Várakozás: 3 ms T1 Végrehajtás : 5 ms Várakozás: 4 ms Webszerver Adatbázis szerver Alkalmazásszerver Az idő nagy része várakozás → rossz kihasználtság Általában csak 4,5 ms szokott lenni, miért volt most lassú? Ezen érdemes gyorsítani
Alap API felhasználása (részlet) publicvoidrun() { armRegisterAndInit(); … ArmTransactionarmParentTran = tranFactory.newArmTransaction(armApplication, armParentTranDef); armParentTran.start(); childTransaction.run(armParentTran.getCorrelator())) armParentTran.stop(childStatus); }
ARM4 – nyílt forráskódú implementáció • http://www.arm4.org • ARM4 ágens fejlesztése • Java és C nyelvű implementáció is • JLAMP (Java, Linux, Apache, MySQL, PHP) • Apache: mod_arm4 modul • PHP: phparm projekt • Python: arm4module
IBM EnterpriseWorkload Manager (EWLM) • e-Business alkalmazások felügyelete • ARM instrumentálás • DB2 UniversalDatabase • WebSphereApp. Server • Web szerver plug-in: • Apache, IIS, IBM HTTP Server
Eclipse TPTP • Test & Performance Tools Platform • ARM felhasználása fejlesztőként • Telepítés: • TPTP all-in-one csomag telepítése • Build-to-ManageToolkit része • ARM instrumentálás kiválasztásához telepíteni kell a RemoteAgentControllert(RAC)!
További információ • The Open Group, ApplicationResponseMeasurement szabvány • Mark W. Johnson, Monitoring and Diagnosing Applications with ARM 4.0, IBM • Enabling ARM services on IBM-instrumented middleware, EnterpriseWorkload Manager • ARM4.org: nyílt forráskódú ARM ágens • Apache, MySQL, php modulok • EclipseBuild-to-ManageToolkit (Btm) • ARM implementáció az EclipseTPTP-ben • Profiling an Application Using ARM