• No results found

PROFILOV´AN´I APLIKAC´I PRO .NET A SQL SERVER

N/A
N/A
Protected

Academic year: 2022

Share "PROFILOV´AN´I APLIKAC´I PRO .NET A SQL SERVER"

Copied!
74
0
0

Loading.... (view fulltext now)

Full text

(1)

PROFILOV´ AN´I APLIKAC´I PRO .NET A SQL SERVER

Bakal´ aˇrsk´ a pr´ ace

Studijn´ı program: N2612 – Elektrotechnika a informatika Studijn´ı obor: 1802R022 – Informatika a logistika Autor pr´ace: Anton´ın Urban

Vedouc´ı pr´ace: Ing. Roman ˇSp´anek Ph.D.

(2)

PROFILING OF APPLICATIONS FOR .NET AND SQL SERVER

Bachelor thesis

Study programme: N2612 – Electrotechnology and informatics Study branch: 1802R022 – Informatics and logistics

Author: Anton´ın Urban

Supervisor: Ing. Roman ˇSp´anek Ph.D.

(3)
(4)
(5)
(6)

Podˇ ekov´ an´ı

R´ad bych zde podˇekoval vedouc´ımu m´e pr´ace, Ing. Romanovi Sp´ankovi Ph.D., ˇze se dodateˇcnˇe ujal m´e pr´ace ve chv´ıli, kdy jsemˇ pro ni nemˇel vedouc´ıho. Dˇekuji tak´e za jeho cenn´e rady, pˇripom´ınky a vstˇr´ıcnost pˇri konzultac´ıch. Dalˇs´ı podˇekov´an´ı patˇr´ı Ing. Janˇe Vitvarov´e, Ph.D. a Ing. Janu Krausovi, Ph.D. kteˇr´ı mi pomohli s hled´an´ım vedouc´ıho. Posledn´ı podˇekov´an´ı bych chtˇel vˇenovat firmˇe Winfo s.r.o. za poskytnut´ı vzorov´e aplikace a datab´aze pro ´uˇcely t´eto pr´ace.

(7)

Abstrakt

Tato pr´ace se zab´yv´a mˇeˇren´ım a optimalizac´ı aplikac´ı platformy .NET a datab´az´ı SQL Server. C´ılem pr´ace je sezn´amit s pojmem profilov´an´ı a uk´azat nˇekter´e dostupn´e postupy a n´astroje slouˇz´ıc´ı pro mˇeˇren´ı a optimalizaci aplikac´ı vyuˇz´ıvaj´ıc´ıch SQL Server jako zdroj dat.

Pro mˇeˇren´ı v´ykonu aplikac´ı i ˇcinnosti SQL Server je v pr´aci pops´ano pouˇzit´ı v´ykonnostn´ıch ˇc´ıtaˇc˚u, zamˇeˇren´ych na mˇeˇren´ı vyt´ıˇzen´ı procesoru, operaˇcn´ı pamˇeti a disku. Z pohledu optimalizace pr´ace seznamuje s dvˇema profilery pro platformu .NET (Visual Stu- dio profiler, dotTrace) a n´astrojem Database Engine Tuning Advi- sor pro optimalizaci datab´az´ı v SQL Server. Demonstrace n´astroj˚u je provedena na vzorov´e aplikaci a datab´azi, kdy je detailnˇe pops´an cel´y pr˚ubˇeh optimalizace spoleˇcnˇe s mˇeˇren´ım pomoc´ı v´ykonnostn´ıch ˇc´ıtaˇc˚u.

Kl´ıˇ cov´ a slova:

profilov´an´ı, .NET, profiler, mˇeˇren´ı aplikac´ı, V´ykonnostn´ı ˇc´ıtaˇce syst´emu Windows, Visual Studio Profiler, dotTrace, Microsoft SQL Server, Database Engine Tuning Advisor, SQL Server Profiler

(8)

Abstract

This thesis deals with measurement and optimalization of applicati- ons of the .NET platform and SQL Server databases. The aim of the thesis is to familiarize reader with the term profiling and show some of the available procedures and tools used for measuring and optimizing applications using SQL Server as a data source.

Use of performance counters is described for measurement of ap- plication performance and activity of SQL Server. It is focused on measuring processor, operation memory and disk usage. In terms of optimalization, there are two profilers for the .NET platform (Visual Studio profiler, dotTrace) and the Database Engine Tuning Advisor tool for SQL Server database optimalization. The use of all the tools is demonstrated on a sample application and database.

The overall optimalization process is described in details alongside with the use of performance counters for measurements.

Key words:

profiling, .NET, profiler, aplication measurement, Windows Perfor- mance Counters, Visual Studio Profiler, dotTrace, Microsoft SQL Server, Database Engine Tuning Advisor, SQL Server Profiler

(9)

Obsah

Seznam zkratek . . . 13

Uvod´ 14 1 Pojem profilov´an´ı 16 1.1 Profilov´an´ı aplikac´ı . . . 16

1.2 V´yznam profilov´an´ı . . . 16

2 Uvod do platformy .NET a SQL Server´ 18 2.1 SQL Server . . . 18

2.2 Platforma .NET . . . 18

2.2.1 Struktura platformy .NET . . . 19

2.2.2 Standard Common Language Infrastructure . . . 19

2.2.3 Bˇehov´e prostˇred´ı (CLR) . . . 20

2.2.4 Just in Time kompilace . . . 20

2.2.5 Profilovac´ı API . . . 20

3 Zp˚usoby mˇeˇren´ı aplikac´ı 22 3.1 Microbenchmarking . . . 22

3.2 Vestavˇen´e n´astroje syst´emu Windows . . . 22

3.2.1 V´ykonnostn´ı ˇc´ıtaˇce . . . 23

3.2.2 Event Tracing for Windows . . . 23

3.3 Profilery . . . 24

3.3.1 Z´akladn´ı metody sb´ır´an´ı dat . . . 24

4 Popis pouˇzit´ych n´astroj˚u 26 4.0.1 Pouˇz´ıt´ı v´ykonnostn´ıch ˇc´ıtaˇc˚u . . . 26

4.0.2 Visual Studio Profiler . . . 29

4.0.3 DotTrace . . . 32

4.1 Mˇeˇren´ı a optimalizace SQL server . . . 33

4.1.1 Mˇeˇren´ı v´ykonu SQL Server . . . 33

4.1.2 Database Engine Tuning Advisor . . . 34

5 Mˇeˇren´ı a optimalizace vzorov´e aplikace a datab´aze 36 5.1 Popis vzorov´e aplikace . . . 36

5.1.1 Struktura dat zpracov´avan´ych aplikac´ı . . . 37

5.2 Optimalizace SQL server pro vzorovou aplikaci . . . 38

(10)

5.2.1 Nahrazen´ı funkce INSERT OR UPDATE . . . 38

5.2.2 Optimalizace SQL datab´aze . . . 40

5.2.3 Mˇeˇren´ı SQL Server a datab´aze . . . 41

5.3 Profilov´an´ı vzorov´e aplikace . . . 45

5.3.1 Optimalizace problematick´eho m´ısta . . . 47

5.3.2 Srovn´an´ı optimalizovan´e verze s p˚uvodn´ı verz´ı . . . 49

Z´avˇer 50

Literatura 54

A Pˇr´ılohy 55

B Obsah pˇriloˇzen´eho CD 73

(11)

Seznam sn´ımk˚ u obrazovky

1 Hlavn´ı okno n´astroje Sledov´an´ı v´ykonu. . . 26

2 Okno Visual Studio Profileru s otevˇren´ym reportem. . . 31

3 Okno profileru dotTrace s otevˇren´ym reportem. . . 33

4 Vzorov´a aplikace WinfoMI . . . 36

5 Graf porovn´avaj´ıc´ı ˇcasy d´avek TSQL podm´ınky a triggeru . . . 39

6 Srovn´an´ım ˇcas˚u d´avek TSQL pˇr´ıkaz˚u po optimalizaci . . . 41

7 Vyznaˇcen´a ”hork´a“ cesta ve VS profileru. . . 46

8 Doporuˇcen´a m´ısta k anal´yze v dotTrace. . . 46

9 Datab´azov´y model vzorov´e aplikace . . . 57

10 Nastaven´ı SQL Server Profiler . . . 57

11 Nastaven´ı ladˇen´ı v DTA . . . 58

12 V´ysledn´a optimalizaˇcn´ı doporuˇcen´ı z DTA pro podm´ınku. . . 58

13 V´ysledn´a optimalizaˇcn´ı doporuˇcen´ı z DTA pro trigger. . . 59

14 Srovn´an´ı ˇcas˚u TSQL d´avek pro trigger . . . 59

15 Srovn´an´ı ˇcas˚u TSQL d´avek pro podm´ınku . . . 60

16 Graf z mˇeˇren´ı vyt´ıˇzen´ı CPU datab´az´ı, verze s podm´ınkou pˇred opti- malizac´ı DB. . . 60

17 Graf z mˇeˇren´ı vyt´ıˇzen´ı CPU datab´az´ı, verze s triggerem pˇred optima- lizac´ı DB. . . 60

18 Graf z mˇeˇren´ı vyt´ıˇzen´ı CPU datab´az´ı, verze s podm´ınkou po optima- lizaci DB. . . 61

19 Graf z mˇeˇren´ı vyt´ıˇzen´ı CPU datab´az´ı, verze s triggerem po optimali- zaci DB. . . 61

20 Grafy z mˇeˇren´ı disku, verze s podm´ınkou pˇred optimalizac´ı DB. . . . 62

21 Grafy z mˇeˇren´ı disku, verze s triggerem pˇred optimalizac´ı DB. . . 63

22 Grafy z mˇeˇren´ı disku, verze s podm´ınkou po optimalizaci DB. . . 64

23 Grafy z mˇeˇren´ı disku, verze s triggerem po optimalizaci DB. . . 65

24 Grafy z mˇeˇren´ı vyt´ıˇzen´ı RAM ˇcinnost´ı MSQLS, verze s podm´ınkou pˇred optimalizac´ı DB. . . 65

25 Grafy z mˇeˇren´ı vyt´ıˇzen´ı RAM ˇcinnost´ı MSQLS, verze s triggerem pˇred optimalizac´ı DB. . . 66

26 Grafy z mˇeˇren´ı vyt´ıˇzen´ı RAM ˇcinnost´ı MSQLS, verze s podm´ınkou po optimalizaci DB. . . 66

(12)

27 Grafy z mˇeˇren´ı vyt´ıˇzen´ı RAM ˇcinnost´ı MSQLS, verze s triggerem po optimalizaci DB. . . 66 28 Grafy z mˇeˇren´ı za ´uˇcelem stanoven´ı v´ykonnostn´ıch prah˚u mˇeˇren´eho

disku. . . 67 29 Grafy z mˇeˇren´ı vyt´ıˇzen´ı CPU a RAM ˇcinnost´ı aplikace, verze s podm´ınkou

pˇred optimalizac´ı DB. . . 68 30 Grafy z mˇeˇren´ı vyt´ıˇzen´ı CPU a RAM ˇcinnost´ı aplikace, verze s trig-

gerem pˇred optimalizac´ı DB. . . 69 31 Grafy z mˇeˇren´ı vyt´ıˇzen´ı CPU a RAM ˇcinnost´ı aplikace, verze s podm´ınku

po optimalizaci DB. . . 70 32 Grafy z mˇeˇren´ı vyt´ıˇzen´ı CPU a RAM ˇcinnost´ı aplikace, verze s trig-

gerem po optimalizaci DB. . . 71 33 Grafy z mˇeˇren´ı vyt´ıˇzen´ı CPU a RAM ˇcinnost´ı aplikace, verze po op-

timalizaci logu. . . 72

(13)

Seznam tabulek

1 Porovn´an´ı pr˚umˇer˚u ˇcas˚u importu z verze s triggerem a podm´ınkou pˇred optimalizac´ı . . . 39 2 Statistiky z ladˇen´ı v DTA . . . 40 3 Odhadovan´e a vypoˇcten´e zrychlen´ı datab´aze . . . 42 4 Porovn´an´ı pr˚umˇer˚u ˇcas˚u importu z verze s triggerem a podm´ınkou

po optimalizaci . . . 42 5 Pr˚umˇern´e hodnoty obsazen´ı operaˇcn´ı pamˇeti . . . 45 6 Srovn´an´ı ˇcas˚u importu pˇred a po optimalizaci logov´an´ı . . . 49

(14)

Seznam zkratek

.NET Microsoft .NET Framework

API Application Programming Interface

C# C Sharp

CIL Common Intermediate Language CLI Common Language Infrastructure CLR Common Language Runtime CLS Common Language Specification CPU Central Processing Unit

DB Database

DBMS Database Management System DTA Database Engine Tuning Advisor ETW Event Tracing for Windows JIT Just In Time

MSIL Microsoft Intermediate Language MSQLS Microsoft SQL Server

RAM Random Access Memory SQL Structured Query Language, SSMS SQL Server Management Studio TSQL Transact-SQL

VES Virtual Execution System

VS Visual Studio

WPF Windows Presentation Foundation

(15)

Uvod ´

Struktura modern´ı poˇc´ıtaˇcov´e aplikace, naprogramovan´e objektovˇe ve vyˇsˇs´ım pro- gramovac´ım jazyce, b´yv´a typicky sloˇzit´a a sest´av´a z nˇekolika celk˚u. Pokud chceme v dneˇsn´ı dobˇe takovou aplikaci programovat, velice ˇcasto neprogramujeme jen za po- moci z´akladn´ıch knihoven dan´eho jazyka. Na velkou ˇc´ast d´ılˇc´ıch ˇc´ast´ı aplikace exis- tuj´ı jiˇz vytvoˇren´a ˇreˇsen´ı ve formˇe komponent a n´am je staˇc´ı jen vhodnˇe implemen- tovat. Takov´y postup se v dneˇsn´ı dobˇe d´a oznaˇcit za trend. V´yhodou vyuˇz´ıv´an´ı t´eto modul´arnosti je uˇsetˇren´y ˇcas na v´yvoji, kter´y by program´ator musel str´avit vlastn´ım ˇreˇsen´ım jednotliv´ych celk˚u. Naproti tomu je ale potˇreba vybrat nejvhodnˇejˇs´ı ˇreˇsen´ı – zpravidla jich lze nal´ezt nˇekolik na jednu oblast aplikace. Mimo jednoduˇsˇs´ıch kom- ponent, specializuj´ıc´ıch se na d´ılˇc´ı probl´emy (napˇr. tvorba logu) se m˚uˇzeme tak´e setkat s komplexn´ımi softwarov´ymi bal´ıky zamˇeˇruj´ıc´ı se na velkou oblast probl´em˚u.

Pˇr´ıkladem mohou b´yt bal´ıky pro tvorbu grafick´eho rozhran´ı, kdy bal´ık obsahuje nˇekolik des´ıtek komponent a souvisej´ıc´ıch funkc´ı. Tyto, ˇcasto komerˇcn´ı, bal´ıky se jejich v´yvoj´aˇri snaˇz´ı nab´ızet pro co nejvˇetˇs´ı poˇcet v´yvoj´aˇr˚u. Tato variabilita kom- ponent spoleˇcnˇe s modul´arnost´ı jako takovou m˚uˇze pˇrin´aˇset probl´emy z pohledu efektivity aplikace pˇri vyuˇz´ıv´an´ı v´ypoˇcetn´ıho v´ykonu.

Vyvst´av´a moˇzn´a ot´azka, proˇc je potˇreba v dneˇsn´ı dobˇe sledovat efektivitu aplikace.

Casto m´ame kolem sebe zaˇr´ızen´ı nab´ızej´ıc´ı mnohem v´ıce v´ˇ ykonu, neˇz potˇrebujeme.

V prvn´ı ˇradˇe z´aleˇz´ı na ´uˇcelu aplikace – napˇr´ıklad na zpracov´av´an´ı a reprezentaci velmi objemn´ych dat bude vˇzdy v´yhodn´e m´ıt k dispozici efektivn´ı aplikaci, protoˇze takov´e operace mohou i dnes nar´aˇzet na hardwarov´e limity. Siln´y hardware n´am nemus´ı automaticky zaruˇcit rychlou a efektivn´ı aplikaci. ˇSpatnˇe naprogramovan´a aplikace m˚uˇze b´yt pomal´a i na dostateˇcnˇe siln´em hardwaru. Pokud m´ame nav´ıc aplikaci urˇcenou pro bˇeˇzn´eho spotˇrebitele, moˇzn´a ji bude zapotˇreb´ı optimalizovat pro slabˇs´ı hardware, neˇz s jak´ym jsme se setk´avali pˇri v´yvoji. Pr´avˇe v takov´ych situac´ıch m˚uˇze b´yt vhodn´e uvaˇzovat o profilov´an´ı.

Pokud optimalizujeme jednoduˇsˇs´ı aplikaci, m´ame vˇetˇsinou urˇcit´y pˇrehled o tom, jak dlouho by urˇcit´e operace mˇely trvat. Uˇz v pr˚ubˇehu programov´an´ı tak v´ıme o m´ıstech, kter´a jsou problematick´a a m˚uˇzeme se na nˇe pozdˇeji zamˇeˇrit. V pˇr´ıpadˇe op- timalizace aplikace se sloˇzitou strukturou ale m˚uˇze b´yt probl´em v˚ubec naj´ıt nˇejak´e kritick´e m´ısto. Jedna operace aplikace se m˚uˇze v k´odu sest´avat ze sekvence nˇekolika ˇcinnost´ı, kdy jednotliv´e d´ılˇc´ı ˇc´asti mohou vykon´avat r˚uzn´e objekty z r˚uzn´ych ˇc´ast´ı struktury aplikace. Abychom tedy mohli nal´ezt kritick´e m´ısto, je vhodn´e m´ıt urˇcitou

(16)

reprezentaci bˇehu aplikace. Vˇetˇsina profilovac´ıch n´astroj˚u n´am pr´avˇe takovou repre- zentaci bˇehu aplikace nab´ız´ı a pom´ah´a n´am tak s hled´an´ım m´ıst k optimalizaci.

V´ysledek se samozˇrejmˇe odv´ıj´ı od toho, jak dobˇre dok´aˇzeme v´ystup z profilov´an´ı interpretovat. Obecnˇe je k vyhodnocov´an´ı v´ysledk˚u ˇcasto potˇreba urˇcit´e znalosti profilovan´e aplikace a programov´an´ı obecnˇe. Podstatn´a m˚uˇze b´yt pro ´uspˇech tak´e volba, jakou metodu profilov´an´ı v˚ubec pouˇzijeme.

Dalˇs´ım v´yznamn´ym pouˇzit´ım profilov´an´ı je mˇeˇren´ı parametr˚u bˇeˇz´ıc´ıch aplikac´ı.

V praxi se m˚uˇzeme setkat napˇr´ıklad s poˇzadavky na stanoven´ı minim´aln´ı velikosti operaˇcn´ı pamˇeti pro bˇeh aplikace. Zde se jiˇz prim´arnˇe nemus´ıme bavit o specializo- van´ych profilovac´ıch n´astroj´ıch, profilov´an´ım m˚uˇze b´yt i sb´ır´an´ı dat za bˇehu aplikace nadefinovan´e pˇr´ımo v jej´ım k´odu. Profilov´an´ı se d´a tak´e vyuˇz´ıt uˇz pˇri samotn´em v´yvoji aplikace. V praxi se ˇcasto probl´emy s v´ykonem aplikac´ı ˇreˇs´ı aˇz v pr˚ubˇehu testov´an´ı, nebo jeˇstˇe h˚uˇre aˇz pˇr´ımo pˇri nasazen´ı. Pokud budeme profilovac´ı n´astroje vyuˇz´ıvat uˇz ve f´azi v´yvoje, m˚uˇze dos´ahnout vˇetˇs´ı efektivity cel´eho v´yvojov´eho cyklu.

Tato pr´ace m´a za ´ukol sezn´amit s profilov´an´ım a n´astroji pro mˇeˇren´ı a ladˇen´ı v´ykonu pro platformu .NET a datab´azov´y syst´em SQL server. Reˇserˇsn´ı ˇc´ast pr´ace by mˇela kr´atce tyto platformy pˇredstavit a n´aslednˇe popsat pro nˇe dostupn´e moˇznosti profilov´an´ı. Praktick´a ˇc´ast by pak mˇela detailnˇeji popsat vybran´e n´astroje pro mˇeˇren´ı a optimalizaci a jejich pouˇzit´ı n´aslednˇe demonstrovat na vzorov´e aplikaci.

(17)

1 Pojem profilov´ an´ı

Pokud pojem profilov´an´ı (profiling) zad´ame do anglick´eho slovn´ıku, setk´ame se vˇetˇsinou s vysvˇetlen´ım pojmu ve vztahu k psychologii. Napˇr´ıklad Cambridge Dicti- onary uv´ad´ı definici pˇribliˇznˇe takto: ”aktivita sb´ır´an´ı informac´ı o nˇejak´e osobˇe za

´

uˇcelem pops´an´ı takov´e osoby”[16]. Tato definice pojmu samozˇrejmˇe nem´a pˇr´ımou souvislost s profilov´an´ım softwaru, s urˇcit´ym nadhledem se v n´ı d´a pozorovat vazba na pojem profilov´an´ı spojen´y s v´yvojem aplikac´ı. Profilov´an´ı, jak´ym se zab´yv´a tato pr´ace, m´a tak´e podobu sbˇeru informac´ı za ´uˇcelem pops´an´ı nˇejak´e entity (zde apli- kace); v´ysledky pak mohou v´est k odhalen´ı v´ykonnostn´ıho probl´emu.

1.1 Profilov´ an´ı aplikac´ı

Pojem profilov´an´ı aplikac´ı (d´ale jen profilov´an´ı) nen´ı striktnˇe ukotven a ani nelze naj´ıt velk´e mnoˇzstv´ı definic, je tedy pomˇernˇe sloˇzit´e ho pˇresnˇe definovat. V ˇc´asti pˇr´ıpad˚u se s pojmem profilov´an´ı nebo profilace setk´av´ame ve spojen´ı se speciali- zovan´ymi n´astroji pro odhalov´an´ı v´ykonnostn´ıch probl´em˚u aplikac´ı – takzvan´ymi profilery.[3] [1] [10] Samotn´y pojem profilov´an´ı ale nen´ı v tˇechto pˇr´ıpadech obecnˇe definov´an, vystupuje zde sp´ıˇse ve vztahu k ˇcinnosti profileru (profiler profiluje, pro- filov´an´ı = pouˇz´ıv´an´ı profileru).

Dalˇs´ım v´yskyt pojmu je v textech zab´yvaj´ıc´ıch se mˇeˇren´ım v´ykonu bˇeˇz´ıc´ıch apli- kac´ı a jejich optimalizac´ı. Zde b´yv´a profilov´an´ı popisov´ano jako pouˇz´ıv´an´ı r˚uzn´ych n´astroj˚u k odhalen´ı v´ykonnostn´ıch probl´em˚u. N´astroji zde nejsou myˇsleny pouze profilery, jedn´a se prakticky o cokoliv, co n´am umoˇzn´ı zmˇeˇrit v´ykon urˇcit´e aplikace.

Stejnˇe tak odhalen´ı v´ykonnostn´ıch probl´em˚u nemus´ı b´yt v tomto v´yznamu spojeno pouze s probl´emy ˇspatnˇe napsan´eho k´odu (kam vˇetˇsinou smˇeˇruje pouˇzit´ı profiler˚u).

Probl´em m˚uˇzeme hledat napˇr´ıklad v pouˇzit´em hardwaru nebo pomal´e datab´azi. [29]

[30]

1.2 V´ yznam profilov´ an´ı

Z v´yˇse uveden´eho by se tedy profilov´an´ı dalo zobecnit na mˇeˇren´ı bˇeˇz´ıc´ıch aplikac´ı za ´uˇcelem optimalizace. Stejnˇe jako pojem profilov´an´ı nen´ı ukotveno ani pouˇzit´ı profilov´an´ı. Prim´arnˇe se setk´ame s pouˇzit´ım k optimalizaci. Profilov´an´ı, respektive mˇeˇren´ı aplikac´ı obecnˇe, m˚uˇze m´ıt ale i jin´e vyuˇzit´ı.

(18)

Pˇr´ıkladem takov´eho vyuˇzit´ı profilov´an´ı je napˇr´ıklad sc´en´aˇr, kdy m´ame nezn´amou a sloˇzitou aplikaci a potˇrebujeme zjistit, jak funguje jej´ı urˇcit´a ˇc´ast. Pouˇzit´ım profi- lovac´ıho n´astroje v k´odu zjist´ıme metody a funkce vyuˇzit´e danou operac´ı, coˇz n´am m˚uˇze pomoci se v aplikaci zorientovat. Stejnˇe tak mˇeˇren´ı aplikace z pohledu dopadu na v´ykon hardwaru nemus´ı vˇzdy slouˇzit prim´arnˇe k optimalizaci. M˚uˇzeme cht´ıt zjis- tit minim´aln´ı konfiguraci potˇrebnou pro bˇeh aplikace nebo pouze srovn´avat dvˇe verze aplikace.

(19)

2 Uvod do platformy .NET a SQL Server ´

Tato kapitola se vˇenuje struˇcn´emu popisu platformy .NET a datab´azov´eho syst´emu SQL Server. Souˇc´ast´ı kapitoly je tak´e popis struktury platformy .NET slouˇz´ıc´ı k pochopen´ı z´akladn´ıch pojm˚u spojen´ych s touto platformou. Z´avˇer kapitoly se pak vˇenuje pojmu profilovac´ı API.

2.1 SQL Server

Microsoft SQL Server (nˇekdy zkracov´ano na SQL Server nebo MSQLS) je relaˇcn´ı da- tab´azov´y syst´em spoleˇcnosti Microsoft. Patˇr´ı mezi takzvan´e syst´emy ˇr´ızen´ı b´aze dat (anglicky database management system – DBMS). Hlavn´ı charakteristikou tˇechto syst´em˚u je poskytovat softwarov´e rozhran´ı, umoˇzˇnuj´ıc´ı uˇzivatel˚um nebo aplikac´ım operovat s datab´azovou strukturou a daty. SQL Server hraje jednu z kl´ıˇcov´ych rol´ı mezi DBMS, pˇredevˇs´ım v industri´aln´ı sf´eˇre.

Softwarov´e rozhran´ı je u SQL Server zastoupeno pˇredevˇs´ım aplikac´ı SQL Server Management Studio (SSMS). SSMS poskytuje funkce a n´astroje pro konfiguraci, monitorov´an´ı a administraci server˚u a datab´az´ı v SQL Server. Mezi dalˇs´ı n´astroje SQL Server patˇr´ı SQL Server profiler a Database Engine Tuning Advisor (DTA).

Prvn´ı n´astroj slouˇz´ı k sledov´an´ı a zaznamen´av´an´ı ud´alost´ı bˇeˇz´ıc´ıho serveru, druh´y k optimalizaci datab´az´ı.

Rozˇs´ıˇren´ı jazyka SQL pro SQL Server se naz´yv´a Transact-SQL a b´yv´a bˇeˇznˇe zkracov´ano na TSQL. [37] [22]

2.2 Platforma .NET

.NET je platforma spoleˇcnosti Microsoft urˇcen´a pro syst´emy Windows. Platforma zprostˇredkov´av´a prostˇred´ı pro v´yvoj softwaru v nˇekter´em z podporovan´ych jazyk˚u.

Mezi z´akladn´ı zastˇreˇsovan´e jazyky patˇr´ı C#, Managed C++ (C++ implementovan´e do platformy .NET ) a jazyk F#.

C´ılem frameworku .NET je poskytnout jednotn´e prostˇred´ı s minim´aln´ı vazbou na konfiguraci nebo verzi c´ılov´e platformy. Framework .NET se tedy d´a ch´apat jako

(20)

urˇcit´a softwarov´a vrstva nad c´ılovou platformou umoˇzˇnuj´ıc´ı bˇeh vˇsech aplikac´ı v pod- porovan´ych jazyc´ıch. V´yhodou je pˇrenositelnost aplikac´ı – v tomto pˇr´ıpadˇe mezi ver- zemi syst´emu Windows. Pokud je aplikace napsan´a v jazyce platformy .NET, m´ame zaruˇceno, ˇze tato aplikace pobˇeˇz´ı na jak´ekoliv konfiguraci a verzi syst´emu Windows podporuj´ıc´ı danou verzi .NET frameworku. Z´aroveˇn bˇehov´e prostˇred´ı .NET posky- tuje napˇr´ıklad automatick´e uvolˇnov´an´ı pamˇeti, z´akladn´ı datov´e typy, optimalizaci bˇehu aplikace, spr´avu referenc´ı a podobnˇe. Velkou v´yhodou frameworku je tak´e rozs´ahl´a sada z´akladn´ıch knihoven, kter´e jsou pˇr´ımo jeho souˇc´ast´ı. [25] [13] [8] [35]

[19] [38]

2.2.1 Struktura platformy .NET

K´od vytvoˇren´y v jazyce platformy .NET je po kompilaci kompil´atorem pˇreveden do intermedi´arn´ıho (

”pˇrechodn´eho“) jazyka naz´yvan´eho Common Intermediate Lan- guage (CIL, lze se setkat i se starˇs´ım n´azvem Microsoft Intermediate Language – MSIL). K´od tohoto jazyka se nˇekdy oznaˇcuje jako ˇr´ızen´y (managed code), protoˇze k jeho v´ykonu je potˇreba sluˇzba, kter´a tento k´od ˇr´ıd´ı. U platformy .NET se tato sluˇzba naz´yv´a Common Language Runtime (CLR). [25] [8] [19] [38] [26] [5]

2.2.2 Standard Common Language Infrastructure

Standard Common Language Infrastructure (CLI) popisuje z´akladn´ı aspekty, defi- nuj´ıc´ı intermedi´arn´ı jazyk CIL: Common Type System, metadata, Common Lan- guage Specification a Virtual Execution System. CLI obecnˇe zaruˇcuje dva d˚uleˇzit´e aspekty platformy .NET – jazykovou a hardwarovou nez´avislost.

Common Type System

Jednotn´y syst´em datov´ych typ˚u. Smyslem je definovat datov´e struktury na platformˇe .NET jako jsou tˇr´ıdy, struktury, enumer´atory a podobnˇe. CTS tak´e definuje datov´e typy atribut˚u objekt˚u (napˇr. property, field, method, constructor) a pˇr´ıstupov´e mo- difik´atory (napˇr. private, protected, abstract). [6] [11]

Metada

Metada jsou bin´arn´ı informace popisuj´ıc´ı k´od. Tyto informace popisuj´ı strukturu k´odu aplikace pˇredevˇs´ım detailn´ım popisem tˇr´ıd – metadata obsahuj´ı informace jako napˇr´ıklad n´azev tˇr´ıdy, n´avratov´y typ tˇr´ıdy, n´azev implementovan´eho interface, pˇr´ıstupov´y modifik´ator tˇr´ıdy a podobnˇe. D´ale metadata popisuj´ı sestaven´ı aplikace – n´azev, verzi, jazykovou kulturu a podobnˇe. Smyslem metadat je vytvoˇrit sebepopi- suj´ıc´ı komponenty a popsat tak k´od – a to neutr´aln´ım jednotn´ym zp˚usobem. T´ım lze umoˇznit snadn´e referencov´an´ı ˇc´ast´ı k´odu i pro ostatn´ı jazyky, neˇz je jazyk dan´eho k´odu (napˇr´ıklad spolupr´ace mezi jazykem C# a formul´aˇri WPF). Metadata maj´ı d´ale kl´ıˇcovou roli pˇri pouˇz´ıv´an´ı reflexe, kter´a umoˇzˇnuje ps´at k´od pracuj´ıc´ı s objekty dynamicky. Pˇr´ıkladem m˚uˇze b´yt vol´an´ı funkce GetType() v jazyce C# umoˇzˇnuj´ıc´ı

(21)

program´atorovi z´ıskat informaci o typu libovoln´eho objektu za bˇehu aplikace. [6] [17]

[21] [40] [7]

Common Language Specification

Soubor pravidel, kter´y umoˇzˇnuje definovat jazykovˇe nez´avisl´y k´od pro platformu .NET. Pokud jazyk splˇnuje CLS, je moˇzn´e pouˇz´ıvat atributy a tˇr´ıdy napˇr´ıˇc vˇsemi jazyky podporuj´ıc´ı platformu .NET. Podmnoˇzinou tˇechto pravidel je i CTS. [15]

Virtual Execution System

Prostˇred´ı pro vykon´an´ı intermedi´arn´ı k´odu. Podstatou tohoto prostˇred´ı je pˇrevod CIL do nativn´ıho strojov´eho jazyka dan´e konfigurace. VES se tedy star´a o to, aby CIL bylo pˇreloˇzeno do spr´avn´e sady instrukc´ı pro danou konfiguraci. [28]

2.2.3 Bˇ ehov´ e prostˇred´ı (CLR)

Bˇehov´e prostˇred´ı CLR se d´a oznaˇcit za z´akladn´ı stavebn´ı jednotku frameworku .NET. Obecnˇe toto bˇehov´e prostˇred´ı ˇr´ıd´ı intermedi´arn´ı k´od. Pod pojmem ˇr´ıd´ı se skr´yv´a nˇekolik ˇcinnost´ı, z´akladn´ı je pˇreklad k´odu z CIL do nativn´ıho strojov´eho ja- zyka poˇc´ıtaˇce, k ˇcemuˇz je vyuˇz´ıv´ano prostˇred´ı VES definovan´e v´yˇse. Mimo to se CLR star´a o uvolˇnov´an´ı nepouˇz´ıvan´ych zdroj˚u, rozdˇeluje pamˇet’ pˇridˇelenou aplikaci, ˇr´ıd´ı vl´akna pˇridˇelen´a aplikaci, obsluhuje v´yjimky a zprostˇredkov´av´a debuggovac´ı sluˇzby.

D´ıky CTS a CLS ze standardu CLI, jenˇz mus´ı implementovat kaˇzd´y vstupn´ı k´od pro CLR, je zaruˇcena typov´a bezpeˇcnost a spolupr´ace mezi jazyky. [35] [19] [5]

2.2.4 Just in Time kompilace

Princip pˇrekladu aplikace pomoc´ı CLR pˇri kaˇzd´em spuˇstˇen´ı aplikace sebou nese probl´em vˇetˇs´ı n´aroˇcnosti na v´ykon. Aby se tento probl´em alespoˇn ˇc´asteˇcnˇe eliminoval a bˇeh aplikace zefektivnil, m´ısto pˇrekladu cel´e aplikace je pouˇzita takzvan´a just in time kompilace (JIT). Tato kompilace ve sv´e z´akladn´ı podobˇe prov´ad´ı pˇreklad pouze t´e ˇc´asti k´odu, kter´a je zrovna potˇreba. Pˇreloˇzen´y k´od pak pˇrid´a do pamˇeti a pˇri opˇetovn´em vol´an´ı jiˇz nen´ı tento k´od potˇreba pˇrekl´adat. [5] [42] [41]

Ne vˇzdy je v´yhodn´y takov´y postup, proto m´a v .NET v´yvoj´aˇr moˇznost u nˇekter´ych ˇc´ast´ı k´odu zapnout takzvanou pre-JIT kompilaci. Ta pˇreloˇz´ı danou ˇc´ast k´odu pˇresnˇe v moment, kdy v´yvoj´aˇr potˇrebuje. Pˇr´ıkladem, kdy by bylo vhodn´e pouˇz´ıt pre-JIT kompilaci, m˚uˇze b´yt aplikace vyuˇz´ıvaj´ıc´ı velk´e mnoˇzstv´ı n´aroˇcn´ych ovl´adac´ıch prvk˚u (napˇr´ıklad ve WPF). Pomoc´ı pre-JIT kompilace m˚uˇzeme jejich pˇreklad pˇresunout na vedlejˇs´ı vl´akno a spustit ho na pozad´ı pˇri pˇrihlaˇsov´an´ı uˇzivatele do aplikace. [36]

2.2.5 Profilovac´ı API

.NET nab´ız´ı vlastn´ı profilovac´ı API urˇcen´e pro v´yvoj´aˇre profilovac´ıch n´astroj˚u.

V´yvoj´aˇr profileru vytvoˇr´ı knihovnu, kter´a je naˇctena pomoc´ı CLR za bˇehu aplikace

(22)

a pˇrid´ana k procesu profilovan´e aplikace. Nen´ı vˇsak nikdy souˇc´ast´ı t´eto aplikace a je neˇz´adouc´ı, aby tato profilovac´ı knihovna ovlivˇnovala bˇeh aplikace, coˇz by ani profilovac´ı API jako takov´e nemˇelo umoˇzˇnovat. Stejnˇe tak je neˇz´adouc´ı sc´en´aˇr, kdy by aplikace profilovala sebe sama nebo na profilov´an´ı z´avisela. Profilovac´ı knihovna pˇripojen´a k profilovan´emu procesu by tak´e mˇela obsahovat pouze metody pro sb´ır´an´ı dat – zpracov´an´ı dat by mˇelo prob´ıhat ve vlastn´ım procesu, aby byl dopad mˇeˇren´ı na profilovanou aplikaci minim´aln´ı. Tato omezen´ı vypl´yvaj´ı z faktu, ˇze profilovac´ı API nem´a slouˇzit pouze k mˇeˇren´ı aplikac´ı, ale i k monitorov´an´ı .NET aplikac´ı a napˇr´ıklad i k jejich speci´aln´ımu debuggov´an´ı. Z´akladn´ı funkc´ı tohoto API je tedy poskytnout pˇr´ıstup k aplikac´ım mimo ˇr´ızen´y k´od platformy .NET za ´uˇcelem mˇeˇren´ı nebo debuggov´an´ı aplikac´ı. Z toho tak´e vypl´yv´a, ˇze profilovac´ı API nelze imple- mentovat v ˇr´ızen´em k´odu platformy .NET (napˇr´ıklad jazyk C# tedy pouˇz´ıt nejde).

Pro implementov´an´ı je moˇzn´e vyuˇz´ıt mimo jin´e jazyk C++ v jeho z´akladn´ı podobˇe, implementovan´y jazyk managed C++ pro .NET uˇz pouˇz´ıt nelze.

Profilovac´ı knihovna implementuje rozhran´ı, pomoc´ı kter´eho komunikuje CLR s knihovnou vol´an´ı funkc´ı upozorˇnuj´ıc´ı na ud´alosti v profilovan´em procesu – napˇr´ıklad vstup a v´ystup do funkce. Rozhran´ı pak jeˇstˇe obsahuje funkce, jimiˇz profilovac´ı knihovna m˚uˇze naopak poˇz´adat bˇehov´e prostˇred´ı o urˇcit´e doplˇnuj´ıc´ı informace o mˇeˇren´em procesu (pˇr´ıkladem m˚uˇze b´yt n´azev tˇr´ıdy obsahuj´ıc´ı pr´avˇe prov´adˇenou funkci). Profilovac´ı API tak´e umoˇzˇnuje pˇristupovat ke k´odu v intermedi´arn´ım ja- zyce (CIL) jeˇstˇe pˇred jeho kompilac´ı, ˇcehoˇz lze vyuˇz´ıt pro vkl´ad´an´ı vlastn´ıch instru- mentaˇcn´ıch funkc´ı pro hlubˇs´ı anal´yzu. [20] [39] [27]

(23)

3 Zp˚ usoby mˇ eˇren´ı aplikac´ı

Tato kapitola obecnˇe seznamuje s r˚uzn´ymi zp˚usoby, jak mˇeˇrit bˇeˇz´ıc´ı aplikace v syst´emu Windows.

3.1 Microbenchmarking

Za z´akladn´ı zp˚usob mˇeˇren´ı aplikace by se dalo oznaˇcit prost´e analyzov´an´ı k´odu (pˇr´ıkladem m˚uˇze b´yt i zkoum´an´ı struktury aplikace na pap´ıˇre) a pˇr´ıpadn´e vkl´ad´an´ı vlastn´ıch mˇeˇr´ıc´ıch blok˚u do k´odu. Toto se nˇekdy oznaˇcuje jako benchmarking, pˇr´ıpadnˇe microbenchmarking. Pˇredpokladem pro vyuˇzit´ı takov´ehoto mˇeˇren´ı je detailn´ı znalost struktury aplikace z pohledu v´yvoj´aˇre a pˇri spr´avn´em pouˇzit´ı na spr´avn´em m´ıstˇe m˚uˇze toto mˇeˇren´ı pˇrin´aˇset velice rychl´e a jasnˇe vypov´ıdaj´ıc´ı v´ysledky. Do urˇcit´e m´ıry je pro takov´e efektivn´ı a rychl´e pouˇzit´ı pˇredpokladem i fakt, ˇze toto mˇeˇren´ı bude pouˇzito na mal´e oblasti k´odu (proto microbenchmarking). Pro komplexnˇejˇs´ı mˇeˇren´ı je potˇreba stejnˇe komplexn´ı struktura pouˇzit´ı takov´ychto mˇeˇr´ıc´ıch funkc´ı. Stejnˇe tak relativn´ı je i to, jak dobˇre a rychle ˇciteln´y bude v´ystup mˇeˇren´ı – vˇse z´aleˇz´ı na tom, jak dobˇre si program´ator v´ystup pˇrizp˚usob´ı. Obecnˇe se tedy d´a ˇr´ıct, ˇze velkou v´yhodou takov´eto metody mˇeˇren´ı je jej´ı pˇrirozen´a pˇrizp˚usobitelnost a nev´yhodou zvˇetˇsuj´ıc´ı se n´aroˇcnost pouˇzit´ı pro detailn´ı v´ysledky. Velkou nev´yhodou je tak´e mal´a flexibilita u komplexn´ıch mˇeˇren´ı – byt’ se opˇet d´a diskutovat o jist´e relativnosti. Pokud m´a pro- gram´ator dost zkuˇsenost´ı a ˇcasu si vytvoˇrit dobrou mˇeˇr´ıc´ı strukturu, m˚uˇze i tento probl´em eliminovat. S t´ım kromˇe probl´emu ˇcasov´e n´aroˇcnosti vyst´av´a i ot´azka, zda nebudeme vlastnˇe aplikaci zbyteˇcnˇe zatˇeˇzovat nˇeˇc´ım, co nen´ı potˇreba k jej´ı ˇcinnosti.

Za pˇredpokladu, ˇze by aplikace mˇela reagovat na v´ysledky mˇeˇren´ı, pak by se o ta- kov´em pouˇzit´ı dalo uvaˇzovat jako o vhodn´em. Pokud se ale snaˇz´ıme o mˇeˇren´ı za

´

uˇcelem odhalen´ı m´ıst k optimalizaci, vhodnˇejˇs´ı by mˇelo b´yt pouˇzit´ı jin´ych metod.

[29]

3.2 Vestavˇ en´ e n´ astroje syst´ emu Windows

Za urˇcit´y mezikrok mezi benchmarkingem a specializovan´ymi profilery se d´a povaˇzovat pouˇz´ıv´an´ı struktur pˇr´ımo v syst´emu Windows. Patˇr´ı sem tzv. v´ykonnostn´ı ˇc´ıtaˇce (anglicky performance counters) a speci´aln´ı logovac´ı framework ETW. Zp˚usob na- stavov´an´ı a pouˇz´ıv´an´ı m´a pomˇernˇe bl´ızko k benchmarkingu. Bl´ıˇze k profilovac´ım n´astroj˚um je naopak posouv´a sb´ır´an´ı dat prob´ıhaj´ıc´ı mimo aplikaci. Zpracov´an´ı a

(24)

zobrazen´ı v´ystupu je takt´eˇz obstar´av´ano vlastn´ı aplikac´ı a nen´ı tedy tˇreba myslet na form´at v´ystupu jako u benchmarkingu. [29]

3.2.1 V´ ykonnostn´ı ˇ c´ıtaˇ ce

Syst´em Windows obsahuje integrovan´e v´ykonnostn´ıˇc´ıtaˇce sleduj´ıc´ı celou ˇsk´alu r˚uzn´ych parametr˚u. Z´akladn´ım pouˇzit´ım v´ykonnostn´ıch ˇc´ıtaˇc˚u je prost´e ˇcten´ı zvolen´ych hod- not pˇres syst´emovou aplikaci Sledov´an´ı v´ykonu (anglicky Performance monitor ).

Data se po nastaven´ı ˇc´ıtaˇce zaˇcnou v re´aln´em ˇcase automaticky vykreslovat do grafu v hlavn´ım oknˇe. ˇC´ıtaˇce jsou rozdˇeleny do kategori´ı podle r˚uzn´ych krit´eri´ı, nˇekolik vlastn´ıch kategorii m´a v seznamu napˇr´ıklad i .NET nebo SQL server (pokud jsou tyto komponenty v syst´emu pˇr´ıtomny).

Kaˇzd´y ˇc´ıtaˇc nab´ız´ı k v´ybˇeru instance, pro kter´e bude data sb´ırat. Napˇr´ıklad ˇc´ıtaˇc % ˇcasu procesoru m˚uˇze ˇc´ıtat data jen pro nˇekter´e z dostupn´ych jader pro- cesoru, pokud je vybr´an z kategorie Procesor. Pokud je vybr´ana kategorie Proces, je moˇzn´e stejn´y ˇc´ıtaˇc nastavit pro nˇekter´y bˇeˇz´ıc´ı proces – d´a se tedy vyuˇz´ıt i k mˇeˇren´ı jedn´e konkr´etn´ı bˇeˇz´ıc´ı aplikace. Kromˇe z´akladn´ıho zobrazen´ı dat do real-time grafu v hlavn´ım oknˇe se hodnoty daj´ı tak´e ukl´adat rovnou do souboru.

C´ıtaˇce maj´ı moˇznost nastavov´an´ı pˇr´ımo v k´odu aplikace pˇres tˇr´ıduˇ

System.Diagnostics.PerformanceCounter . Mimo syst´emem definovan´ych ˇc´ıtaˇc˚u lze vytvoˇrit i sv˚uj vlastn´ı ˇc´ıtaˇc, bud’ pˇr´ımo pˇres rozhran´ı Visual Studia nebo v k´odu.

Do vlastn´ıho ˇc´ıtaˇce se daj´ı ukl´adat libovoln´a numerick´a data a n´aslednˇe je moˇzn´e s nimi v aplikaci Sledov´an´ı v´ykonu pracovat stejnˇe jako u syst´emov´ych ˇc´ıtaˇc˚u. [29]

3.2.2 Event Tracing for Windows

Pokud aplikace vytv´aˇr´ı log, znamen´a to, ˇze nˇejak´ym zp˚usobem zaznamen´av´a sv˚uj pr˚ubˇeh. Co aplikace loguje z´aleˇz´ı na nastaven´ı logov´an´ı v dan´e aplikaci. Zpravidla se jedn´a o d˚uleˇzit´e body bˇehu aplikace a pˇredevˇs´ım chybov´e hl´aˇsky. Soubory, kam se tyto z´aznamy z bˇehu ukl´adaj´ı, se naz´yvaj´ı logy.

Z principu logov´an´ı by se mohlo zd´at, ˇze tato ˇcinnost je vˇzdy uˇziteˇcn´a a proto m´a smysl j´ı pokaˇzd´e implementovat do aplikace. ˇCast´ym probl´emem je dopad logov´an´ı na v´ykon aplikace – pokud m´a aplikace detailn´ı log a tedy zapisuje velk´e mnoˇzstv´ı informac´ı do takov´eho logu, m˚uˇze tato ˇcinnost aplikaci zatˇeˇzovat. Proto se v praxi ˇcasto logov´an´ı ve fin´aln´ı verzi omezuje jen na nejd˚uleˇzitˇejˇs´ı m´ısta. Detailn´ı log se pak napˇr´ıklad zap´ın´a na vyˇz´ad´an´ı, pˇr´ıpadnˇe existuj´ı speci´aln´ı debugovac´ı verze aplikace, kde je detailn´ı log ponech´an.

Fakt, ˇze samotn´y z´apis do logu zpomaluje aplikaci, nenahr´av´a pouˇzit´ı klasick´eho logov´an´ı pro mˇeˇren´ı aplikac´ı. M´ısto bˇeˇzn´ych framework˚u pro logov´an´ı se d´a pouˇz´ıt Event Tracing for Windows (ETW). Dalo by se definovat jako speci´aln´ı logov´an´ı implementovan´e pˇr´ımo v syst´emu Windows a vykazuj´ıc´ı velmi mal´y dopad na v´ykon

(25)

Na rozd´ıl od klasick´eho logov´an´ı ETW nezapisuje pˇr´ımo do souboru ale pod´av´a informace o tom, zda nastala urˇcit´a ud´alost. O tom, jakou ud´alost m´a ETW sledo- vat rozhoduje takzvan´y poskytovatel (provider). Syst´em Windows i bˇehov´e prostˇred´ı platformy .NET obsahuj´ı jiˇz pˇreddefinovan´e poskytovatele umoˇzˇnuj´ıc´ı sledovat napˇr´ıklad ˇcten´ı z disku nebo informace o JIT kompileru. Ovl´ad´an´ı ETW pomoc´ı stanovov´an´ı poskytovatel˚u a n´asledn´y sbˇer s pˇr´ıpadnou reprezentac´ı dat mus´ı obstarat speci´aln´ı n´astroj k tomu urˇcen´y (napˇr´ıklad PerfView nebo Windows Performance Toolkit).

Na platformˇe .NET si lze pˇr´ımo k´odu nadefinovat i vlastn´ıho poskytovatele imple- mentov´an´ım rozhran´ı EventSource. [29] [33] [31]

3.3 Profilery

Pro profilov´an´ı lze pouˇz´ıt speci´aln´ı software urˇcen´y k t´eto ˇcinnosti – profiler. Profiler je vˇzdy v´azan´y na konkr´etn´ı platformu nebo jazyk. V´yhodou u platformy .NET je, ˇze profiler je platn´y pro celou platformu nez´avisle na jazyku, coˇz vych´az´ı z pr´avˇe z architektury t´eto platformy. Nespornou v´yhodou platformy .NET pro profilov´an´ı je tak´e vlastn´ı profilovac´ı API, usnadˇnuj´ıc´ı v´yvoj profiler˚u pro tuto platformu.

Profilery jsou ve vˇetˇsinˇe pˇr´ıpad˚u nab´ızeny jako samostatn´e aplikace, v´yjimkou je pouze profiler integrovan´y pˇr´ımo do Visual Studia. Setkat se lze s nekomerˇcn´ımi i ko- merˇcn´ımi profilery. Nab´ızen´e metody mˇeˇren´ı jsou vˇetˇsinou dvˇe z´akladn´ı – samplov´an´ı a instrumentace (ˇcasto pod jin´ym n´azvem). Pˇr´ıpadnˇe b´yvaj´ı metody doplnˇen´e o speci´aln´ı profilov´an´ı alokovan´e pamˇeti nebo sb´ır´an´ı dat o ˇcinnosti v´ıce vl´aken apli- kace (pokud je v´ıcevl´aknov´a). Zp˚usoby mˇeˇren´ı ani z´ıskan´ymi v´ysledky se profilery pro platformu .NET pˇr´ıliˇs neliˇs´ı, coˇz je d´ano implementac´ı stejn´eho profilovac´ıho API a vyuˇz´ıvan´ı stejn´ych prvk˚u architektury. Rozd´ıly tak jsou sp´ıˇse v interpretaci v´ysledk˚u a pˇrehlednosti uˇzivatelsk´eho prostˇred´ı.

Za z´akladn´ı profilovac´ı n´astroj platformy .NET se d´a povaˇzovat zdarma dostupn´y profiler ve Visual Studiu. Dalˇs´ı v´yznamn´e profilery jsou uˇz komerˇcn´ı, patˇr´ı sem napˇr´ıklad dotTrace, Stackify, ANTS Profiler, YourKit .NET Profiler. V´yznamn´ym profilerem byl jeˇstˇe profiler JustTrace, jeho tv˚urci ho ovˇsem st´ahli z d˚uvodu, ˇze vedle profileru ve Visual Studiu nem´a v´yznam. [14]

3.3.1 Z´ akladn´ı metody sb´ır´ an´ı dat

Aˇckoliv existuje velk´e mnoˇzstv´ı profiler˚u nab´ızej´ıc´ıch r˚uznˇe pojmenovan´e metody mˇeˇren´ı, jedn´a se pokaˇzd´e o jeden ze dvou z´akladn´ıch zp˚usob˚u sbˇeru dat – samplov´an´ı a instrumentace.

Samplov´an´ı je metoda vyuˇz´ıvaj´ıc´ı syst´emov´ych pˇreruˇsen´ı pro sb´ır´an´ı vzork˚u. Pro- filer periodicky vyvol´av´a syst´emov´a pˇreruˇsen´ı a odeˇc´ıt´a data ze z´asobn´ıku volan´ych funkc´ı platn´ych pro mˇeˇren´y proces. Pro funkci na vrcholu z´asobn´ıku, tedy pr´avˇe prov´adˇenou, profiler inkrementuje poˇcet exklusivn´ıch vzork˚u. U funkc´ı volaj´ıc´ı tuto

(26)

prov´adˇenou funkci pak doch´az´ı k inkrementaci inklusivn´ıch vzork˚u – tedy vzork˚u platn´ych pro funkci a volan´e potomky. Samplov´an´ı m´a velkou v´yhodu v minim´aln´ım dopadu na bˇeh aplikace, naopak nev´yhodou m˚uˇze b´yt menˇs´ı pˇresnost mˇeˇren´ı. Vol´an´ı nˇekter´ych funkc´ı nemus´ı b´yt v˚ubec zaznamen´ano. Stane se tak, pokud je funkce vol´ana jen zˇr´ıdka a jej´ı pr˚ubˇeh se staˇc´ı vej´ıt mezi interval syst´emov´eho pˇreruˇsen´ı vy- volan´eho profilerem. V nˇekter´ych pˇr´ıpadech m˚uˇze b´yt nev´yhodou samplov´an´ı tak´e nezaznamen´av´an´ı pr´ace aplikace se vstupnˇe v´ystupn´ımi zaˇr´ızen´ımi. Pokud funkce dlouho ˇcekala na odpovˇed’ disku, tento ˇcas se do mˇeˇren´ı pomoc´ı samplov´an´ı ne- prom´ıtne.

Instrumentace pr´aci se vstupnˇe v´ystupn´ımi zaˇr´ızen´ımi zaznamenat dok´aˇze. Mˇeˇren´ı prob´ıh´a sb´ır´an´ım informac´ı o vstupov´an´ı a vystupov´an´ı aplikace do funkc´ı. Instru- mentace tedy mˇeˇr´ı poˇcet vol´an´ı funkc´ı, dopoˇc´ıt´av´a i dobu jejich pr˚ubˇehu (rozd´ıl mezi ˇcasem vstupu a v´ystupu [30]). Z principu mˇeˇren´ı vych´az´ı, ˇze jsou zaznamen´any vˇsechny funkce vˇcetnˇe tˇech rychl´ych a zˇr´ıdka kdy volan´ych. ˇCasy vykon´av´an´ı funkc´ı tak´e dok´aˇz´ı uk´azat na trv´an´ı vstupnˇe v´ystupn´ıch operac´ı. Velkou nev´yhodou instru- mentace je dopad mˇeˇren´ı na aplikaci. Sb´ır´an´ı dat o vstupu a v´ystupu aplikace z funkce pˇrid´av´a dodateˇcn´e zat´ıˇzen´ı. Instrumentace pak tyto ˇcasy nedok´aˇze oddˇelit od celkov´eho ˇcasu, proto jsou v´ysledn´e ˇcasy str´aven´e ve funkci zkreslen´e oproti bˇeˇzn´emu pr˚ubˇehu. V knize Practical Perfomance Profiling [30] je na stranˇe 199 citov´an Oleg Stepanov ze spoleˇcnosti JetBrains (komerˇcn´ı profiler dotTrace [12]) vysvˇetluj´ıc´ı rozd´ıly mezi samplov´an´ım a instrumentac´ı. V textu tvrd´ı, ˇze probl´em se zpomalen´ım pˇri instrumentaci je zp˚usoben t´ım, jak se profiler mus´ı pˇrep´ınat mezi k´odem aplikace a k´odem profileru. U samplov´an´ı tento probl´em samozˇrejmˇe ne- vznik´a, profiler nemus´ı do k´odu aplikace zasahovat v˚ubec, data poch´azej´ı pouze ze syst´emov´eho z´asobn´ıku volan´ı.

Pro bˇeˇzn´e pouˇzit´ı je tedy vhodn´e nejprve zaˇc´ınat samplovac´ı metodou a v pˇr´ıpadˇe nedostateˇcnosti t´eto metody pouˇz´ıt instrumentaci. [29] [30] [24]

(27)

4 Popis pouˇzit´ ych n´ astroj˚ u

Tato kapitola obsahuje popis konkr´etn´ıch n´astroj˚u pouˇzit´ych v t´eto pr´aci. Kapitola se vˇenuje v´ykonnostn´ım ˇc´ıtaˇc˚um syst´emu Windows, pouˇzit´ym pro mˇeˇren´ı v´ykonu .NET aplikace i SQL Serveru. D´ele jsou v kapitole pops´any dva profilery – zdarma dostupn´y profiler ve Visual Studiu a komerˇcn´ı profiler dotTrace. Posledn´ı ˇc´ast kapi- toly je urˇcena n´astroji pro optimalizaci SQL Server – Database Engine Tuning Advi- sor, dostupn´emu zdarma v r´amci bal´ıku n´astroj˚u pro SQL Server. Popis n´astroje se zamˇeˇruje na jeho pouˇzit´ı ve spolupr´aci s n´astrojem SQL Server Profiler, slouˇz´ıc´ım ke sbˇeru z´aznam˚u o bˇehu SQL Serveru.

4.0.1 Pouˇz´ıt´ı v´ ykonnostn´ıch ˇ c´ıtaˇ c˚ u

K ovl´ad´an´ı ˇc´ıtaˇc˚u slouˇz´ı syst´emov´y n´astroj Sledov´an´ı v´ykonu. Nˇekdy se n´astroj naz´yv´a tak´e Perfmon podle pˇr´ıkazu spouˇstˇej´ıc´ı tento n´astroj (perfmon.exe). Okno n´astroje je vidˇet na sn´ımku ˇc. 1.

Sn´ımek 1: Hlavn´ı okno n´astroje Sledov´an´ı v´ykonu.

Pro vytvoˇren´ı mˇeˇren´ı s v´ystupem slouˇz´ı poloˇzka Sady kolekc´ı dat. Po jej´ım roz- kliknut´ı se zobraz´ı nˇekolik dalˇs´ıch poloˇzek, n´as bude zaj´ımat

(28)

poloˇzka Definovan´e uˇzivatelem. Prav´ym kliknut´ım na poloˇzku a v´ybˇerem moˇznosti Nov´a poloˇzka ! Nov´a sada kolekc´ı dat spust´ıme pr˚uvodce nastaven´ı nov´eho mˇeˇren´ı.

V otevˇren´em oknˇe zad´ame n´azev mˇeˇren´ı a zvol´ıme moˇznost Vytvoˇrit ruˇcnˇe. Na dalˇs´ı str´ance pr˚uvodce nech´ame vybranou moˇznost Protokoly vytv´aˇren´ı dat a zaˇskrtneme moˇznost ˇC´ıtaˇc v´ykonu. Pˇrejdeme na dalˇs´ı str´anku, kter´a se vˇenuje nastaven´ı ˇc´ıtaˇc˚u pro mˇeˇren´ı. Tlaˇc´ıtkem Pˇridat se otevˇre dalˇs´ı okno, jehoˇz lev´a strana obsahuje seznam dostupn´ych ˇc´ıtaˇc˚u. ˇC´ıtaˇce jsou zobrazeny v kategori´ıch, rozkliknut´ım se zobraz´ı re- levantn´ı ˇc´ıtaˇce pro danou kategorii. Nakliknut´ım ˇc´ıtaˇce pak vlevo dole v podoknˇe m˚uˇzeme vyb´ırat instance pro dan´y ˇc´ıtaˇc. Pokud by bylo instanc´ı v´ıce, dole pod nimi lze pouˇz´ıt vyhled´av´an´ı. Vyhled´avat ˇc´ıtaˇce nelze, je vˇzdy potˇreba zn´at spr´avnou ka- tegorii ˇc´ıtaˇce a naj´ıt ho ruˇcnˇe. Tlaˇc´ıtkem Pˇridat zvolen´y ˇc´ıtaˇc pro vybranou instanci pˇrid´ame do v´ysledn´eho seznamu. Ve spodn´ım rohu se nach´az´ı volba Zobrazit popis zobrazuj´ıc´ı textov´y popis k pr´avˇe pˇrid´avan´emu ˇc´ıtaˇci. Potvrzen´ım tlaˇc´ıtkem Ok se vr´at´ıme zpˇet do pr˚uvodce. V seznamu ˇC´ıtaˇce v´ykonu se objev´ı vybran´e ˇc´ıtaˇce, pod n´ım lze jeˇstˇe vybrat interval mˇeˇren´ı – nejmenˇs´ı dostupn´y je 1 sekunda. V dalˇs´ım oknˇe pr˚uvodce vybereme adres´aˇr pro vytvoˇren´y soubor s v´ysledky mˇeˇren´ı, po po- tvrzen´ı se dostaneme do posledn´ı ˇc´asti pr˚uvodce. Zde vybereme pˇr´ıpadnˇe uˇzivatele, pod kter´ym chceme spustit mˇeˇren´ı a zvol´ıme moˇznost Otevˇr´ıt vlastnosti pro tuto sadu kolekc´ı. Tato volba n´as rovnou pˇresune do vlastnost´ı pr´avˇe vytvoˇren´e sestavy dat (stejnou nab´ıdku je moˇzn´e vyvolat i pozdˇeji prav´ym klikem na sadu kolekce dat a v´ybˇerem volby Vlastnosti ). Na dostupn´ych z´aloˇzk´ach m˚uˇzeme zkontrolovat, pˇr´ıpadnˇe zmˇenit r˚uzn´e parametry sady nastaven´e v pr˚uvodci; lze ale tak´e doplnit nˇekter´e dalˇs´ı.

Po vytvoˇren´ı sady se v prav´em podoknˇe hlavn´ıho okna n´astroje zobraz´ı nov´a poloˇzka kolekce dat (nejˇcastˇeji pojmenovan´a jako DataCollector01 ). Prav´ym klik- nut´ım na tuto poloˇzku a v´ybˇerem volby Vlastnosti zobraz´ıme posledn´ı d˚uleˇzit´a na- staven´ı – nastaven´ı v´ystupn´ıho souboru. Pod z´aloˇzkou ˇC´ıtaˇce v´ykonu m˚uˇzeme jeˇstˇe jednou upravit vybran´e ˇc´ıtaˇce a pˇredevˇs´ım zvolit form´at dat v´ybˇerem ze seznamu Form´at protokolu. Na v´ybˇer jsou moˇznosti Oddˇelen´e ˇc´arkou a Oddˇelen´e stˇredn´ıkem pro export do csv nebo tsv souboru a SQL pro export do datab´azov´e tabulky. Po- sledn´ı volba Bin´arn´ı umoˇzˇnuje vytvoˇrit v´ystup, jenˇz se d´a otevˇr´ıt pˇr´ımo v n´astroji Sledov´an´ı v´ykonu. Pro zpracov´an´ı v tabulkov´em procesoru je nejlepˇs´ı moˇznost sou- boru oddˇelen´eho tabul´atorem. Z´aloˇzka soubor jeˇstˇe obsahuje moˇznost nastaven´ı jm´ena v´ystupn´ıho souboru. Spuˇstˇen´ı mˇeˇren´ı prob´ıh´a prav´ym kliknut´ı na sadu ko- lekce dat v lev´em oknˇe (nikoli kolekci dat v prav´em) a volbou Spustit. Po spuˇstˇen´ı se d´a ze stejn´eho menu mˇeˇren´ı tak´e zastavit. Pozastavit mˇeˇren´ı moˇzn´e nen´ı. Spuˇstˇenou sadu kolekce dat pozn´ame podle zelen´e ˇsipky u ikonky spuˇstˇenˇe sady. Do jedn´e sady kolekce dat m˚uˇzeme tak´e prav´ym kliknut´ım do lev´eho podokna kolekc´ı dat vytvoˇrit dalˇs´ı kolekce volbou Nov´a poloˇzka ! Kolekce dat. Spuˇstˇen´ım sady pak pouˇst´ıme vˇsechny kolekce najednou, pˇriˇcemˇz kaˇzd´a bude disponovat vlastn´ım v´ystupn´ım sou- borem.

Pˇr´ıkladem zpracov´an´ı tabul´atorem oddˇelen´ych dat m˚uˇze b´yt pouˇzit´ı programu

(29)

N´aslednˇe staˇc´ı vybrat prvn´ı sloupec obsahuj´ıc´ı namˇeˇren´a data a v z´aloˇzce Data vol- bou Text do sloupc˚u pˇrev´est data na dalˇs´ı sloupce. Ve spuˇstˇen´em pr˚uvodci pˇrevodu nen´ı v jeho v´ychoz´ım nastaven´ı potˇreba nic mˇenit. V pˇr´ıpadˇe, ˇze v´ystupn´ı soubor je ve form´atu oddˇelen´em ˇc´arkou, je je potˇreba ho v pr˚uvodci nastavit jako oddˇelovaˇc.

Probl´em m˚uˇze b´yt jeˇstˇe s oddˇelen´ım desetinn´ych m´ıst. V ˇcesk´em jazykov´em prostˇred´ı se oddˇelovaˇc z dat mˇeˇren´ı (vˇzdy teˇcka, pravdˇepodobnˇe kv˚uli csv form´atu) neshoduje s ˇcesk´ym oddˇelovaˇcem desetinn´ych m´ıst (ˇc´arka) a je potˇreba ho zmˇenit v nastaven´ı aplikace Excel.

Popis pouˇzit´ych ˇc´ıtaˇc˚u

Sada ˇc´ıtaˇc˚u dostupn´ych pro sestavu se m˚uˇze liˇsit. Jejich seznam lze z´ıskat zad´an´ım pˇr´ıkazu typeperf -q -o counters.txt do konzole syst´emu Windows – v adres´aˇri, kde se zrovna nach´az´ıme, se vytvoˇr´ı textov´y soubor counters.txt obsahuj´ıc´ı vˇsechny do- stupn´e ˇc´ıtaˇce. Form´at ˇr´adku souboru je ve tvaru \n´azev kategorie \ n´azev ˇc´ıtaˇce.

Ve v´ystupn´ım souboru z mˇeˇren´ı jsou pak n´azvy pouˇzit´ych ˇc´ıtaˇc˚u pojmenov´any od- pov´ıdaj´ıc´ı sloupce. Tvar n´azvu sloupce je ve form´atu\\n´azev poˇc´ıtaˇce\n´azev kate- gorie(n´azev instance)\n´azev ˇc´ıtaˇce (napˇr. \\MAC-BC-WIN10\Proces(WinfoMI)\%

ˇcasu procesoru). V pr´aci jsou pouˇzity ˇc´ıtaˇce pokr´yvaj´ıc´ı tˇri z´akladn´ı hardwarov´e komponenty poˇc´ıtaˇce – procesor, operaˇcn´ı pamˇet’ a disk. N´ıˇze je jejich seznam s koment´aˇrem:

Procesor( Total)\% ˇcasu procesoru – celkov´e vyt´ıˇzen´ı procesoru pro vˇsechny j´adra v procentech. Pro spr´avnou interpretaci mus´ı b´yt jeho hodnota vydˇelena poˇctem jader, jedn´a se totiˇz o souˇcet % vyt´ıˇzen´ı vˇsech jader (napˇr. pro ˇctyˇrj´adrov´y procesory tedy bude dosahovat aˇz 400%). Pˇri hodnot´ach 100% (po vydˇelen´ı poˇctem jader) je potˇreba zv´aˇzit, zda mˇeˇren´ı nen´ı ovlivnˇeno nedostateˇcn´ym v´ykonem procesoru.

Proces(n´azev procesu)\% ˇcasu procesoru – vyt´ıˇzen´ı procesoru v procentech pro zvolenou instanci (proces). Jeho hodnotu nen´ı potˇreba dˇelit poˇctem jader, jedn´a se jiˇz o upravenou hodnotu dosahuj´ıc´ı maximama 100%.

SQLServer:Memory Manager\Total Server Memory (KB) – poˇcet KB v operaˇcn´ı pamˇeti obsazen´ych procesy SQL Server.

SQLServer:Memory Manager\SQL Cache Memory (KB) – poˇcet KB pamˇeti v cache obsazen´ych procesy SQL Server.

Pamˇet’\% vyuˇzit´ı potvrzen´ych bajt˚u – procento celkov´eho obsazen´ı operaˇcn´ı pamˇeti. Pˇri hodnot´ach 100% je potˇreba zv´aˇzit, zda mˇeˇren´ı nen´ı ovlivnˇeno nedostatkem pamˇeti.

Pamˇet’\Potvrzen´e bajty – poˇcet bajt˚u obsazen´e operaˇcn´ı pamˇeti pro vˇsechny procesy.

Proces(n´azev procesu)\Nesd´ılen´e bajty – poˇcet bajt˚u operaˇcn´ı pamˇeti obsa- zen´ych dan´ym procesem.

(30)

Proces(n´azev procesu)\Virtu´aln´ı bajty – poˇcet bajt˚u obsazen´ych procesem v prostoru virtu´aln´ıch adres. Obsahuje tedy poˇcet bajt˚u operaˇcn´ı pamˇeti pro dan´y proces, poˇcet pamˇeti vyhrazen´y pro knihovny volan´e procesem a tak´e bajty odloˇzen´e str´ankov´an´ım.

Fyzick´y disk( Total) \ % ˇcasu disku – jedn´a se pr˚umˇernou d´elku diskov´e fronty pˇrevedenou na procenta. Ta je vypoˇctenou podle Littlova z´akona z teorie front a poˇc´ıt´a se jako stˇredn´ı doba disku za pˇrenos dˇeleno poˇctem pˇrenos˚u za s.

Tento ˇc´ıtaˇc se pouˇz´ıv´a ve spolupr´aci s ˇc´ıtaˇcem Aktu´aln´ı d´elka fronty disku.

Pokud % ˇcasu disku vykazuje v´ıce neˇz 100% a z´aroveˇn je aktu´aln´ı d´elka fronty disku vyˇsˇs´ı neˇz dva, jedn´a se pravdˇepodobnˇe o v´ykonnostn´ı probl´em spojen´y s diskem.

Fyzick´y disk( Total) \ Aktu´aln´ı d´elka fronty disku – poˇcet poˇzadavk˚u ˇcekaj´ıc´ıch ve frontˇe ke zpracov´an´ı diskem. Jedn´a se aktu´aln´ı hodnotu namˇeˇrenou v danou chv´ıli.

Fyzick´y disk( Total) \ Stˇredn´ı doba disku/ˇcten´ı – pr˚umˇern´y ˇcas, jak´y disku trv´a ˇcten´ı z v danou chv´ıli. Hodnota je v sekund´ach (nˇekde b´yv´a ud´av´ano v milisekund´ach, je potˇreba se pod´ıvat do popisu ˇc´ıtaˇce pˇri jeho pˇrid´av´an´ı).

Pr´ah se m˚uˇze pro kaˇzdou konfiguraci liˇsit, obecnˇe by nemˇely hodnoty pro obyˇcejn´y pevn´y disk pˇresahovat 30 aˇz 50 ms. Pro urˇcen´ı vhodn´eho prahu na dan´e konfiguraci je moˇzn´e vytvoˇrit mˇeˇren´ı s t´ımto ˇc´ıtaˇcem a n´aslednˇe nˇejak´y ˇcasov´y ´usek prov´adˇet bˇeˇzn´e operace ˇcten´ı disku (napˇr´ıklad proch´azet sloˇzky a soubory). Z v´yvoje hodnot se potom d´a pˇribliˇznˇe urˇcit, jak´y je pr´ah pro dan´y disk.

Fyzick´y disk( Total) \ Stˇredn´ı doba disku/z´apis – pr˚umˇern´y ˇcas, jak´y disku trv´a zapisov´an´ı v danou chv´ıli. Stejnˇe jako u pˇredchoz´ıho ˇc´ıtaˇce je prahovou hodnotu potˇreba urˇcit pro danou diskovou konfiguraci, obecnˇe by se ale hod- noty nemˇely pohybovat mezi v´ıce jak 15 - 25 ms.

SQLServer:Bu↵er Manager \ Page reads/sec – poˇcet str´anek ˇcten´ı disku pro- cesy SQL Server. Hodnota slouˇz´ı v n´avaznosti k pˇredchoz´ım diskov´ym ˇc´ıtaˇc˚um – pokud zjist´ıme v´ykonnostn´ı probl´em, m˚uˇzeme se na tento ˇc´ıtaˇc pod´ıvat, zda v danou chv´ıli prob´ıhalo ˇcten´ı procesy SQL Server.

SQLServer:Bu↵er Manager \ Page writes/sec – poˇcet str´anek zapisov´an´ı na disk procesy SQL Server. Hodnotu opˇet slouˇz´ı v n´avaznosti k pˇredchoz´ım dis- kov´ym ˇc´ıtaˇc˚um.

[18] [9] [34] [2] [23] [32]

4.0.2 Visual Studio Profiler

Microsoft jiˇz nˇekolik let nab´ız´ı sv˚uj vlastn´ı profiler implementovan´y pˇr´ımo ve Visual

(31)

N´astroje pro profilaci .NET ). Pokud je tato souˇc´ast nainstalov´ana, v menu pod z´aloˇzkou Debug lze nal´ezt poloˇzku Performance Profiler, jenˇz spust´ı hlavn´ı okno pro profilov´an´ı. Profiler lze spustit bez nutnosti vytv´aˇret nebo otev´ırat projekt – lze se pˇripojit na jiˇz bˇeˇz´ıc´ı .Net proces nebo definovat cestu ke spustiteln´emu souboru aplikace, kterou si profiler spust´ı. V pˇr´ıpadˇe, ˇze je profiler spuˇstˇen z otevˇren´eho projektu, m˚uˇzeme profilovat pˇr´ımo otevˇren´y projekt. Toto nastaven´ı se vol´ı hned po otevˇren´ı okna profileru v menu vybrat c´ıl (Chose Target).

Po zvolen´ı c´ıle mˇeˇren´ı se zobraz´ı podmenu s dostupn´ymi n´astroji (Available Tools), kde je ve v´ychoz´ım stavu zaˇskrtnut´a poloˇzka pr˚uvodce nastaven´ım profileru (Per- formance Wizard). Tlaˇc´ıtkem Start volbu potvrd´ıme a pr˚uvodce spust´ıme. Zobraz´ı se dostupn´e moˇznosti profilov´an´ı – samplov´an´ı, instumentace, alokace pamˇeti a pro- filov´an´ı v´ıcej´adrov´ych aplikac´ı. Po vybr´an´ı metody se jeˇstˇe v pˇr´ıpadˇe zvolen´ı c´ıle jako spustiteln´eho souboru objev´ı dvˇe okna s v´ybˇerem tohoto souboru. V posledn´ı ˇc´asti pak m˚uˇzem zvolit, zda se m´a profilov´an´ı rovnou spustit a tlaˇc´ıtkem Finish ukonˇc´ıme pr˚uvodce. Vlevo se otevˇre okno Performance Explorer, kde se vytvoˇr´ı nov´a instance profileru, kterou m˚uˇzeme prav´ym kliknut´ım a volbou vlastnosti (Properties) pˇrenastavit nebo spustit (Start profiling). Ve vlastnostech se daj´ı kromˇe parametr˚u z pr˚uvodce nastavit jeˇstˇe dalˇs´ı parametry, vˇetˇsina je dostupn´a pouze pro instrumen- taci. Profilov´an´ı skonˇc´ı bud’ ukonˇcen´ım profilovan´e aplikace, nebo ukonˇcen´ım pro- filov´an´ı. V´ysledek profilov´an´ı je oznaˇcov´an jako report a je uloˇzen v samostatn´em souboru s pˇr´ıponou vspx.

Report m´a nˇekolik pohled˚u. Z´akladn´ı pohled Summary nab´ız´ı pˇredevˇs´ım graf s pr˚ubˇehem bˇehu aplikace z pohledu vyuˇzit´ı procent v´ykonu procesoru. U grafu je moˇzn´e vybrat pouze urˇcitou ˇc´ast pr˚ubˇehu aplikace a cel´y report vyfiltrovat pouze na tuto ˇc´ast. To se m˚uˇze hodit v pˇr´ıpadˇe, ˇze na grafu vid´ıme velk´y skok ve vyuˇzit´ı procesoru mˇeˇrenou aplikac´ı – zobraz´ıme si pouze oblast s t´ımto skokem.

Dalˇs´ım dostupn´ym pohledem je pohled Call Tree, tedy strom vol´an´ı funkc´ı. Funkce jsou zde seˇrazeny dle vyt´ıˇzenosti, jenˇz je reprezentov´ana podle metody profilov´an´ı – u samplov´an´ı se jedn´a o poˇcty namˇeˇren´ych vzork˚u v dan´e funkci, u instrumentace pak o ˇcas aplikac´ı str´aven´y ve funkci. V obou pˇr´ıpadech jsou hodnoty vyt´ıˇzenosti rozdˇeleny na inklusivn´ı a exklusivn´ı – tedy na hodnoty plat´ıc´ı pro funkci vˇcetnˇe potomk˚u a na hodnoty platn´e pouze pro danou funkci. Funkce lze rozkliknut´ım otev´ırat a odhalovat tak volan´e potomky. Ve stromu jsou tak´e ikonkou plamene vyznaˇceny takzvan´e

”hork´e“ cesty (Hot Paths) – tedy cesty, o kter´ych si profiler mysl´ı, ˇze jsou velmi vyt´ıˇzen´e a mohlo by b´yt dobr´e je zkontrolovat.

V´yznamn´y je tak´e pohled Functions, zobrazuj´ıc´ı vˇsechny zmˇeˇren´e funkce. Pomoc´ı ˇrazen´ı v tomto pohledu z´ıskat pˇrehled o funkc´ıch s nejvyˇsˇs´ım poˇctem exklusivn´ıch a inklusivn´ıch vzork˚u. Podobn´y je pohled s moduly (Modules), m´ısto funkc´ı zob- razuje DLL knihovny (vˇcetnˇe z´akladn´ıch platformy .NET). Pohled s detaily funkc´ı (Function Details) zobrazuje informace o vybran´e funkci – graficky je zn´azornˇen

(32)

Sn´ımek 2: Okno Visual Studio Profileru s otevˇren´ym reportem.

rodiˇc a potomci funkce. V pˇr´ıpadˇe, ˇze se jedn´a o funkci z vlastn´ıho k´odu aplikace (tedy ne funkci DLL knihovny), ve spodn´ım oknˇe se zobraz´ı implementace k´odu funkce. Do pohledu se d´a dostat z jin´ych pohled˚u prav´ym kliknut´ım na vybranou funkci a volbou Show Functions Details. Podobn´y je tak´e pohled Caller/Callee zob- razuj´ıc´ı tak´e rodiˇce a potomky, oproti pohledu detailu funkc´ı ale zobrazuje vˇsechny rodiˇce a vˇsechny potomky.

V tabulkov´ych pohledech (jako je napˇr´ıklad pohled s funkcemi nebo strom vol´an´ı) se daj´ı kliknut´ım do hlaviˇcek sloupc˚u pˇrid´avat nebo odeb´ırat sloupce a zobrazovat tak dalˇs´ı informace o ˇr´adc´ıch. Data z tabulkov´ych pohled˚u se tak´e daj´ı exportovat do csv nebo xml souboru kliknut´ım na pˇr´ısluˇsnou ikonku nach´azej´ıc´ı se vpravo od volby pohledu. Reporty se tak´e daj´ı porovn´avat, kdy profiler vytvoˇr´ı seznam funkc´ı nebo modul˚u spoleˇcnˇe s rozd´ıly mezi vzorky.

Hlavn´ı sledovanou hodnotou pˇri anal´yze by mˇel b´yt poˇcet vzork˚u u samplov´an´ı, respektive str´aven´y ˇcas v metodˇe pro instrumentaci. U instrumace m˚uˇze b´yt jeˇstˇe vhodn´e sledovat poˇcet vol´an´ı funkce (Number of Calls). Trochu matouc´ı m˚uˇze obˇcas b´yt poˇcet exklusivn´ıch vzork˚u (nebo exklusivn´ıho ˇcasu). Profiler se totiˇz u funkc´ı pouˇz´ıvaj´ıc´ıch nˇejakou knihovnu tˇret´ıch stran

”zanoˇr´ı“ do takov´e knihovny a ex- klusivn´ı vzorky naˇcte pro jej´ı vnitˇrn´ı funkce. Kv˚uli tomu pˇri seˇrazen´ı podle poˇctu exklusivn´ıch vzork˚u dost´av´ame funkce, jenˇz nejsou souˇc´ast´ı vlastn´ıho k´odu aplikace.

Proto je lepˇs´ı anal´yzu prov´adˇet pˇres inklusivn´ı vzorky spolu s anal´yzou potomk˚u a rodiˇc˚u. T´ım dok´aˇzeme stanovit, jak´e funkce jsou koneˇcn´e pro k´od aplikace – jejich poˇcet exklusivn´ıch vzork˚u se d´a pak povaˇzovat za inklusivn´ı.

(33)

4.0.3 DotTrace

DotTrace je komerˇcn´ı profilovac´ı n´astroj od spoleˇcnosti JetBrains. Pro akademick´e

´

uˇcely je student˚um nab´ızen zdarma.

Po spuˇstˇen´ı profileru vyb´ır´ame v hlavn´ım oknˇe vlevo c´ıle mˇeˇren´ı – na v´ybˇer je bˇeˇz´ıc´ı proces (Attach to Running App) nebo lok´aln´ı aplikace (Profile local app).

Pˇr´ıpadnˇe je tak´e moˇznost se pˇripojit ke vzd´alen´e aplikaci pˇres s´ıt’ (Profile Remote App). Volba lok´aln´ı aplikace nab´ız´ı nˇekolik moˇznost´ı, jak aplikaci vybrat, z´akladn´ı je v´ybˇer spustiteln´eho souboru z disku (Standalone). Vpravo pak vyb´ır´ame pofilovac´ı metodu. Tˇri odpov´ıdaj´ı metod´am z Visual Studia – samplov´an´ı (Sampling), in- strumentaci (Tracing) a profilov´an´ı v´ıcevl´aknov´e aplikace (Timeline). Metoda ˇr´adek po ˇr´adku (Line-by-line) je rozˇs´ıˇren´ı instrumentace, kdy profiler dok´aˇze urˇcit ˇcas str´aven´y ve funkci, poˇcet vol´an´ı funkce a nav´ıc jeˇstˇe poˇcet vol´an´ı jednotliv´ych ˇr´adk˚u.

To m˚uˇze b´yt uˇziteˇcn´e v pˇr´ıpadˇe, ˇze chceme detailnˇe profilovat implementaci urˇcit´e funkce obsahuj´ıc´ı napˇr´ıklad smyˇcky – m˚uˇzeme tak odhalit, ˇze nˇejak´a ˇc´ast algo- ritmu se vykon´avala v´ıcekr´at, neˇz bychom ˇcekali. Po zaˇskrtnut´ı pol´ıˇcka Advanced v prav´em horn´ım rohu se zobraz´ı dalˇs´ı moˇznosti nastaven´ı profilov´an´ı. Zaj´ımav´a je hlavnˇe volba reˇzimu, jak m´a profiler zjiˇst’ovat ˇcas str´aven´y ve funkci (dotTrace i u samplov´an´ı pouˇz´ıv´a m´ısto vzork˚u ˇcas str´aven´y ve funkci). M˚uˇzeme si zvolit, zda m´a b´yt ˇcas mˇeˇren instrukcemi procesoru, nebo v´ykonnostn´ımi ˇc´ıtaˇci a zda chceme z mˇeˇren´ı vyˇradit ˇcas, po kter´y vl´akno spalo nebo ˇcekalo. Pro instrumentaˇcn´ı metody je moˇznost zapnout preciznˇejˇs´ı m´od, kdy se profiler snaˇz´ı pˇri mˇeˇren´ı nezapoˇc´ıt´avat ˇcasy potˇrebn´e pro pˇrep´ın´an´ı mezi k´odem aplikace a profilerem – v´ysledky jsou pˇresnˇejˇs´ı, projevuje se ale jeˇstˇe vˇetˇs´ı zpomalen´ım aplikace, neˇz u klasick´e instumentace. [30]

[4]

Po spuˇstˇen´ı mˇeˇren´ı se zobraz´ı mal´y dok s moˇznost´ı kdykoliv pozastavit aplikaci a udˇelat sn´ımek (Snapshot) – tedy vytvoˇrit report z dosud namˇeˇren´ych dat. Toto je v´yhoda oproti Visual Studio Profileru, jelikoˇz m˚uˇzeme uˇz v pr˚ubˇehu mˇeˇren´ı zazna- menat r˚uzn´e ˇc´asti/ˇcinnosti mˇeˇren´ı aplikace. Profiler nab´ız´ı k ovl´ad´an´ı i vlastn´ı API a je moˇzn´e ho ovl´adat i z k´odu aplikace (spustit mˇeˇren´ı, vytvoˇrit sn´ımek apod.).

Report z mˇeˇren´ı nab´ız´ı z´aloˇzky pˇrehled (Overview) a vˇsechna vol´an´ı (All calls).

Prvn´ı z´aloˇzka obsahuje graf vyt´ıˇzen´ı procesoru a informace o konfiguraci, mˇeˇren´e aplikaci a nastaven´ı mˇeˇren´ı. Druh´a z´aloˇzka nab´ız´ı pohledy podobn´e tˇem ve Visual Studio Profileru. Jedn´a se o strom vol´an´ı vl´aken (Threads Tree), strom vol´an´ı funkc´ı (Call Tree), list funkc´ı (Plain List) a vyt´ıˇzen´a m´ısta doporuˇcen´a k anal´yze (Hot spots).

Stejnˇe jako Visual Studio, umoˇzˇnuje dotTrace porovn´avat reporty, naopak ne- umoˇzˇnuje data z pohled˚u exportovat do csv souboru. Obecnˇe dotTrace zobrazuje m´enˇe informac´ı, neˇz dok´aˇze zobrazit profiler ve Visual Studiu, nechyb´ı mu vˇsak d˚uleˇzit´e informace. Uˇzivatelsk´e prostˇred´ı se d´a povaˇzovat za pˇr´ıvˇetivˇejˇs´ı.

(34)

Sn´ımek 3: Okno profileru dotTrace s otevˇren´ym reportem.

4.1 Mˇ eˇren´ı a optimalizace SQL server

Tato kapitola se zab´yv´a moˇznostmi sledov´an´ı v´ykonu SQL Server datab´az´ı a ofici´aln´ım optimalizaˇcn´ım n´astrojem pro tuto platformu – Database Engine Tuning Advisor.

4.1.1 Mˇ eˇren´ı v´ ykonu SQL Server

Pokud n´am staˇc´ı monitorovat SQL Server v re´aln´em ˇcase, uˇziteˇcn´ym n´astrojem pro sledov´an´ı v´ykonu SQL Server m˚uˇze b´yt n´astroj Activity Monitor, dostupn´y pˇres SSMS (pod zkratkou Ctrl+Alt+A). N´astroj nab´ız´ı nˇekolik pohled˚u:

Pˇrehled (Overview) – okno obsahuje 4 grafy zobrazuj´ıc´ı ˇc´ıtaˇce souvisej´ıc´ı s SQL Serverem (% vyt´ıˇzen´ı procesoru, poˇcet ˇcekaj´ıc´ıch ´ukol˚u, poˇcet MB/s vstupnˇe v´ystupn´ıch operac´ı a poˇcet d´avek TSQL pˇr´ıkaz˚u za sekundu).

Procesy (Processes) – informace o procesech patˇr´ıc´ıch k ˇcinnosti SQL Server.

Zdroje ˇcek´an´ı (Resource Waits) – pˇrehled vˇsech moˇzn´ych zdroj˚u ˇcek´an´ı SQL Server.

I/O soubor˚u dat (Data file I/O) – pˇrehled o vstupnˇe v´ystupn´ıch operac´ıch jed- noliv´ych datab´az´ı (MB ˇcten´ı za sekundu, MB zapisov´an´ı za sekundu, doba

(35)

Ned´avn´e pomal´e pˇr´ıkazy (Recent Expensive Queries) – zobrazuje ned´avno dobˇehl´e SQL pˇr´ıkazy. Prav´ym kliknut´ım na pˇr´ıkaz ho lze upravovat, nebo zobrazit jeho exekuˇcn´ı pl´an.

Aktivn´ı pomal´e pˇr´ıkazy (Recent Expensive Queries) – zobrazuje pr´avˇe bˇeˇz´ıc´ı SQL pˇr´ıkazy.

Nev´yhodou n´astroje je nemoˇznost ukl´adat data do souboru. Data zobrazen´a v se- znamech se daj´ı ˇradit nebo filtrovat podle hodnoty vybran´eho sloupce. N´astroj tak´e nenab´ız´ı t´emˇeˇr ˇz´adn´e moˇznosti nastaven´ı, jedinou volbou je ˇcas mˇeˇr´ıc´ıho intervalu (prav´y klik na jeden z graf˚u a volba Refresh interval ).

Podobn´e monitorovac´ı n´astroje lze naj´ıt jako komerˇcn´ı – napˇr´ıklad SQL Monitor od spoleˇcnosti Redgate Software (souˇc´ast bal´ıku n´astroj˚u SQL Toolbelt), ApexSQL Monitor, dbForge Studio a podobnˇe. Speci´aln´ım n´astrojem, pouˇziteln´ym pro nˇekter´a mˇeˇren´ı je tak´e SQL Server Profiler mˇeˇr´ıc´ı na z´akladˇe ud´alost´ı. Posledn´ı moˇznost´ı mˇeˇren´ı v´ykonu SQL Server jsou stejnˇe jako v pˇr´ıpadˇe platformy .NET v´ykonnostn´ı ˇc´ıtaˇce – SQL Server m´a mezi ˇc´ıtaˇci vlastn´ı kategorie obsahuj´ıc´ı dohromady nˇekolik set r˚uzn´ych ˇc´ıtaˇc˚u.

4.1.2 Database Engine Tuning Advisor

Microsoft SQL Server k optimalizaci nab´ız´ı n´astroj, jenˇz dok´aˇze navrhnout vhodn´e zaveden´ı index˚u, statistik a rozdˇelen´ı tabulek v datab´azi – Database Engine Tuning Advisor (DTA). N´astroj je k dispozici s grafick´ym uˇzivatelsk´ym prostˇred´ım, pˇr´ıpadnˇe se d´a pouˇz´ıvat i z pˇr´ıkazov´eho ˇr´adku syst´emu Windows.

Po spuˇstˇen´ı programu je automaticky otevˇren´e okno k vytvoˇren´ı nov´eho ladˇen´ı (v programu oznaˇcen´e jako session). Na hlavn´ı z´aloˇzce je moˇznost upravit jm´eno lad´ıc´ı instance a vybrat pro anal´yzu relevantn´ı datab´aze. Lze pˇr´ıpadnˇe zaˇskrtnout jen urˇcit´e tabulky. Podstatn´ym krokem ke spuˇstˇen´ı anal´yzy je stanovit zdroj zat´ıˇzen´ı, pro kter´e chceme datab´azi optimalizovat (Workload). Na v´ybˇer je nˇekolik moˇznost´ı:

Soubor (File) – slouˇz´ı k otevˇren´ı soubor˚u se stopou ˇcinnosti serveru. Takov´y sou- bor je moˇzn´e nechat vygenerovat pomoc´ı programu SQL Server profiler.

Tabulka (Table) – umoˇzˇnuje pˇripojit se na datab´azovou tabulku se stopami ˇcinnosti serveru. K z´ısk´an´ı dat pro tabulku je moˇzn´e opˇet pouˇz´ıt SQL server profiler.

Pˇri pr˚ubˇehu ladˇen´ı nen´ı moˇzn´e tabulku plnit daty.

Plan Cashe – umoˇzˇnuje spustit optimalizaci bez pˇredem vygenerovan´e z´atˇeˇze – pˇri pouˇzit´ı t´eto volby DTA pouˇzije prvn´ıch 1000 ud´alost´ı ˇcinnosti SQL Serveru a pot´e spust´ı anal´yzu.

Query store – query store je funkce shromaˇzd’uj´ıc´ı automaticky historii dotaz˚u, statistik a pl´an˚u z ˇcinnosti SQL serveru. Pokud je tato funkce pro c´ılovou datab´azi zapnuta, je moˇzn´e v´yslednou historii pouˇz´ıt jako z´atˇeˇz pro DTA.

(36)

Dalˇs´ı z´aloˇzka obsahuje nastaven´ı ladˇen´ı (Tuning Options). Prvn´ı moˇznost umoˇzˇnuje zastavit anal´yzu v urˇcit´y den a ˇcas, coˇz m˚uˇze b´yt v´yhodn´e u velk´ych datab´az´ı nebo pro velk´y zdroj z´atˇeˇzov´ych dat. Anal´yza se sice d´a zastavit manu´alnˇe, ale samotn´e za- staven´ı a pˇredevˇs´ım pak vyhodnocen´ı a urˇcen´ı v´ysledk˚u m˚uˇze nˇekolik dalˇs´ıch minut trvat. Pokud tedy oˇcek´av´ame v´ysledek do urˇcit´eho term´ınu a z´aroveˇn pˇredpokl´ad´ame dlouhou anal´yzu, je moˇzn´e si napl´anovat ukonˇcen´ı pˇred term´ınem touto volbou.

Zbyl´e moˇznosti n´am urˇcuj´ı, jak´a doporuˇcen´ı na konci od DTA dostaneme. Z´akladn´ı volbou jsou indexy, na v´ybˇer jsou i indexovan´e pohledy, pˇr´ıpadnˇe pouze necluste- rovan´e indexy. Jednou z moˇznost´ı je i optimalizace jiˇz vytvoˇren´ych index˚u a in- dexovan´ych pohled˚u za pˇredpokladu, ˇze nehodl´ame dalˇs´ı nov´e pˇrid´avat. Dvˇe dalˇs´ı pˇridruˇzen´a zaˇskrt´avac´ı pole n´am umoˇzˇnuj´ı do doporuˇcen´ı zahrnout tak´e filtrovan´e indexy a sloupcov´e indexy.

Dalˇs´ı nastaven´ı zahrnuje doporuˇcen´ı rozdˇelen´ı velk´ych tabulek na menˇs´ı a posledn´ı poloˇzkou nastaven´ı pro DTA definujeme, jak´e existuj´ıc´ı typy optimalizaˇcn´ıch struk- tur si pˇrejeme v r´amci doporuˇcen´ı zachovat. Pokud m´ame podezˇren´ı, ˇze c´ılov´a da- tab´aze obsahuje nevhodn´e nebo ˇspatnˇe nastaven´e optimalizaˇcn´ı struktury, m˚uˇzeme je t´ımto nastaven´ım oznaˇcit k anal´yze. DTA n´aslednˇe doporuˇc´ı smaz´an´ı struktur vyhodnocen´ych jako neuˇziteˇcn´e.

Ladˇen´ı nab´ız´ı jeˇstˇe nˇekolik pokroˇcil´ych nastaven´ı. Uˇzivatel m˚uˇze nadefinovat ma- xim´aln´ı velikost pamˇeti, jakou je ochoten obˇetovat pro optimalizaci datab´aze – vy- tvoˇren´ı index˚u a indexovan´ych pohled˚u zvˇetˇs´ı v´yslednou velikost datab´aze. V pˇr´ıpadˇe nedostatku m´ısta m˚uˇze b´yt vhodn´e tuto skuteˇcnost zahrnout do ladˇen´ı. Pokud nen´ı zad´ana tato hodnota uˇzivatelem, DTA vybere menˇs´ı z tˇechto dvou hodnot:

• trojn´asobek velikosti dat datab´aze

• voln´e m´ısto na vˇsech pˇripojen´ych disc´ıch spoleˇcnˇe s velikost´ı datab´aze.

Dalˇs´ı pokroˇcil´a volba upravuje maxim´aln´ı poˇcet sloupc˚u na jeden index. Pomoc´ı posledn´ı volby m˚uˇze uˇzivatel stanovit, jestli v´ysledn´a doporuˇcen´ı mus´ı b´yt apliko- vateln´a za bˇehu datab´aze (i za cenu potencion´alnˇe horˇs´ıch v´ysledk˚u optimalizace).

Takov´e nastaven´ı d´av´a smysl v pˇr´ıpadech, kdy je neˇz´adouc´ı nebo sloˇzit´e datab´azi vypnout.Pˇri v´ybˇeru oˇcek´avan´ych doporuˇcen´ı je potˇreba myslet na fakt, ˇze kaˇzd´e do- dateˇcn´e nastaven´ı m˚uˇze prodlouˇzit ˇcas potˇrebn´y k vyhodnocen´ı anal´yzy. Pokud tedy nechceme na vyhodnocen´ı zbyteˇcnˇe ˇcekat, je vhodn´e nastavit pouze takov´e hodnoty, jak´e maj´ı pro c´ılovou datab´azi smysl.

Po spuˇstˇen´ı anal´yzy se zobraz´ı dalˇs´ı z´aloˇzka s pr˚ubˇehem vˇsech f´az´ı ladˇen´ı. Po skonˇcen´ı se pak pˇridaj´ı dvˇe posledn´ı z´aloˇzky – doporuˇcen´ı (Recommendations) a zpr´ava z mˇeˇren´ı (Reports). Z´aloˇzka doporuˇcen´ı obsahuje seznam vˇsech vygenero- van´ych doporuˇcen´ı a umoˇzˇnuje je analyzovat, nebo rovnou pouˇz´ıt. Pˇr´ıpadnˇe je moˇzn´e si doporuˇcen´ı pouze uloˇzit, prohl´ıdnout vygenerovan´y SQL skript a podobnˇe. Do-

(37)

5 Mˇ eˇren´ı a optimalizace vzorov´ e aplikace a datab´ aze

V t´eto ˇc´asti pr´ace je pops´ano mˇeˇren´ı a optimalizace na vzorov´e aplikaci a vzorov´e datab´azi. Kapitola se nejdˇr´ıve vˇenuje mˇeˇren´ı a optimalizaci SQL Server datab´aze.

V druh´e ˇc´asti kapitoly je pak vyuˇzito profiler˚u k optimalizaci aplikace. Namˇeˇren´a data, v´ypoˇcty a grafy jsou na pˇriloˇzen´em CD ve sloˇzce Data z mˇeˇren´ı.

5.1 Popis vzorov´ e aplikace

Aplikace vybran´a k mˇeˇren´ı se jmenuje WinfoMI a byla poskytnuta pro tuto pr´aci firmou Winfo s.r.o. Jedn´a se o aplikaci k intern´ımu pouˇzit´ı. Z´akladn´ı funkc´ı aplikace je ovˇeˇrov´an´ı a doplˇnov´an´ı dat v datab´azi ze zdrojov´ych Excel soubor˚u.

Sn´ımek 4: Hlavn´ı okno aplikace WinfoMI z´ıskan´e k demonstraci mˇeˇren´ı.

Ve praxi se WinfoMI pouˇz´ıv´a v kombinaci s datab´az´ı MySQL, pˇred pouˇzit´ım

References

Related documents

Za pˇ redpokladu ´ uspˇ eˇ sn´ eho otestov´ an´ı by n´ asledovalo vyuˇ zit´ı odhadnut´ eho a verifikovan´ eho modelu pro predikci, nebo bliˇ zˇ s´ı anal´ yzu zkouman´

Po vytvoˇ ren´ı jednoduch´ eho regresn´ıho modelu metodou nejmenˇ s´ıch ˇ ctverc˚ u zaˇ c´ın´ a f´ aze statistick´ e verifikace a dalˇ s´ıho testov´ an´ı hypot´ ez

V t´ eto kapitole se budeme vˇ enovat rozˇ s´ıˇ ren´ı line´ arn´ıho regresn´ıho modelu pro n vysvˇ etluj´ıc promˇ enn´ ych, tedy X 1..

Potlaˇ cov´ an´ı odezvy existuj´ı dva druhy, Network Echo Cancellation (potlaˇ cov´ an´ı odezvy v s´ıt’ov´ ych sign´ alech) a Acoustic Echo Cancellation (potlaˇ cov´

Na z´ akladˇ e minim a maxim porovn´ avan´ ych element˚ u se vyhodnot´ı, zda elementy mohou nebo nemohou m´ıt spoleˇ cn´ y pr˚ unik, pokud elementy nemohou m´ıt spoleˇ cn´

Uveden´ a simulace je zaloˇ zena, jak jiˇ z bylo zm´ınˇ eno, na opakovan´ em gene- rov´ an´ı n´ ahodn´ ych dat, na kter´ ych se prov´ ad´ı dan´ y algoritmus a jsou

Ke kaˇ zd´ emu videu pouˇ zit´ emu pˇri testov´ an´ı byly hod- noty poˇ ctu osob, kter´ e proˇsly a poˇ ctu unik´ atn´ıch osob, kter´ e se ve videu objevily tak´ e

Namˇ eˇren´ a data mohou b´ yt dvoj´ıho typu, prvn´ı moˇ znost´ı je odesl´ an´ı jako asociativn´ı pole, kde kl´ıˇ cem je n´ azev veliˇ ciny a hodnotou je konkr´