ROZDZIAú 29

Analizowanie aktywno£ci procesora

     Dzia│aj╣cy procesor mo┐e efektywnie obs│ugiwaµ wszystkie zadania wykonywane w komputerze, o ile nie jest przeci╣┐ony. Aby stwierdziµ, kt≤ra z tych sytuacji zachodzi w danym komputerze, nale┐y przeanalizowaµ aktywno£µ procesora. W tym celu nale┐y skorzystaµ z licznik≤w wydajno£ci i narzΩdzi wchodz╣cych w sk│ad zestawu Microsoft Windows 2000 Resource Kit.
Zawarto£µ rozdzia│u
      Nowo£ci
      Om≤wienie monitorowania i analizy aktywno£ci procesora
      Okre£lanie linii bazowej dla wydajno£ci procesora
      Rozpoznawanie w╣skiego gard│a zwi╣zanego z procesorem
      Procesy a w╣skie gard│a
      W╣tki a w╣skie gard│a
      Zaawansowane: zmienianie priorytetu w╣tku w celu zwiΩkszenia wydajno£ci
      Eliminowanie w╣skiego gard│a zwi╣zanego z procesorem
Por≤wnaj

Nowo£ci

     U┐ytkownicy system≤w operacyjnych Windows 98 i Windows NT 4.0 zauwa┐╣ w systemie Windows 2000 kilka zmian zwi╣zanych z zasobami i u┐yciem procesora. Kr≤tkie podsumowanie tych zmian zawiera poni┐sza lista.
     Obs│uga dw≤ch procesor≤w W przeciwie±stwie do systemu Windows 98, kt≤ry m≤g│ korzystaµ tylko z jednego procesora, Windows 2000 Professional mo┐e dzia│aµ na komputerach dwuprocesorowych.
     Optymalizacja czasu odpowiedzi dla aplikacji Domy£lna konfiguracja systemu Windows 2000 Professional udostΩpnia aplikacjom optymalny czas odpowiedzi. Domy£lnie zdefiniowane niewielkie kwanty czasu o zmiennej d│ugo£ci zapewniaj╣ wzrost wydajno£ci aplikacji pierwszoplanowych. Stanowi to r≤┐nicΩ w stosunku do systemu Windows NT 4.0 Workstation, w kt≤rym aplikacje pierwszoplanowe nie otrzymywa│y wy┐szych priorytet≤w, a jedynie d│u┐sze przedzia│y (kwanty) czasu procesora. Zar≤wno w systemie Windows NT Workstation jak i Windows 2000 Professional ustawienia te mo┐na konfigurowaµ za pomoc╣ w│a£ciwo£ci Systemu. System operacyjny Windows 98 nie udostΩpnia funkcji umo┐liwiaj╣cych konfigurowanie czasu odpowiedzi systemu.
     Zmiany w licznikach W Monitorze systemu w Windows 2000 Professional z obiektu System zosta│y usuniΩte liczniki Ca│kowity czas procesora (%), Ca│kowity czas uprzywilejowany (%), Ca│kowity czas u┐ytkownika (%) i Ca│kowita liczba przerwa±/s. Aby gromadziµ analogiczne dane, w systemie Windows 2000 Professional nale┐y korzystaµ z wyst╣pienia _Total licznik≤w Czas procesora (%), Czas uprzywilejowany (%), Czas u┐ytkownika (%) oraz Przerwania/s. W systemie Windows 2000 Professional wprowadzono ponadto nowy licznik obiektu Proces, o nazwie Identyfikator procesu tworz╣cego. Licznik ten umo┐liwia identyfikowanie proces≤w, kt≤re uruchamiaj╣ inne procesy. Ponadto dodane zosta│y dwa nowe obiekty: Obiekt zadania oraz Szczeg≤│y obiektu zadania. Monitor systemu w Windows 98 nie udostΩpnia│ innych element≤w zwi╣zanych z procesorem opr≤cz licznika J╣dro: U┐ycie procesora (%), kt≤ry raportowa│ stopie± zajΩto£ci procesora.

Om≤wienie monitorowania i analizy aktywno£ci procesora

     Monitorowanie system≤w jednoprocesorowych wi╣┐e siΩ z analiz╣ wielu r≤┐nych zmiennych. AnalizΩ i monitorowanie aktywno£ci procesora mo┐na podzieliµ na nastΩpuj╣ce etapy:      Na rysunku 29.1 przedstawiono miejsce monitorowania procesora w procesie analizy wydajno£ci ca│ego systemu.


Rysunek 29.1 Rola monitorowania procesora w procesie monitorowania systemu

     Przed rozpoczΩciem procesu monitorowania nale┐y zapoznaµ siΩ z licznikami przeznaczonymi do mierzenia aktywno£ci procesora oraz z narzΩdziami zestawu Windows 2000 Resource Kit, kt≤re udostΩpniaj╣ dodatkowe informacje na temat obci╣┐enia i wydajno£ci procesora. Kolejne paragrafy zawieraj╣ kr≤tkie podsumowanie funkcji tych licznik≤w i narzΩdzi.

Liczniki procesora

     Obiekty System, Procesor, Proces i W╣tek zawieraj╣ liczniki udostΩpniaj╣ce u┐yteczne informacje na temat dzia│ania procesora. Liczniki te zosta│y opisane szczeg≤│owo w tabeli 29.1.
Tabela 29.1 Liczniki procesora

ObiektLicznikOpis

System Prze│╣czenia kontekstu/s îrednia czΩsto£µ prze│╣cze± kontekstu pomiΩdzy w╣tkami dzia│aj╣cymi w komputerze. Wysokie warto£ci tego licznika mog╣ byµ powodowane nieefektywnym sprzΩtem lub ƒle zaprojektowanym oprogramowaniem. Warto£µ tego licznika nale┐y por≤wnaµ z warto£ciami licznik≤w Procesor\Czas uprzywilejowany (%), Procesor\Czas u┐ytkownika (%) i Procesor\Czas przerwa±/s. WiΩcej informacji na ten temat mo┐na znaleƒµ w dalszej czΩ£ci tego rozdzia│u, w paragrafach äMonitorowanie przerwa±ö i äMonitorowanie prze│╣cze± kontekstuö.
Procesor Przerwania/s îrednia czΩstotliwo£µ, z jak╣ procesor obs│uguje przerwania generowane przez aplikacje lub urz╣dzenia. Wysokie warto£ci tego licznika mog╣ wskazywaµ na problemy sprzΩtowe. Jego warto£µ nale┐y por≤wnaµ z warto£ciami licznik≤w Procesor\Czas uprzywilejowany (%), Procesor\Czas u┐ytkownika (%) i Procesor\Czas przerwa±/s. WiΩcej informacji na ten temat mo┐na znaleƒµ w dalszej czΩ£ci tego rozdzia│u, w paragrafach äMonitorowanie przerwa±ö i äMonitorowanie prze│╣cze± kontekstuö.
System D│ugo£µ kolejki procesora Licznik ten wskazuje bie┐╣c╣ liczbΩ w╣tk≤w oczekuj╣cych w kolejce procesora. WiΩcej informacji na ten temat mo┐na znaleƒµ w dalszej czΩ£ci tego rozdzia│u, w paragrafie äObserwowanie d│ugo£ci kolejki procesoraö.
Procesor Czas procesora (%) Procent czasu, w jakim procesor by│ zajΩty podczas przedzia│u pr≤bkowania. Licznik ten jest odpowiednikiem miernika U┐ycie procesora w Mened┐erze zada±. WiΩcej informacji na ten temat mo┐na znaleƒµ w dalszej czΩ£ci tego rozdzia│u, w paragrafie äBadanie licznika czasu procesoraö.
Aby poznaµ og≤lnosystemow╣ warto£µ wykorzystania procesora, nale┐y skorzystaµ z licznika Procesor(_Total)\Czas procesora.
Proces Czas uprzywilejowany (%) Ilo£µ czasu, w kt≤rym proces dzia│a│ w trybie uprzywilejowanym. WiΩcej informacji na ten temat mo┐na znaleƒµ w dalszej czΩ£ci tego rozdzia│u, w paragrafie äProcesy a w╣skie gard│aö.
Proces Czas procesora (%) Ilo£µ czasu, w kt≤rym procesor by│ zajΩty obs│ug╣ okre£lonego procesu.
Proces Czas u┐ytkownika (%) Ilo£µ czasu, w kt≤rym proces dzia│a│ w trybie u┐ytkownika.
Proces Priorytet bazowy Poziom bazowego priorytetu procesu (mo┐e siΩ on wahaµ od Bezczynny, przez Normalny, Wysoki, a┐ do Czasu rzeczywistego). System Windows 2000 planuje wykonanie w╣tk≤w procesu na podstawie ich priorytet≤w. W╣tki dziedzicz╣ priorytet bazowy od swoich proces≤w nadrzΩdnych.
W╣tek Stan w╣tku Warto£µ numeryczna wskazuj╣ca stan wykonywania w╣tku. System nadaje w╣tkom stany o warto£ciach od 0 do 5. NajczΩ£ciej spotykanymi stanami s╣ 1 oznaczaj╣cy gotowo£µ, 2 oznaczaj╣cy wykonywanie i 5 oznaczaj╣cy oczekiwanie. W╣tki o stanie r≤wnym 1 znajduj╣ siΩ w kolejce procesora.
W╣tek Priorytet bazowy Poziom priorytetu bazowego (od 1 do 31) w╣tku, okre£lany na podstawie priorytetu procesu. System Windows 2000 planuje wykonanie w╣tk≤w procesu na podstawie ich priorytet≤w. W╣tki dziedzicz╣ priorytet bazowy od swoich proces≤w nadrzΩdnych.
W╣tek Priorytet bie┐╣cy Bie┐╣cy poziom priorytetu w╣tku. Warto£µ ta mo┐e siΩ zmieniaµ podczas jego dzia│ania.
W╣tek Prze│╣czenia kontekstu/s îrednia czΩsto£µ prze│╣cze± kontekstu procesora pomiΩdzy w╣tkami. Wysoka warto£µ tego licznika mo┐e wskazywaµ na to, ┐e wiele w╣tk≤w wsp≤│zawodniczy o czas procesora. WiΩcej informacji na ten temat mo┐na znaleƒµ w dalszej czΩ£ci tego rozdzia│u, w paragrafie äW╣tki a w╣skie gard│aö.
W╣tek Czas uprzywilejowany (%) Procent czasu, w kt≤rym w╣tek dzia│a│ w trybie uprzywilejowanym.
W╣tek Czas u┐ytkownika (%) Procent czasu, w kt≤rym w╣tek dzia│a│ w trybie u┐ytkownika.



Uwaga Poniewa┐ Monitor systemu okre£la czas procesora za pomoc╣ pr≤bkowania, to warto£ci licznik≤w czasu procesora zwi╣zanych z obiektami Procesor, Proces i W╣tek mog╣ byµ zawy┐one lub zani┐one w stosunku do aktywno£ci systemu, kt≤ra mia│a miejsce przed lub po pobraniu bie┐╣cej pr≤bki.
     Opr≤cz wy┐ej wymienionych obiekt≤w i licznik≤w, informacje na temat u┐ycia procesora s╣ udostΩpniane przez obiekty Obiekt zadania i Szczeg≤│y obiektu zadania. Obiekty te s╣ instalowane domy£lnie, gdy monitorowana jest wydajno£µ obiektu zadania. Obiekt zadania umo┐liwia tw≤rcom oprogramowania zarz╣dzanie grupami proces≤w na podstawie wykorzystania procesora i innych czynnik≤w. Przyk│adowo, obiekt zadania umo┐liwia aplikacji ograniczanie ilo£ci czasu zu┐ywanego przez w╣tek. Technika ta jest szczeg≤lnie u┐yteczna w aplikacjach umo┐liwiaj╣cych administracjΩ za po£rednictwem sieci Web, poniewa┐ umo┐liwia ograniczanie zajΩto£ci procesora przez okre£lon╣ lokalizacjΩ w okre£lonym przedziale czasu. DziΩki temu mo┐na unikn╣µ tworzenia siΩ w╣skich garde│ i umo┐liwiµ procesorowi obs│ugΩ innych zada±. Obiektu zadania mo┐na tak┐e u┐ywaµ do zarz╣dzania podzia│em czasu procesora pomiΩdzy grupy zada±. Dodatkowo obiekty zada± umo┐liwiaj╣ tw≤rcom oprogramowania kontrolowanie ilo£ci aktywnych proces≤w, identyfikator≤w proces≤w, klas priorytet≤w oraz przydzia│u procesora. WiΩcej informacji na temat tworzenia aplikacji u┐ywaj╣cych obiekt≤w zada± mo┐na znaleƒµ korzystaj╣c z │╣cza Microsoft Platform Software Development Kit (SDK) znajduj╣cego siΩ na stronie Web Resources, pod adresem http://windows.microsoft.com/windows2000/reskit/webresources.

NarzΩdzia zestawu Resource Kit umo┐liwiaj╣ce monitorowanie procesora

     Na dysku CD do│╣czonym do angielskojΩzycznej publikacji Microsoft Windows 2000 Professional Resource Kit znajduj╣ siΩ narzΩdzia u│atwiaj╣ce zrozumienie zagadnie± zwi╣zanych z wydajno£ci╣ procesora. NarzΩdzia te s╣ wymienione w tabeli 29.2.
Tabela 29.2 NarzΩdzia wydajno£ciowe

Nazwa narzΩdziaOpis

CpuStress Symuluje obci╣┐enie procesora.
Qslice Wy£wietla graficzn╣ reprezentacjΩ wykorzystania procesora przez poszczeg≤lne procesy.


Okre£lanie linii bazowej dla wydajno£ci procesora

     Czynno£µ monitorowania nale┐y rozpocz╣µ od przeanalizowania wykorzystania procesora w warunkach typowego obci╣┐enia systemu. DziΩki temu mo┐na okre£liµ liniΩ bazow╣, stanowi╣c╣ punkt odniesienia dla dalszych pomiar≤w wykorzystania procesora. Linia bazowa nie jest wyznaczana przez pojedyncz╣ warto£µ, lecz stanowi raczej zakres warto£ci, miΩdzy kt≤rymi mo┐e wahaµ siΩ wykorzystanie procesora przy zachowaniu akceptowalnej wydajno£ci. Linia bazowa mo┐e byµ u┐ywana do identyfikowania trend≤w, takich jak wzrost wymaga± zwi╣zanych z procesorem, oraz do rozpoznawania pojawiaj╣cych siΩ nagle problem≤w.

Wyb≤r licznik≤w dla monitorowania linii bazowej

     Aby wyznaczyµ liniΩ bazow╣, nale┐y w d│u┐szym okresie czasu (od tygodnia do miesi╣ca) rejestrowaµ warto£ci raportowane przez nastΩpuj╣ce liczniki:

Okre£lanie czasu monitorowania linii bazowej

     W celu monitorowania aktywno£ci procesora nale┐y rejestrowaµ warto£ci licznik≤w obiekt≤w System, Procesor, Proces, W╣tek, Dysk fizyczny i PamiΩµ przez co najmniej kilka dni, z interwa│em aktualizacji r≤wnym od 15 minut do godziny (w celu wykrywania w╣skich garde│ nale┐y pos│ugiwaµ siΩ znacznie mniejszymi interwa│ami). Je┐eli istnieje podejrzenie, ┐e ruch sieciowy zbyt czΩsto zajmuje procesor, to nale┐y uwzglΩdniµ tak┐e warto£ci licznik≤w sieciowych, takich jak Ca│kowita liczba bajt≤w/s w obiekcie Interfejs sieciowy. Poniewa┐ nadmierne zapotrzebowanie na zasoby pamiΩci i dysku mo┐e powodowaµ tworzenie siΩ w╣skich garde│, wp│ywaj╣cych na wydajno£µ procesora, to nale┐y monitorowaµ tak┐e liczniki zwi╣zane z pamiΩci╣ i dyskiem.
     Je┐eli jaka£ aplikacja dzia│aj╣ca w komputerze udostΩpnia w│asne liczniki, to nale┐y monitorowaµ ich warto£ci wraz z warto£ciami licznik≤w systemowych.
     Raportowane warto£ci nale┐y £ledziµ o r≤┐nych porach dnia û np. w czasie, gdy u┐ytkownicy siΩ loguj╣ lub wylogowuj╣, podczas tworzenia kopii zapasowych itd. Podczas monitorowania wymienionych wy┐ej licznik≤w od czasu do czasu na wykresie mog╣ pojawiµ siΩ szpilki. Mo┐na ich zazwyczaj nie uwzglΩdniaµ w linii bazowej û liniΩ t╣ tworz╣ jedynie te warto£ci, kt≤re s╣ sta│e w czasie.
Uwaga Okre£laj╣c czΩstotliwo£µ monitorowania nale┐y wzi╣µ pod uwagΩ zwi╣zane z nim obci╣┐enie systemu i u┐ycie powierzchni dysku. CzΩste aktualizacje bardziej obci╣┐aj╣ system i wymagaj╣ wiΩkszej pojemno£ci dysku w komputerze. Interwa│y aktualizacji, pozwalaj╣ce na wywa┐enie dok│adno£ci monitorowania danych i poziomu obci╣┐enia systemu, nale┐y okre£liµ eksperymentalnie. WiΩcej informacji na temat monitorowania wydajno£ci mo┐na znaleƒµ w Pomocy systemu Windows 2000 Professional.
     Im d│u┐ej rejestruje siΩ dane, tym dok│adniejsza bΩdzie ustalona linia bazowa. Poziom wykorzystania procesora mo┐e byµ nadmierny jedynie w okre£lonych porach dnia, tygodnia lub nawet miesi╣ca, dlatego zaobserwowanie wzorc≤w obci╣┐enia systemu zwi╣zanych ze zmianami w aktywno£ci procesora jest bardziej prawdopodobne, je┐eli dane s╣ monitorowane w d│u┐szym okresie czasu. Mo┐liwe jest nawet ustalenie harmonogramu monitorowania tak, aby by│o wykonywane jedynie w krytycznych porach dnia, podczas kt≤rych mo┐na ustawiµ interwa│ rejestrowania danych np. na 2 sekundy. Pozwala to na odizolowanie tych aplikacji, kt≤re w du┐ym stopniu obci╣┐aj╣ procesor.

Rozpoznawanie w╣skiego gard│a zwi╣zanego z procesorem

     W╣skie gard│o zwi╣zane z procesorem pojawia siΩ w≤wczas, gdy procesor jest tak zajΩty, ┐e przez pewien czas nie jest w stanie odpowiadaµ na ┐╣dania. Mimo ┐e wysoki poziom aktywno£ci procesora mo┐e wskazywaµ na nadmiern╣ zajΩto£µ procesora, to bardziej pewnym wskaƒnikiem wystΩpowania w╣skiego gard│a jest utrzymuj╣ca siΩ, d│uga kolejka procesora. Monitoruj╣c procesor i zwi╣zane z nim liczniki mo┐na rozpoznaµ tworz╣ce siΩ w╣skie gard│o na podstawie nastΩpuj╣cych warunk≤w:      NajczΩstsz╣ przyczyn╣ w╣skiego gard│a tworz╣cego siΩ w procesorze jest niedob≤r pamiΩci lub nadmierna liczba przerwa± zwi╣zanych z operacjami wej£cia/wyj£cia dysku lub sieci. Aby zapoznaµ siΩ ze sposobami analizowania tych czynnik≤w, nale┐y przeczytaµ nastΩpuj╣ce rozdzia│y:      WiΩcej informacji na temat wydajno£ci sieci mo┐na znaleƒµ w tomie Praca Serwera publikacji Microsoft Windows 2000 Server Resource Kit, w rozdziale äMonitorowanie wydajno£ci sieciö.
     Ponadto warto£µ licznika Procesor(_Total)\Przerwania/s mo┐e znacznie wzrosn╣µ po dodaniu do systemu wielu nowych u┐ytkownik≤w lub aplikacji. Podczas okres≤w niskiej aktywno£ci systemu jedynym ƒr≤d│em przerwa± powinny byµ takty czasomierza procesora. S╣ to okresowe zdarzenia, powoduj╣ce zwiΩkszenie warto£ci sprzΩtowego czasomierza procesora. Zdarzaj╣ siΩ one w przybli┐eniu co 10 do 15 milisekund, co daje 66 do 100 przerwa± na sekundΩ. CzΩstotliwo£µ przerwa± zale┐y od obci╣┐enia systemu, w tym od ilo£ci pakiet≤w sieciowych i operacji wej£cia/wyj£cia dysku obs│ugiwanych w ci╣gu sekundy. Nale┐y zwracaµ uwagΩ na warto£ci przerwa± odbiegaj╣ce od typowych zakres≤w (od 200 do 300 w systemie Microsoft Windows 2000 Professional). Je┐eli warto£µ licznika Procesor\Czas przerwa± (%) przekracza 20 do 30 procent, to mo┐e to oznaczaµ, ┐e system generuje wiΩcej przerwa± ni┐ jest w stanie obs│u┐yµ. W tym przypadku konieczna mo┐e byµ wymiana niekt≤rych ze sk│adnik≤w komputera.
     Je┐eli w╣skie gard│o zwi╣zane z procesorem nie wystΩpuje, jednak wydajno£µ systemu jest niewystarczaj╣ca, a czynniki zwi╣zane z pamiΩci╣ i innymi sk│adnikami sprzΩtowymi zosta│y wyeliminowane, to nale┐y rozwa┐yµ nastΩpuj╣ce mo┐liwo£ci poprawienia czasu odpowiedzi lub przepustowo£ci procesora:
Uwaga Korzystanie z kilku procesor≤w zamiast wymiany procesora na szybszy zazwyczaj nie zwiΩksza wydajno£ci w istotny spos≤b. Przyk│adowo, komputer w kt≤rym zainstalowano 2 procesory o prΩdko£ci 200 MHz, mo┐e nie dzia│aµ tak szybko, jak komputer z jednym procesorem 400 MHz. Jest to spowodowane obci╣┐eniem systemu zwi╣zanym z synchronizacj╣ procesor≤w. WiΩcej informacji na ten temat mo┐na znaleƒµ w tomie Praca Serwera publikacji Microsoft Windows 2000 Server Resource Kit, w rozdziale äMierzenie aktywno£ci systemu wieloprocesorowegoö.
     Je┐eli wymiana procesora nie jest mo┐liwa, to nale┐y rozpocz╣µ monitorowanie aktywno£ci procesora i wydajno£ci systemu w spos≤b opisany w kolejnych paragrafach.

Badanie licznika czasu procesora

     Licznik Procesor\Czas procesora (%) raportuje ilo£µ czasu, w kt≤rym procesor by│ zajΩty. Warto£µ ta jest okre£lana przez odjΩcie wykorzystania procesora przez proces bezczynny od 100 procent i jest miar╣ poziomu wykorzystania procesora. Mimo ┐e mo┐na czasem zaobserwowaµ wysokie warto£ci tego licznika (70 procent lub wiΩcej, w zale┐no£ci od obci╣┐enia systemu), to nie musz╣ one jeszcze wskazywaµ na wystΩpowanie problemu. Aby okre£liµ przyczynΩ takiej aktywno£ci konieczne jest zgromadzenie wiΩkszej ilo£ci danych. Przyk│adowo, wysokie warto£ci licznika czas procesora pojawiaj╣ siΩ zazwyczaj podczas uruchamiania nowego procesu i w tej sytuacji nie powinny one byµ niepokoj╣ce.
Uwaga Warto£µ, kt≤ra charakteryzuje wysokie wykorzystanie procesora, zale┐y w du┐ym stopniu od konkretnego systemu i jego obci╣┐enia. W rozdziale tym przyjΩto 70 procent jako typow╣ warto£µ graniczn╣, jednak w zale┐no£ci od sytuacji mo┐na ten poziom zmniejszyµ lub zwiΩkszyµ.
     Aby to zrozumieµ, nale┐y rozwa┐yµ sytuacjΩ, w kt≤rej system Windows 2000 zezwala aplikacji na wykorzystanie ca│ego dostΩpnego czasu procesora, je┐eli w kolejce nie oczekuje ┐aden inny w╣tek. W rezultacie Monitor systemu wy£wietla poziom wykorzystania procesora r≤wny 100 procent. Je┐eli inny w╣tek ma taki sam lub wy┐szy priorytet, to w momencie, gdy za┐╣da on czasu procesora, w╣tek u┐ywaj╣cy 100 procent czasu procesora przeka┐e mu kontrolΩ, dziΩki czemu bΩdzie on m≤g│ dzia│aµ. Spowoduje to zmniejszenie wykorzystania procesora przez pierwszy w╣tek. WiΩcej informacji na temat priorytet≤w i przydzielania czasu procesora w╣tkom znajduje siΩ w dalszej czΩ£ci tego rozdzia│u, w paragrafie äW╣tki a w╣skie gard│aö.
     Je┐eli ustali siΩ, ┐e warto£ci czasu procesora s╣ stale wysokie podczas dzia│ania okre£lonych proces≤w, to nale┐y sprawdziµ, czy nie tworzy siΩ w╣skie gard│o. W tym celu nale┐y przeanalizowaµ dane dotycz╣ce kolejki procesora. Je┐eli nie s╣ znane charakterystyki aplikacji dzia│aj╣cych aktualnie w systemie, to wymiana lub dodanie procesora w tym momencie by│oby dosyµ pochopnym rozwi╣zaniem, nawet je┐eli procesor jest stale zajΩty powy┐ej 90 procent. W pierwszej kolejno£ci nale┐y sprawdziµ, czy obci╣┐enie procesora nie uniemo┐liwia wykonania istotnych czynno£ci. Istnieje kilka r≤┐nych sposob≤w zapobiegania tworzeniu siΩ w╣skich garde│, jednak najpierw trzeba potwierdziµ, ┐e rzeczywi£cie one wystΩpuj╣.
     Je┐eli licznik Procesor\Czas procesora (%) raportuje wykorzystanie przekraczaj╣ce 70 procent, to nale┐y przeanalizowaµ aktywno£µ procesora w nastΩpuj╣cy spos≤b:

Obserwowanie d│ugo£ci kolejki procesora

     Jeden lub kilka w╣tk≤w, kt≤re s╣ gotowe do dzia│ania ale nie mog╣ byµ wykonywane przez procesor, poniewa┐ dzia│a inny aktywny w╣tek, tworz╣ kolejkΩ procesora. Najbardziej oczywistym symptomem w╣skiego gard│a zwi╣zanego z procesorem jest utrzymuj╣ca siΩ stale lub pojawiaj╣ca siΩ co chwila kolejka, zawieraj╣ca dwa lub wiΩcej w╣tk≤w. Mimo ┐e kolejki tworz╣ siΩ zazwyczaj, gdy zajΩto£µ procesora jest bardzo wysoka, to mog╣ siΩ one pojawiµ r≤wnie┐ w przypadku, gdy spada ona poni┐ej 90 procent. Mo┐e siΩ tak zdarzyµ w≤wczas, gdy ┐╣dania czasu procesora nap│ywaj╣ nieregularnie, oraz gdy ┐╣dane przedzia│y czasu s╣ nier≤wnomierne. WiΩcej informacji na temat monitorowania i dostosowywania harmonogramu w╣tk≤w znajduje siΩ w dalszej czΩ£ci tego rozdzia│u, w paragrafie äW╣tki a w╣skie gard│aö.
     Licznik System\D│ugo£µ kolejki procesora raportuje liczbΩ w╣tk≤w gotowych do dzia│ania w kolejce procesora, kt≤re nie mog╣ w danym momencie z niego korzystaµ. Rysunek 29.2 przedstawia utrzymuj╣c╣ siΩ kolejkΩ procesora, przy jego wykorzystaniu na poziomie od 60 do 90 procent. Nale┐y zwr≤ciµ uwagΩ na to, ┐e domy£ln╣ skal╣ dla licznika D│ugo£µ kolejki procesora jest 10. Dlatego je┐eli w kolejce procesora znajduj╣ siΩ dwa w╣tki, to warto£µ tego licznika na wykresie Monitora systemu osi╣ga warto£µ 20. Wsp≤│czynnik skalowania wykresu mo┐na zmieniµ za pomoc╣ zak│adki Dane w oknie dialogowym w│a£ciwo£ci Monitora systemu.

     

Rysunek 29.2 Utrzymuj╣ca siΩ kolejka procesora z rosn╣cym wykorzystaniem procesora

     Na rysunku 29.2 g≤rna linia reprezentuje warto£ci licznika Procesor(_Total)\Czas procesora (%). Ni┐sza linia przedstawia licznik System\D│ugo£µ kolejki procesora.
     Rysunek 29.3 przedstawia utrzymuj╣c╣ siΩ kolejkΩ procesora, po│╣czon╣ z wykorzystaniem procesora rzΩdu 100 procent.

     

Rysunek 29.3 Utrzymuj╣ca siΩ kolejka procesora z maksymalnym wykorzystaniem procesora

     Rysunek 29.4 przedstawia w jaki spos≤b w╣skie gard│o procesora wp│ywa na wydajno£µ komputera. Widaµ na nim, ┐e gdy procesor jest wykorzystany w 100 procentach, uruchomienie kolejnego procesu nie zwiΩksza ilo£ci wykonywanej pracy.

     

Rysunek 29.4 Procesor w stanie nasycenia

     Na rysunku 29.4 ciemna linia przebiegaj╣ca w pobli┐u szczytu wykresu odpowiada licznikowi Procesor(_Total)\Czas procesora (%). Linia poni┐ej przedstawia warto£ci licznika System\D│ugo£µ kolejki procesora. Podczas jednego z przedzia│≤w pr≤bkowania zosta│ uruchomiony proces z trzema w╣tkami. Wykres ilustruje, ┐e d│ugo£µ kolejki siΩ zwiΩkszy│a û wynika to z dodatkowego obci╣┐enia systemu. Niekt≤re z w╣tk≤w dodanego procesu mog╣ znajdowaµ siΩ w kolejce lub byµ wykonywane, je┐eli zast╣pi│y w╣tki procesu o ni┐szym priorytecie. Niemniej jednak, poniewa┐ procesor by│ ju┐ wykorzystany w maksymalnym zakresie, nie mo┐e byµ wykonana ┐adna dodatkowa praca.
     Je┐eli warto£ci licznik≤w s╣ podobne do przedstawionych na rysunku 29.4, to wskazuj╣ one na formowanie siΩ w╣skiego gard│a. Zwi╣zane z nim wzorce aktywno£ci systemu mo┐na zaobserwowaµ monitoruj╣c system przez d│u┐szy okres. Przyk│adowo, mo┐e siΩ okazaµ, ┐e w╣skie gard│o pojawia siΩ w okre£lonych porach dnia, gdy uruchamiane s╣ jakie£ procesy. W tym przypadku mo┐liwe jest jego wyeliminowanie przez proste zr≤wnowa┐enie obci╣┐enia pomiΩdzy kilkoma komputerami, tzn. przez uruchamianie pewnych proces≤w w mniej obci╣┐onych komputerach.
     Je┐eli jednak utrzymuj╣ce siΩ kolejki pojawiaj╣ siΩ czΩsto, to zachodzi konieczno£µ przeanalizowania dzia│aj╣cych w≤wczas proces≤w. W tym celu nale┐y:
Uwaga Analizuj╣c d│ugo£ci kolejek w systemach wieloprocesorowych nale┐y kierowaµ siΩ nieco innymi zasadami. W przypadku system≤w o wysokiej zajΩto£ci (gdzie poziom wykorzystania procesor≤w waha siΩ od 80 do 90 procent), w kt≤rych tworzone s╣ harmonogramy w╣tk≤w, d│ugo£µ kolejki powinna znajdowaµ siΩ w zakresie od trzech do czterech w╣tk≤w na procesor. Przyk│adowo, w systemie czteroprocesorowym oczekiwana d│ugo£µ kolejki procesora w przy du┐ym obci╣┐eniu powinna zawieraµ siΩ w przedziale od 4 do 12.
     W systemach z ni┐szym poziomem wykorzystania CPU d│ugo£µ kolejki procesora wynosi zazwyczaj 0 lub 1.
     Istniej╣ r≤wnie┐ inne obiekty, kt≤re monitoruj╣ d│ugo£µ kolejki procesora. Licznik Kolejki robocze serwera\D│ugo£µ kolejki raportuje liczbΩ ┐╣da± w kolejce procesora w wybranym serwerze. WiΩcej informacji na temat monitorowania obiektu Kolejki robocze serwera znajduje siΩ w tomie Praca Serwera publikacji Microsoft Windows 2000 Server Resource Kit, w rozdziale äMonitorowanie wydajno£ci sieciö.

Monitorowanie przerwa±

     Gwa│townie wzrastaj╣ca liczba przerwa± mo┐e wp│yn╣µ na wydajno£µ procesora, z tego wzglΩdu konieczne jest przeanalizowanie mo┐liwych przyczyn takiej sytuacji. Licznik Procesor\Przerwania/s raportuje liczbΩ przerwa± obs│ugiwanych przez procesor i pochodz╣cych od aplikacji i urz╣dze± sprzΩtowych. Mo┐na oczekiwaµ, ┐e w komputerach u┐ywaj╣cych systemu Windows 2000 Professional liczba przerwa± w ci╣gu sekundy bΩdzie wynosi│a 100 lub wiΩcej. Warto£µ ta jest zale┐na od natΩ┐enia operacji wej£cia/wyj£cia dysku oraz liczby obs│ugiwanych w ci╣gu sekundy pakiet≤w sieciowych. Je┐eli warto£ci licznika przerwa± znajduj╣ siΩ poza typowym zakresem, to mo┐e wystΩpowaµ problem sprzΩtowy û np. konflikt miΩdzy kontrolerem dysku a adapterem sieciowym. Aby sprawdziµ, czy problemy takie nie wystΩpuj╣, nale┐y skorzystaµ z narzΩdzi Informacje o systemie oraz Mened┐er urz╣dze± w konsoli Zarz╣dzanie komputerem.
     W pewnych sytuacjach istotne mo┐e byµ przeanalizowanie czΩsto£ci przerwa± w zestawieniu z poziomem aktywno£ci wej£cia/wyj£cia dysk≤w i adapter≤w sieciowych. Aby monitorowaµ operacje wej£cia/wyj£cia dysku, nale┐y pos│ugiwaµ siΩ licznikami Odczyty dysku/s oraz Zapisy dysku/s, dostΩpnymi dla obiektu Dysk fizyczny. Informacje na ten temat znajduj╣ siΩ w rozdziale äBadanie i dostrajanie wydajno£ci dyskuö. Aby monitorowaµ aktywno£µ sieci, nale┐y korzystaµ z licznik≤w transmisji sieciowej opisanych w tomie Praca Serwera publikacji Microsoft Windows 2000 Server Resource Kit, w rozdziale äMonitorowanie wydajno£ci sieciö. To, czy aktywno£µ przerwa± staje siΩ problemem, mo┐na stwierdziµ wyznaczaj╣c stosunek liczby przerwa± do liczby operacji wej£cia/wyj£cia. Optymaln╣ warto£ci╣ tego wsp≤│czynnika jest jedno przerwanie na cztery lub piΩµ operacji wej£cia/wyj£cia. Zale┐no£µ jeden-do-jednego pomiΩdzy tymi czynnikami informuje o niskiej wydajno£ci i konieczno£ci podjΩcia czynno£ci niezbΩdnych do usuniΩcia tego problemu.
     Je┐eli problemy s╣ zwi╣zane z obs│ug╣ sieci lub operacjami wej£cia/wyj£cia dysku, to nale┐y rozwa┐yµ wymianΩ kontrolera i sterownika na takie, kt≤re obs│uguj╣ technikΩ moderacji przerwa± lub unikania przerwa±. Moderacja przerwa± umo┐liwia procesorowi efektywniejsze ich przetwarzanie dziΩki grupowaniu kilku przerwaµ w jedno przerwanie sprzΩtowe. Unikanie przerwa± umo┐liwia procesorowi kontynuowanie obs│ugi przerwa± do momentu ich obs│u┐enia, bez kolejkowania nowych przerwa±. WiΩcej informacji na temat zarz╣dzania przerwaniami adapter≤w sieciowych znajduje siΩ w tomie Praca Serwera publikacji Microsoft Windows 2000 Server Resource Kit, w rozdziale äMonitorowanie wydajno£ci sieciö.
     Wysokie warto£ci licznika Czas procesora (%) raportowane dla w╣tk≤w procesu System mog╣ tak┐e wskazywaµ na problem ze sterownikiem urz╣dzenia.

Monitorowanie prze│╣cze± kontekstu

     Prze│╣czenie kontekstu zachodzi, gdy j╣dro systemu operacyjnego prze│╣cza procesor z jednego w╣tku do drugiego, przyk│adowo, gdy w╣tek o wy┐szym priorytecie ni┐ aktualnie dzia│aj╣cy osi╣gnie stan gotowo£ci. Prze│╣czanie kontekstu jest wa┐ne z kilku powod≤w. Program, kt≤ry monopolizuje procesor, obni┐a czΩsto£µ prze│╣cze± kontekstu, poniewa┐ nie pozostawia zbyt wiele czasu procesora dla w╣tk≤w innych proces≤w. Wysoka czΩsto£µ prze│╣cze± kontekst≤w oznacza, ┐e czas procesora jest wsp≤│dzielony, np. przez kilka w╣tk≤w o tym samym priorytecie. CzΩsto wskazuje to r≤wnie┐ na fakt, ┐e zbyt wiele w╣tk≤w wsp≤│zawodniczy w systemie o dostΩp do procesora.
Uwaga CzΩsto£µ prze│╣cze± kontekstu mo┐e wp│yn╣µ tak┐e na wydajno£µ komputer≤w wieloprocesorowych. WiΩcej informacji na temat monitorowania i dostrajania aktywno£ci prze│╣czania kontekstu w tych systemach mo┐na znaleƒµ w tomie Praca Serwera publikacji Microsoft Windows 2000 Server Resource Kit w rozdziale äMierzenie aktywno£ci systemu wieloprocesorowegoö.
     Dane dotycz╣ce prze│╣cze± kontekstu mo┐na ogl╣daµ na dwa sposoby:      Warto£ci tych licznik≤w mog╣ siΩ nieznacznie r≤┐niµ ze wzglΩdu na zastosowan╣ technikΩ pr≤bkowania, jednak┐e og≤lnie powinny byµ one niemal jednakowe.
     Rysunek 29.5 przedstawia wykres licznika System\Prze│╣czenia kontekstu/s podczas tymczasowego w╣skiego gard│a.
     

Rysunek 29.5 Og≤lnosystemowe prze│╣czenia kontekstu podczas w╣skiego gard│a zwi╣zanego z procesorem

     Na rysunku 29.5 warto£µ licznika Procesor(_Total)\Czas procesora (%) wzrasta do ok. 60 procent. Licznik System\D│ugo£µ kolejki procesora (przeskalowany o wsp≤│czynnik r≤wny 100) wskazuje na to, ┐e d│ugo£µ kolejki waha siΩ od 2 do 6, ze £redni╣ w pobli┐u 4. Licznik System\Prze│╣czenia kontekstu (przeskalowany o wsp≤│czynnik r≤wny 10) informuje o tym, ┐e £rednia liczba prze│╣cze± kontekstu w ci╣gu sekundy wynosi 750. CzΩsto£µ prze│╣cze± kontekstu zawieraj╣ca siΩ w przedziale od 500 do 2000 na sekundΩ mo┐e wskazywaµ na problemy zwi╣zane z adapterem sieciowym lub sterownikiem urz╣dzenia, albo ┐e korzysta siΩ z nieefektywnej aplikacji tworz╣cej zbyt wiele w╣tk≤w.
     NarzΩdzie Pviewer, znajduj╣ce siΩ na dysku CD systemu Windows 2000, umo┐liwia raportowanie danych dotycz╣cych prze│╣cze± kontekstu. WiΩcej informacji na temat instalowania i korzystania z pakietu narzΩdzi Windows 2000 Support Tools znajduje siΩ w pliku Sreadme.doc, dostΩpnym w katalogu Support\Tools na tym samym dysku CD.

Procesy a w╣skie gard│a

     Po zidentyfikowaniu w╣skiego gard│a zwi╣zanego z procesorem nale┐y okre£liµ, czy procesor jest zajmowany przez jeden proces, czy te┐ jego czas jest wykorzystywany przez wiele r≤┐nych proces≤w. W tym celu nale┐y zarejestrowaµ czas procesora dla ka┐dego z proces≤w, kt≤re dzia│aj╣ w komputerze. Aby to wykonaµ, nale┐y:
Uwaga Wszystkie dzia│aj╣ce procesy s╣ wymienione na li£cie Wyst╣pienia pod nazw╣ zwi╣zanego z nimi programu (przyk│adowo, Eksplorator Windows jest widoczny jako äexplorerö). Nale┐y zauwa┐yµ, ┐e je┐eli dzia│a kilka wyst╣pie± tego samego programu, to Monitor systemu wy£wietla je wszystkie z tak╣ sam╣ nazw╣. Z tego powodu nale┐y je £ledziµ na podstawie identyfikator≤w proces≤w. Identyfikatory te mo┐na uzyskaµ za pomoc╣ licznika Proces\Identfyfikator procesu lub dodaj╣c kolumnΩ Identyfikator procesu w Mened┐erze zada±. WiΩcej informacji na ten temat znajduje siΩ w dalszej czΩ£ci tego rozdzia│u, w paragrafie äW╣tki a w╣skie gard│aö.
     WiΩcej informacji na temat proces≤w systemu MS-DOS oraz 16-bitowych proces≤w systemu Windows, kt≤re s╣ w inny spos≤b przedstawiane w interfejsie u┐ytkownika Monitora systemu, znajduje siΩ w rozdziale äOm≤wienie monitorowania wydajno£ciö oraz w Pomocy systemu Windows 2000 Server.

Identyfikowanie aktywnych proces≤w

     Aby okre£liµ poziom wykorzystania procesora zwi╣zany z typowym obci╣┐eniem, nale┐y monitorowaµ wyst╣pienia uruchamianych zazwyczaj proces≤w. Je┐eli oka┐e siΩ, ┐e na og≤│ nie korzysta siΩ z niekt≤rych, dzia│aj╣cych aktualnie proces≤w (takich jak us│ugi dzia│aj╣ce w tle), to nale┐y je zatrzymaµ i zmierzyµ wp│yw tej operacji na obci╣┐enie procesora. Mo┐e to byµ prostym sposobem zwiΩkszenia wydajno£ci komputera, nale┐y jednak zawsze wzi╣µ pod uwagΩ mo┐liwe konsekwencje zatrzymania danej us│ugi. Aby zatrzymaµ us│ugΩ, nale┐y wykonaµ poni┐sz╣ procedurΩ.

Aby zatrzymaµ us│ugΩ, nale┐y:
  1. W menu Start wskazaµ Programy, NarzΩdzia administracyjne, a nastΩpnie klikn╣µ Zarz╣dzanie komputerem.
  2. W konsoli Zarz╣dzanie komputerem klikn╣µ opcjΩ Us│ugi i aplikacje.
  3. Dwukrotnie klikn╣µ opcjΩ Us│ugi.
  4. Klikn╣µ prawym przyciskiem myszy us│ugΩ, a nastΩpnie klikn╣µ przycisk Zatrzymaj.

Okre£lanie proces≤w intensywnie korzystaj╣cych z procesora

     Je┐eli w╣tki procesu u┐ywaj╣ znacznej czΩ£ci czasu procesora, to konieczne jest przeanalizowanie tego procesu w celu sprawdzenia, czy jego wydajno£µ nie mo┐e zostaµ zoptymalizowana. WiΩcej informacji na temat zwiΩkszania wydajno£ci aplikacji mo┐na uzyskaµ korzystaj╣c z │╣cza Microsoft Platform SDK, dostΩpnego na stronie Web Resources, pod adresem http://windows.microsoft.com/windows2000/reskit/webresources. Je┐eli optymalizacja nie daje zadowalaj╣cych rezultat≤w, to konieczne mo┐e byµ rozszerzenie dostΩpnych zasob≤w procesora.
     Problemy zwi╣zane ze sterownikami urz╣dze± mog╣ powodowaµ wystΩpowanie wysokich warto£ci licznika Czas procesora (%) dla procesu System.
     Je┐eli procesor jest obci╣┐any przez jeden proces, to linia zwi╣zana z tym procesem osi╣ga na wykresie poziom najwy┐szy ze wszystkich. Pokazano to na rysunku 29.6, kt≤ry przedstawia histogram w╣skiego gard│a procesora powodowanego przez jeden proces. Podobne rezultaty mo┐na osi╣gn╣µ uruchamiaj╣c narzΩdzie CpuStress, znajduj╣ce siΩ na dysku CD do│╣czonym do angielskiej wersji jΩzykowej publikacji Microsoft Windows 2000 Professional Resource Kit.
     

Rysunek 29.6 W╣skie gard│o procesora spowodowane przez jeden proces

     Powy┐szy histogram pokazuje, ┐e podczas trwania w╣skiego gard│a wysoko aktywny jest jeden proces (reprezentowany przez najwy┐szy s│upek) û jego w╣tki dzia│aj╣ przez ponad 90 procent interwa│u pr≤bkowania. Je┐eli wzorzec ten utrzymuje siΩ, a jednocze£nie formuje siΩ d│uga kolejka procesora, to nale┐y podejrzewaµ, ┐e w╣skie gard│o jest powodowane aplikacj╣, w kt≤rej dzia│a ten proces.
     Nale┐y zauwa┐yµ, ┐e wysoko aktywny proces stanowi problem jedynie w przypadku, gdy tworzy siΩ kolejka procesora. Je┐eli czas odpowiedzi systemu i przepustowo£µ nie s╣ zadowalaj╣ce, to nale┐y rozwa┐yµ zakup szybszego procesora, zapewniaj╣cego wy┐sz╣ wydajno£µ.
     Je┐eli w╣skie gard│o procesora jest prawdopodobnie powodowane przez aplikacjΩ, to nale┐y zaprzestaµ korzystania z niej na kilka dni lub przenie£µ j╣ do innego komputera. Innym rozwi╣zaniem jest zaplanowanie uruchamiania tego procesu w godzinach niskiej aktywno£ci systemu. NastΩpnie nale┐y ponownie zarejestrowaµ wykorzystanie procesora. Je┐eli problem ust╣pi│, to by│ on powodowany przez podejrzewan╣ aplikacjΩ.

Redukowanie w╣skich garde│ powodowanych przez jeden proces

     Je┐eli przeniesienie aplikacji do innego komputera nie jest mo┐liwe, ale posiada siΩ dostΩp do jej kodu ƒr≤d│owego, to mo┐na j╣ dostroiµ w celu zwiΩkszenia jej efektywno£ci. OptymalizacjΩ aplikacji nale┐y rozpocz╣µ od uruchomienia programu typu profiler, narzΩdzia umo┐liwiaj╣cego analizΩ zachowania programu podczas jego dzia│ania. Pozwala to na okre£lenie, w jaki spos≤b aplikacja korzysta z czasu procesora. Pakiet Platform SDK zawiera narzΩdzia u│atwiaj╣ce optymalizacjΩ aplikacji oraz instrukcje tworzenia licznik≤w wydajno£ci, umo┐liwiaj╣cych monitorowanie ich wewnΩtrznego dzia│ania. Aby dostroiµ aplikacjΩ tak, aby korzysta│a z procesora mniej intensywnie, mo┐na skorzystaµ z narzΩdzi pakietu SDK takich, jak Call Attributed Profiler (CAP) lub File I/O Synchronization Win32 API Profiler (FIOSAP). Mo┐na tak┐e skorzystaµ z narzΩdzi API Monitor (Apimon.exe) oraz Kernel Profiler (Kernprof.exe), kt≤re znajduj╣ siΩ na dysku CD do│╣czonym do angielskojΩzycznej publikacji Microsoft Windows 2000 Professional Resource Kit.

     Je┐eli dostrojenie nie zmniejsza obci╣┐enia procesora przez aplikacjΩ lub brak jest dostΩpu do jej kodu ƒr≤d│owego, to mo┐na:

Obserwowanie wykorzystania procesora przez wiele proces≤w

     Rysunek 29.7 przedstawia histogram czasu procesora dla kilku aktywnych proces≤w. SytuacjΩ t╣ uzyskano po uruchomieniu dw≤ch wyst╣pie± narzΩdzia CpuStress, kt≤rego zadaniem jest u┐ywanie procesora z okre£lonym priorytetem i poziomem aktywno£ci.


Rysunek 29.7 Czas procesora dla kilku aktywnych proces≤w

     W powy┐szym przyk│adzie dwa procesy wykorzystuj╣ ca│y czas procesora, dziel╣c go miΩdzy siebie niemal po r≤wno. Mimo ┐e ka┐dy z proces≤w u┐ywa jedynie 45 procent czasu procesora, to rezultat jest taki sam, jakby jeden proces wykorzystywa│ 90 procent tego czasu.
     Rysunek 29.8 przedstawia warto£µ licznika System\D│ugo£µ kolejki procesora podczas trwania wy┐ej opisanego w╣skiego gard│a.
     

Rysunek 29.8 D│ugo£µ kolejki procesora podczas aktywno£ci kilku proces≤w

     Na rysunku 29.8 suma warto£ci licznika Procesor\Czas procesora (%) dla wszystkich proces≤w jest bliska 100 procent. Licznik System\D│ugo£µ kolejki procesora informuje o wystΩpowaniu d│ugiej kolejki, zawieraj╣cej £rednio ok. sze£ciu w╣tk≤w.
     Rysunek 29.9 przedstawia Mened┐era zada± podczas trwania tego samego w╣skiego gard│a. Widaµ na nim, ┐e dwa procesy CpuStress wykorzystuj╣ w przybli┐eniu po po│owie czasu jedynego procesora zainstalowanego w komputerze. Mened┐er zada± wy£wietla jedynie aktualne warto£ci mierzonych parametr≤w, dlatego te┐ aby zauwa┐yµ zmiany w wykorzystaniu procesora, nale┐y na bie┐╣co obserwowaµ wy£wietlane informacje.
     

Rysunek 29.9 Wykorzystanie procesora przez kilka proces≤w, obserwowane w Mened┐erze zada±

     W tym momencie mo┐na podj╣µ decyzjΩ o dodaniu procesora lub wymianie aktualnego na bardziej wydajny albo rozpocz╣µ dalsz╣ analizΩ aktywno£ci procesu badaj╣c zachowanie jego w╣tk≤w. Mimo ┐e wydajniejszy procesor m≤g│by pom≤c w rozwi╣zaniu problemu, to w╣skie gard│a powodowane przez r≤wnoczesne dzia│anie kilku proces≤w najlepiej usuwaµ dodaj╣c dodatkowy procesor. Przynosi to korzy£ci zauwa┐alne zw│aszcza w przypadku proces≤w wielow╣tkowych, w tym wielu us│ug systemu Windows 2000, poniewa┐ poszczeg≤lne ich w╣tki mog╣ byµ wykonywane w odrΩbnych procesorach. Mo┐na tak┐e przydzieliµ procesy do poszczeg≤lnych procesor≤w w celu uzyskania optymalnej wydajno£ci. WiΩcej informacji na ten temat mo┐na znaleƒµ w tomie Praca Serwera publikacji Microsoft Windows 2000 Server Resource Kit, w rozdziale äMierzenie aktywno£ci systemu wieloprocesorowegoö.
     Aby dowiedzieµ siΩ wiΩcej, w jaki spos≤b okre£lony proces wykorzystuje procesor, nale┐y przeanalizowaµ warto£ci licznik≤w Proces\Czas u┐ytkownika (%) oraz Proces\Czas uprzywilejowany (%). Ponadto nale┐y zwr≤ciµ uwagΩ na warto£ci licznik≤w obiektu W╣tek, opisanych szczeg≤│owo w kolejnym paragrafie.
     WiΩcej informacji o tym, jak mo┐na sprawdziµ, czy aplikacja jest wielow╣tkowa, znajduje siΩ w dalszej czΩ£ci tego rozdzia│u, w paragrafie äW╣tki a w╣skie gard│aö. Czasem mo┐e byµ tak┐e istotne sprawdzenie, czy wszystkie w╣tki procesu wielow╣tkowego s╣ aktywne podczas trwania w╣skiego gard│a. Korzy£ci z dodawania procesor≤w zale┐╣ od tego, czy w systemie wystΩpuje du┐a liczba aktywnych w╣tk≤w. W rezultacie monitorowania mo┐e siΩ okazaµ, ┐e w╣tki procesu s╣ przez wiΩksz╣ czΩ£µ czasu nieaktywne, co powoduje, ┐e dodawanie procesora, kt≤ry mia│by je obs│ugiwaµ, jest strat╣ pieniΩdzy.
     WiΩcej informacji na temat korzy£ci ze skalowania systemu czyli dodawania procesor≤w, kt≤re mia│yby obs│ugiwaµ wiΩksze obci╣┐enie oraz tego, jak sprawdziµ, czy jest to w danej sytuacji zalecane, znajduje siΩ w tomie Praca Serwera publikacji Microsoft Windows 2000 Server Resource Kit, w rozdziale äMierzenie aktywno£ci systemu wieloprocesorowegoö.

W╣tki a w╣skie gard│a

     Poszczeg≤lne w╣tki procesu lub proces≤w nale┐y badaµ, je┐eli konieczna jest dok│adniejsza analiza aktywno£ci procesora. Aby dowiedzieµ siΩ, w jakim stopniu aktywno£µ w╣tku wp│ywa na powstawanie problemu oraz czy jest on powodowany przez jeden czy kilka proces≤w, nale┐y monitorowaµ nastΩpuj╣ce parametry:      Po przeanalizowaniu aktywno£ci w╣tk≤w za pomoc╣ licznik≤w aktywno£ci, mo┐na dostosowaµ ich harmonogram w celu udostΩpnienia wiΩkszej ilo£ci czasu procesora procesom blokowanym przez w╣skie gard│o.
     Opr≤cz modyfikowania priorytetu w╣tku nie mo┐na zmieniaµ jego zachowania nie zmieniaj╣c kodu ƒr≤d│owego zwi╣zanej z nim aplikacji. Maj╣c dostΩp do kodu ƒr≤d│owego mo┐na tworzyµ liczniki wydajno£ci umo┐liwiaj╣ce niskopoziomowe monitorowanie w╣tk≤w danej aplikacji. WiΩcej informacji na ten temat mo┐na uzyskaµ korzystaj╣c z │╣cza Microsoft Platform SDK, znajduj╣cego siΩ na stronie Web Resources, pod adresem http://windows.microsoft.com/windows2000/reskit/webresources.

W╣skie gard│o powodowane przez jeden lub wiele w╣tk≤w

     W╣skie gard│a mog╣ powstawaµ w wyniku aktywno£ci kilku w╣tk≤w jednego procesu, pojedynczych w╣tk≤w kilku proces≤w lub wielu w╣tk≤w wielu proces≤w. Poniewa┐ ka┐dy z tych problem≤w nale┐y rozwi╣zywaµ w inny spos≤b, w pierwszej kolejno£ci nale┐y okre£liµ, kt≤ra z tych sytuacji zachodzi.
     Aby przeanalizowaµ dzia│anie w╣tk≤w podczas wystΩpowania w╣skiego gard│a, nale┐y rejestrowaµ warto£ci licznik≤w obiekt≤w Procesor, Proces i W╣tek przez kilka dni, z interwa│em aktualizacji ustawionym na 60 sekund. Umo┐liwia to zapoznanie siΩ z aktywno£ci╣ w╣tk≤w w typowych warunkach pracy i pomaga w powi╣zaniu tej aktywno£ci z wykonywanymi czynno£ciami i wykorzystaniem procesora.
Uwaga Warto£ci licznik≤w wydajno£ci w╣tk≤w s╣ czΩsto b│Ωdne podczas uruchamiania i zatrzymywania w╣tk≤w. Widoczne s╣ one jako szpilki na wykresach prezentowanych danych. WiΩcej informacji na ten temat mo┐na znaleƒµ w rozdziale äOm≤wienie monitorowania wydajno£ciö.


Aby sprawdziµ, czy proces jest jedno- czy wielow╣tkowy, nale┐y:
  1. Klikn╣µ prawym przyciskiem myszy pasek zada± systemu Windows i wybraµ z menu podrΩcznego polecenie Mened┐er zada±.
  2. Mened┐erze zada± wybraµ zak│adkΩ Procesy, a w menu Widok klikn╣µ polecenie Wybierz kolumny.
  3. W│╣czyµ opcjΩ Liczba w╣tk≤w, a nastΩpnie klikn╣µ przycisk OK.
     Na rysunku 29.10 przedstawiono Mened┐era zada± wy£wietlaj╣cego liczby w╣tk≤w dzia│aj╣cych w procesie wraz z ich nazwami.
     

Rysunek 29.10 Liczba w╣tk≤w zainicjowanych przez procesy wy£wietlana w Mened┐erze zada±

     W Monitorze systemu lub w Dziennikach licznik≤w nale┐y wybraµ obiekt W╣tek i zwr≤ciµ uwagΩ na wszystkie jego wyst╣pienia wymienione na li£cie Wyst╣pienia. Je┐eli na li£cie tej znajduje siΩ kilka identyfikator≤w w╣tk≤w, to proces jest wielow╣tkowy. Na rysunku 29.11 przedstawiono, w jaki spos≤b poszczeg≤lne w╣tki jednego procesu s╣ uwzglΩdnione na li£cie Wyst╣pienia w Monitorze systemu.
     

Rysunek 29.11 Wyst╣pienia w╣tk≤w wy£wietlane podczas dodawania licznik≤w w Monitorze systemu

     Monitor systemu identyfikuje w╣tki na podstawie nazwy procesu i numeru w╣tku. Kolejno£µ, w kt≤rej w╣tki pojawiaj╣ siΩ na wykresie, zale┐y od kolejno£ci, w kt≤rej by│y one do tego wykresu dodawane. Numery w╣tk≤w wy£wietlane na li£cie Wyst╣pienia reprezentuj╣ kolejno£µ, w jakiej poszczeg≤lne w╣tki by│y uruchamiane i mog╣ siΩ zmieniaµ w czasie dzia│ania procesu.
     Identyfikatory w╣tk≤w s╣ wa┐ne jedynie w czasie ich istnienia û po zako±czeniu w╣tku jego identyfikator jest u┐ywany ponownie. Numery w╣tk≤w mog╣ zmieniaµ siΩ w czasie dzia│ania procesu, dlatego te┐ lepiej monitorowaµ w╣tki na podstawie ich identyfikator≤w. Identyfikatory w╣tk≤w mo┐na uzyskaµ pos│uguj╣c siΩ narzΩdziem Task List Viewer (Tlist.exe). WiΩcej informacji na temat tego narzΩdzia znajduje siΩ w Pomocy narzΩdzi pakietu Windows 2000 Support Tools. Instrukcje dotycz╣ce instalowania i u┐ywania tych narzΩdzi znajduj╣ siΩ w pliku Sreadme.doc, kt≤ry mo┐na znaleƒµ w katalogu Support\Tools na dysku CD systemu operacyjnego Windows 2000.
     Je┐eli proces jest wielow╣tkowy, to dodanie procesora zwiΩksza jego wydajno£µ. Je┐eli jest on jednow╣tkowy, to jego wydajno£µ mo┐na zwiΩkszyµ u┐ywaj╣c szybszego procesora. Inne rozwi╣zania s╣ bardziej zaawansowane i dotycz╣ raczej tw≤rc≤w oprogramowania, kt≤rzy maj╣ mo┐liwo£µ dostrajania opracowywanych przez siebie aplikacji.

Badanie wykorzystania procesora przez poszczeg≤lne w╣tki

     Obserwacja wykorzystania czasu procesora przez poszczeg≤lne w╣tki pozwala uzyskaµ dodatkowe informacje na temat aktywno£ci procesora podczas wystΩpowania w╣skiego gard│a. Monitor systemu umo┐liwia monitorowanie wykorzystania procesora przez w╣tki za pomoc╣ licznika W╣tek\Czas procesora (%). Je┐eli jaki£ proces jest jednow╣tkowy, to nie wystΩpuje konieczno£µ £ledzenia wykorzystania procesora przez jego w╣tek û raportowane warto£ci bΩd╣ niemal identyczne (ewentualne odchy│ki wynikaj╣ z pr≤bkowania), jak warto£ci czasu procesora zarejestrowane podczas £ledzenia samego procesu.
     Rysunek 29.12 przedstawia warto£ci licznika W╣tek\Czas procesora (%) dla wszystkich zainicjowanych w╣tk≤w, w czasie gdy wystΩpuje w╣skie gard│o. Ka┐dy ze s│upk≤w histogramu reprezentuje czas procesora zwi╣zany z jednym w╣tkiem.
     

Rysunek 29.12 Wykorzystania procesora przez poszczeg≤lne w╣tki

     Na rysunku 29.12 widaµ, ┐e trzy w╣tki procesu CpuStress dominuj╣ we wzorcu wykorzystania procesora, jednak┐e kilka innych w╣tk≤w otrzymuje pewn╣ czΩ£µ tego czasu.
     Je┐eli aktywno£µ w╣tk≤w w systemie jest podobna do przedstawionej na powy┐szym rysunku, a ponadto tworzy siΩ d│uga kolejka procesora, to prawdopodobnie niekt≤re z dzia│aj╣cych aplikacji otrzymuj╣ mniejsz╣ czΩ£µ czasu procesora, ni┐ potrzebna do efektywnego ich funkcjonowania.

Prze│╣czenia kontekstu

     Licznik W╣tek\Prze│╣czenia kontekstu/s w Monitorze systemu umo┐liwia spojrzenie z innej perspektywy na podzia│ czasu pomiΩdzy w╣tki korzystaj╣ce z procesora. Prze│╣czenie kontekstu zachodzi, gdy j╣dro systemu prze│╣cza procesor pomiΩdzy r≤┐nymi w╣tkami. Mo┐e ono r≤wnie┐ wyst╣piµ w≤wczas, gdy w╣tek o priorytecie wy┐szym ni┐ priorytet dzia│aj╣cego w╣tku uzyska gotowo£µ lub gdy wykonywany aktualnie w╣tek musi z jakiego£ powodu poczekaµ (np. podczas wykonywania operacji wej£cia/wyj£cia). Warto£µ licznika W╣tek\Prze│╣czenia kontekstu/s zwiΩksza siΩ za ka┐dym razem, gdy w╣tek otrzymuje lub traci przydzia│ czasu procesora.
     Podczas prze│╣czenia kontekstu przynajmniej dwa w╣tki zmieniaj╣ sw≤j stan. Jednym z nich mo┐e byµ jednak w╣tek bezczynny danego procesora. Wnikliwa analiza danych dotycz╣cych prze│╣cze± kontekstu pozwala odkryµ wzorce wykorzystania procesora przez w╣tek i umo┐liwia okre£lenie, jak efektywnie w╣tek wsp≤│dzieli czas procesora z innymi w╣tkami tego samego i innych proces≤w.
     Warto£µ licznika System\Prze│╣czenia kontestu/s, raportuj╣cego og≤lnosystemow╣ liczbΩ prze│╣cze± kontekstu, musi byµ zbli┐ona lub identyczna do warto£ci wyst╣pienia _Total licznika W╣tek\Prze│╣czenia kontekstu/s. Monitorowanie tych licznik≤w w d│u┐szym okresie czasu pozwala okre£liµ zakres, w jakim ich warto£ci mog╣ siΩ od siebie r≤┐niµ.
     Dane zwi╣zane z opisywanym licznikiem nale┐y interpretowaµ uwa┐nie. W╣tek, kt≤ry w znacznym stopniu obci╣┐a procesor, zmniejsza czΩsto£µ prze│╣cze± kontekstu, poniewa┐ z jego powodu w╣tki innych proces≤w rzadziej otrzymuj╣ przydzia│ czasu procesora. Wysoka czΩsto£µ prze│╣cze± kontekstu wskazuje na to, ┐e czas procesora jest dzielony przez wiele w╣tk≤w o takim samym priorytecie. Dobr╣ praktyk╣ jest minimalizowanie czΩsto£ci prze│╣cze± kontekstu przez ograniczanie liczby aktywnych w╣tk≤w w systemie. LiczbΩ t╣ mo┐na zmniejszyµ korzystaj╣c z pul w╣tk≤w, port≤w kompletacji wej£cia/wyj£cia oraz asynchronicznych operacji wej£cia/wyj£cia. Aby dowiedzieµ siΩ, czy u┐ywane aplikacje udostΩpniaj╣ funkcje dostrajania pozwalaj╣ce na ograniczenie liczby w╣tk≤w, nale┐y skontaktowaµ siΩ z ich dostawcami lub tw≤rcami.
     CzΩsto£µ prze│╣cze± kontekstu wynosz╣c╣ 300 na sekundΩ mo┐na uznaµ za typow╣. CzΩsto£µ r≤wna 1000 lub wiΩcej prze│╣cze± na sekundΩ jest wysoka. Warto£ci na tym poziomie mog╣ powodowaµ problemy z wydajno£ci╣ systemu.
     To, czy czΩsto£µ prze│╣cze± kontekstu nie jest nadmierna, mo┐na okre£liµ analizuj╣c dodatkowo warto£µ licznika Procesor\Czas uprzywilejowany (%). Je┐eli licznik ten posiada warto£µ 40 procent lub wiΩcej, a czΩsto£µ prze│╣cze± kontekstu jest wysoka, to nale┐y spr≤bowaµ odszukaµ i usun╣µ przyczynΩ tej wysokiej czΩsto£ci.

Tryb u┐ytkownika a tryb uprzywilejowany

     Mo┐liwe jest okre£lenie ilo£ci czasu, w kt≤rym w╣tek procesu dzia│a w trybie u┐ytkownika oraz w trybie uprzywilejowanym. Tryb u┐ytkownika jest trybem przetwarzania, w kt≤rym dzia│aj╣ aplikacje. Tryb uprzywilejowany, nazywany te┐ trybem j╣dra, jest trybem przetwarzania umo┐liwiaj╣cym w╣tkowi bezpo£redni dostΩp do ca│ego sprzΩtu i pamiΩci w systemie. Tw≤rcom oprogramowania czasem potrzebna jest informacja o tym, ile czasu proces spΩdza w ka┐dym z tych tryb≤w i jakie jego funkcje u┐ywaj╣ w tym czasie procesora.
     Operacje wej£cia/wyj£cia i inne us│ugi systemowe dzia│aj╣ w trybie uprzywilejowanym (j╣dra), natomiast aplikacje dzia│aj╣ w trybie u┐ytkownika. Je┐eli aplikacje te nie korzystaj╣ intensywnie z zasob≤w graficznych lub operacji wej£cia/wyj£cia (np. us│ugi plikowe i wydruk≤w), to w wiΩkszo£ci przypadk≤w nie powinny dzia│aµ zbyt intensywnie w trybie uprzywilejowanym.
     Monitor systemu udostΩpnia liczniki Czas uprzywilejowany (%) i Czas u┐ytkownika (%) dla obiekt≤w System, Procesor i W╣tek. Liczniki te zosta│y opisane wcze£niej w tym rozdziale, w paragrafie äLiczniki procesoraö. U┐ytecznym wskaƒnikiem wykorzystania czasu uprzywilejowanego mo┐e byµ tak┐e licznik Wywo│ania systemowe/s, poniewa┐ odwo│ania aplikacji do systemu operacyjnego s╣ obs│ugiwane w│a£nie w trybie uprzywilejowanym.
     Liczniki czasu uprzywilejowanego i u┐ytkownika wy£wietlaj╣ ca│kowit╣ ilo£µ czasu procesora, kt≤ry proces spΩdza w trybie uprzywilejowanym lub u┐ytkownika.
     Na rysunku 29.13 przedstawiono raport Monitora systemu informuj╣cy o ilo£ci czasu u┐ytkownika i uprzywilejowanego dla trzech proces≤w.
     

Rysunek 29.13 Czas uprzywilejowany i u┐ytkownika

     Na powy┐szym rysunku widaµ, ┐e konsola MMC czyli proces, w kt≤rym dzia│a Monitor systemu, wykonuje siΩ g│≤wnie w trybie uprzywilejowanym. Tasmgr.exe czyli proces Mened┐era zada± r≤wnie┐ dzia│a g│≤wnie w trybie uprzywilejowanym, jednak┐e w jego przypadku podzia│ czasu pomiΩdzy trybami podlega znacznym wahaniom. Z kolei Cpustres, proces programu testuj╣cego CpuStress, przez ca│y czas dzia│a wy│╣cznie w trybie u┐ytkownika.
     Rysunek 29.14 przedstawia ilo£µ czasu u┐ytkownika i uprzywilejowanego dla ka┐dego z w╣tk≤w procesu Mened┐era zada±.
     

Rysunek 29.14 Czas uprzywilejowany i u┐ytkownika dla procesu i jego w╣tk≤w

     NarzΩdzie Process Viewer (Pviewer.exe) wy£wietla ilo£µ czasu u┐ytkownika i uprzywilejowanego dla ka┐dego dzia│aj╣cego procesu i dla wszystkich w╣tk≤w w zwi╣zanych z tymi procesami. W narzΩdziu tym czas u┐ytkownika i uprzywilejowany dla ka┐dego z proces≤w sumuj╣ siΩ do 100 procent, poniewa┐ brany jest pod uwagΩ tak┐e czas bezczynno£ci. W Monitorze systemu procentowe warto£ci wy£wietlane dla poszczeg≤lnych proces≤w odzwierciedlaj╣ ilo£µ czynnego czasu procesora wykorzystywanego w ka┐dym z tryb≤w. Aby sprawdziµ, ┐e czas zajmowany przez procesy sumuje siΩ do 100 procent, nale┐y sumuj╣c warto£ci dla poszczeg≤lnych proces≤w uwzglΩdniµ tak┐e proces bezczynny.
     WiΩcej informacji na temat narzΩdzia Pviewer.exe znajduje siΩ w Pomocy narzΩdzi pakietu Windows 2000 Support Tools. Instrukcje dotycz╣ce instalowania i u┐ywania tych narzΩdzi znajduj╣ siΩ w pliku Sreadme.doc, kt≤ry mo┐na znaleƒµ w katalogu Support\Tools na dysku CD systemu operacyjnego Windows 2000.

Zaawansowane: zmienianie priorytetu w╣tku w celu zwiΩkszenia wydajno£ci

     Po wyodrΩbnieniu w╣tk≤w, kt≤re najintensywniej wykorzystuj╣ procesor, nale┐y rozpocz╣µ monitorowanie ich stan≤w. Umo┐liwia to stwierdzenie, kt≤re z w╣tk≤w s╣ aktualnie wykonywane, a kt≤re s╣ gotowe do wykonania. Co wa┐niejsze, monitorowanie stan≤w w╣tk≤w w systemie mo┐e pom≤c w zidentyfikowaniu tych, kt≤re zalegaj╣ w kolejce oraz w stwierdzeniu, kt≤re w╣tki s╣ aktywne w poszczeg≤lnych momentach czasu.
     UdostΩpniany przez Monitor systemu licznik W╣tek\Stan w╣tku raportuje bie┐╣cy stan wykonywania w╣tku. Monitor systemu raportuje stany w╣tk≤w jako numeryczne warto£ci z zakresu od 0 do 7, w zale┐no£ci od tego czy s╣ one gotowe, dzia│aj╣ce, zako±czone itp.
     W tabeli 29.3 wymieniono typowe stany w╣tk≤w.      
Tabela 29.3 Typowe stany w╣tk≤w

Stan w╣tkuOpisKomentarz

0 Zainicjowany
1 Gotowy W╣tek jest gotowy do uruchomienia na pierwszym dostΩpnym procesorze.
2 Dzia│aj╣cy
3 Stan czuwania W╣tek za chwilΩ skorzysta z procesora.
4 Zako±czony
5 Oczekuj╣cy W╣tek nie jest gotowy do uruchomienia, zazwyczaj poniewa┐ inna operacja (np. zwi╣zana z wej£ciem/wyj£ciem) musi zostaµ zako±czona przed jego uruchomieniem.
6 Przej£ciowy W╣tek nie jest gotowy do uruchomienia, poniewa┐ oczekuje na udostΩpnienie zasobu (np. kodu, kt≤ry zosta│ stronicowany na dysk).
7 Nieznany W╣tek znajduje siΩ w nierozpoznanym stanie.


     Aby sprawdziµ, kt≤re z w╣tk≤w wsp≤│zawodnicz╣ o dostΩp do procesora, nale┐y prze£ledziµ stany wszystkich w╣tk≤w w systemie za pomoc╣ Monitora systemu. Rysunek 29.15 przedstawia histogram. Aby jego interpretacja by│a │atwiejsza, ustawiono jego maksymaln╣ warto£µ na 10. Innym sposobem wygodnego przegl╣dania stan≤w w╣tk≤w jest wy£wietlanie ich w widoku raportu.
     

Rysunek 29.15 Wykres stan≤w w╣tk≤w

     Nale┐y zauwa┐yµ, ┐e na powy┐szym wykresie widoczny jest w╣tek procesu MMC, dzia│aj╣cy stabilnie w stanie 2. Jest to w╣tek snap-in Monitora systemu, kt≤ry gromadzi ogl╣dane aktualnie dane. Tak d│ugo, jak dzia│a Monitor systemu, jeden z jego w╣tk≤w jest wy£wietlany jako dzia│aj╣cy. Warto£ci stan≤w innych w╣tk≤w zmieniaj╣ siΩ pomiΩdzy 1 (gotowo£µ) a (oczekiwanie).
     Wy£wietlenie danych o stanie w╣tk≤w w formie wykresu zamiast histogramu u│atwia obserwacjΩ moment≤w prze│╣czania w╣tk≤w miΩdzy poszczeg≤lnymi stanami. Na rysunku 29.16 nale┐y zwr≤ciµ uwagΩ na to, jak w╣tek procesu prze│╣cza siΩ miΩdzy stanem oczekiwania (5) a stanem gotowo£ci (1).
     

Rysunek 29.16 Zmieniaj╣ce siΩ stany w╣tk≤w

     Aby dowiedzieµ siΩ, jak d│ugo w╣tek pozostaje w okre£lonym stanie, nale┐y wybraµ w ustawieniach dziennika format pliku rozdzielanego tabulacjami (TSV) lub przecinkami (CSV), a nastΩpnie zarejestrowaµ w nim warto£ci licznika W╣tek\Stan w╣tku. Po zako±czeniu rejestrowania nale┐y zaimportowaµ ten plik do arkusza kalkulacyjnego Microsoft Excel. Przyk│adowy zapis jest przedstawiony na rysunku 29.17.
     
     

Rysunek 29.17 Przyk│adowy zapis dziennika przegl╣dany w arkuszu Microsoft Excel

     Przegl╣daj╣c otrzymane zapisy mo┐na uzyskaµ informacje o tym, jak d│ugo w╣tek pozostawa│ w okre£lonym stanie. W tym celu nale┐y okre£liµ ilo£µ sekund up│ywaj╣cych pomiΩdzy zmianami jego stanu. Nale┐y jednak pamiΩtaµ o tym, ┐e w dzienniku mog╣ nie pojawiµ siΩ wszystkie zmiany stan≤w û jest tak, poniewa┐ pr≤bkowanie omija pewne dane.
     Dodatkowo, licznik W╣tek\Stan oczekiwania w╣tku oraz narzΩdzie Perfmon4.exe znajduj╣ce siΩ na dysku CD do│╣czonym do angielskojΩzycznej publikacji Microsoft Windows 2000 Professional Resource Kit udostΩpniaj╣ informacje o tym, dlaczego w╣tek znajduje siΩ w stanie oczekiwania.
     Warto£µ raportowana przez licznik Pow≤d oczekiwania w╣tku jest kodem. Opisy mo┐liwych warto£ci tego licznika znajduj╣ siΩ w Pomocy licznik≤w wydajno£ci, zamieszczonej na dysku CD do│╣czonym do angielskojΩzycznej publikacji Microsoft Windows 2000 Professional Resource Kit.

Badanie i dostosowywanie priorytet≤w w╣tk≤w

     Badanie prze│╣czania kontekstu w╣tku oraz jego stan≤w pozwala zgromadziµ informacje o tym, kiedy w╣tki blokowane przez w╣skie gard│o s╣ uruchamiane przez system operacyjny, oraz kiedy s╣ one przed uruchomieniem przetrzymywane w kolejce procesora. Mimo ┐e system operacyjny zosta│ zaprojektowany tak, aby automatycznie optymalizowa│ wykonywanie w╣tk≤w, to u┐ytkownik mo┐e w pewnym stopniu modyfikowaµ to zachowanie w sytuacjach, gdy systemowe planowanie nie jest wystarczaj╣ce. Ten paragraf opisuje w jaki spos≤b mo┐na okre£liµ priorytet w╣tku oraz jak mo┐na go dostosowaµ w celu zredukowania efektu w╣skiego gard│a i umo┐liwienia dzia│ania zablokowanym w╣tkom.
Uwaga Aby zagwarantowaµ optymaln╣ wydajno£µ system≤w produkcyjnych, firma Microsoft zaleca, aby najpierw dostosowywaµ priorytety w╣tk≤w w £rodowisku testowym. Ponadto zmiany te powinny byµ wprowadzane jedynie w≤wczas, gdy posiada siΩ dog│Ωbne zrozumienie ich dzia│ania i wp│ywu na inne procesy i system operacyjny.

Klasa priorytet≤w a priorytet

     W zwi╣zku ze strategi╣ wielozadaniowo£ci wbudowan╣ w system Windows 2000, uruchamianie w╣tk≤w i proces≤w jest planowane na podstawie przypisanych do nich priorytet≤w. Priorytet w╣tku okre£la kolejno£µ, w jakiej otrzymuje on przydzia│y czasu procesora.
     Priorytet w╣tku jest okre£lany na podstawie klasy priorytet≤w jego procesu macierzystego. Istniej╣ cztery klasy priorytet≤w:
     Bezczynny. Klasy tej u┐ywaj╣ zazwyczaj wygaszacze ekranu i inne procesy, kt≤re okresowo aktualizuj╣ obraz wy£wietlany na ekranie.
     Normalny. Jest to domy£lna klasa priorytet≤w dla procesu.
     Wysoki. Procesy posiadaj╣ce priorytet Wysoki otrzymuj╣ wiΩkszo£µ czasu procesora.
     Czasu rzeczywistego. W klasie tej dzia│a wiΩkszo£µ proces≤w systemowych w trybie uprzywilejowanym, na przyk│ad procesy zwi╣zane z obs│ug╣ myszy i klawiatury oraz innych urz╣dze± systemowych.
     Ka┐da z klas priorytet≤w procesu wyznacza zakres warto£ci priorytet≤w (od 1 do 31, gdzie 1 jest priorytetem najni┐szym, a 31 najwy┐szym), spo£r≤d kt≤rego wybierane s╣ warto£ci priorytet≤w dla w╣tk≤w tego procesu. Priorytet 0 jest zarezerwowany na potrzeby systemu. Je┐eli proces posiada klasΩ priorytetu Czasu rzeczywistego (priorytety od 16 do 31), to priorytety jego w╣tk≤w nie mog╣ zmieniaµ siΩ w czasie jego dzia│ania. Je┐eli w systemie dzia│a chocia┐ jeden w╣tek o priorytecie 31, to inne w╣tki nie mog╣ dzia│aµ.
     W╣tki dzia│aj╣ce w pozosta│ych klasach priorytet≤w s╣ zmienne, co oznacza, ┐e ich priorytety mog╣ siΩ zmieniaµ w czasie ich dzia│ania. W przypadku w╣tk≤w z klasy priorytetu Normalny lub Wysoki (priorytety od 1 do 15), priorytety mog╣ byµ zmieniane o nie wiΩcej ni┐ 2, jednak nie mog╣ spa£µ poni┐ej oryginalnego, zdefiniowanego programowo priorytetu bazowego. Je┐eli priorytet bazowy zostanie zmieniony w celu optymalizacji harmonogramu, to jego wynikowa warto£µ jest nazywana dynamicznym priorytetem w╣tku.
     Tabela 29.4 zawiera powi╣zanie ka┐dej z klas priorytet≤w proces≤w z wzglΩdnymi priorytetami w╣tk≤w, w kolejno£ci od najwy┐szych priorytet≤w do najni┐szych. Nale┐y zauwa┐yµ, ┐e najwy┐sz╣ klas╣ priorytet≤w jest klasa Czasu rzeczywistego, a najni┐sz╣ û klasa Bezczynny.

Tabela 29.4 Klasy priorytet≤w proces≤w i wzglΩdne priorytety w╣tk≤w

Priorytety w╣tk≤wKlasy priorytet≤w proces≤w Czasu rzeczywistegoWysokiNormalnyBezczynny

Czas krytyczny 31 15 15 15
Najwy┐szy 26 15 10 6
Powy┐ej normalnego 25 14 9 5
Normalny 24 13 8 4
Poni┐ej normalnego 23 12 7 3
Najni┐szy 22 11 6 2
Bezczynny 16 1 1 1


Harmonogram w╣tk≤w      Funkcje planowania w systemie operacyjnym wyszukuj╣ w╣tek o najwy┐szym priorytecie, kt≤ry znajduje siΩ w stanie gotowo£ci, a nastΩpnie przydzielaj╣ mu kwant czasu, w kt≤rym mo┐e dzia│aµ bez przerywania. Kwant czasu jest maksymaln╣ ilo£ci╣ czasu, w kt≤rym w╣tek mo┐e dzia│aµ, zanim system zacznie szukaµ innych w╣tk≤w o tym samym priorytecie. Je┐eli w╣tek o wy┐szym priorytecie osi╣gnie gotowo£µ podczas trwania kwantu czasu, to jest on uruchamiany, a w╣tek o ni┐szym priorytecie jest przerywany. W przeciwnym przypadku w╣tki o tym samym priorytecie dzia│aj╣ kolejno, a system operacyjny prze│╣cza siΩ pomiΩdzy nimi, pozwalaj╣c im dzia│aµ przez kolejne kwanty czasu.
     System Windows 2000 Professional zawsze uruchamia w╣tek o najwy┐szym priorytecie. W system ten s╣ wbudowane jednak pewne strategie optymalizacyjne, pozwalaj╣ce na unikanie sytuacji, w kt≤rych domy£lne metody planowania powodowa│yby powstawanie problem≤w. Strategie te s╣ opisane w kolejnych paragrafach.
Planowanie procesu pierwszoplanowego
     System uruchamia proces pierwszoplanowy z najwy┐szym priorytetem, co oznacza, ┐e otrzymuje on wiΩcej czasu procesora, ni┐ procesy dzia│aj╣ce w tle. Dodatkowo funkcje tworz╣ce harmonogram w╣tk≤w gwarantuj╣, ┐e przedzia│y czasowe przydzielane procesowi pierwszoplanowemu s╣ d│u┐sze ni┐ przydzielane procesom dzia│aj╣cym w tle. W rezultacie proces pierwszoplanowy charakteryzuje siΩ znacznie kr≤tszym czasem odpowiedzi ni┐ inne procesy. Jest tak, poniewa┐ proces ten jest uruchamiany czΩ£ciej i dzia│a d│u┐ej przed przekazaniem sterowania innym procesom. Domy£lnie system Windows 2000 Professional definiuje kr≤tkie, zmienne przedzia│y czasowe dla wszystkich aplikacji i nadaje aplikacji pierwszoplanowej wy┐szy priorytet. System Windows 2000 Server przydziela z kolei d│u┐sze przedzia│y czasowe o ustalonych rozmiarach, nie zmieniaj╣c przy tym priorytetu aplikacji pierwszoplanowych. Umo┐liwia to efektywniejsze wykonywanie us│ug dzia│aj╣cych w tle. Aby zaobserwowaµ dzia│anie opisywanej funkcji, nale┐y monitorowaµ czas procesora przydzielony procesowi, a nastΩpnie przenie£µ jego okno na sp≤d. Warto£µ czasu przydzielonego temu procesowi powinna natychmiast opa£µ. NastΩpnie nale┐y przenie£µ okno tego procesu na wierzch i zaobserwowaµ, ┐e przydzielona mu ilo£µ czasu siΩ zwiΩkszy│a. Efekt ten zosta│ zilustrowany na rysunku 29.19.
Automatyczne zwiΩkszanie priorytetu
     System operacyjny automatycznie zwiΩksza priorytet w╣tku do momentu, gdy bΩdzie on wystarczaj╣cy, aby proces ten kontynuowa│ swoje dzia│anie i zwolni│ u┐ywane zasoby. Po podniesieniu dynamicznego priorytetu w╣tku funkcje planowania zmniejszaj╣ ten priorytet o jeden poziom po zako±czeniu przedzia│u czasowego (kwantu), w kt≤rym w╣tek ten dzia│a│ û do momentu osi╣gniΩcia przez priorytet warto£ci priorytetu bazowego.

Okre£lanie i dostrajanie priorytet≤w

     Je┐eli wykorzystanie procesora w systemie jest wysokie, to zazwyczaj najlepszym rozwi╣zaniem jest zwiΩkszenie jego mocy obliczeniowej przez wymianΩ na szybszy lub dodanie drugiego procesora w celu utworzenia systemu wieloprocesorowego. Jednak┐e, je┐eli oka┐e siΩ, ┐e w╣tek ci╣gle nie jest w stanie uzyskaµ dostΩpu do czasu procesora, to mo┐na tymczasowo dostosowaµ jego priorytet. Zmiana priorytet≤w w╣tk≤w nie jest zalecana jako rozwi╣zanie d│ugoterminowe, jednak mo┐e stanowiµ u┐yteczn╣ ilustracjΩ wp│ywu priorytetu w╣tku na jego aktywno£µ. Mimo ┐e ten paragraf wyja£nia, w jaki spos≤b mo┐na zwiΩkszyµ priorytet w╣tku, aby umo┐liwiµ dzia│anie procesowi, to mo┐liwe jest tak┐e zmniejszenie priorytetu û np. tak, aby jaki£ proces dzia│a│ w tle, jedynie w≤wczas, gdy inne procesy nie s╣ aktywne.
     System Windows 2000 oraz pakiet Windows 2000 Support Tools zawieraj╣ r≤┐ne narzΩdzia umo┐liwiaj╣ce monitorowanie priorytet≤w bazowych proces≤w i dynamicznych priorytet≤w w╣tk≤w. Do narzΩdzi tych zaliczaj╣ siΩ:
Ostrze┐enie Zmienianie priorytet≤w proces≤w mo┐e destabilizowaµ system. ZwiΩkszenie priorytetu procesu mo┐e uniemo┐liwiµ dzia│anie innym, │╣cznie z us│ugami systemowymi. Z kolei zmniejszenie priorytetu procesu mo┐e nie tylko zmusiµ go do dzia│ania z mniejsz╣ czΩsto£ci╣, ale nawet trwale go zablokowaµ. Dodatkowo zmniejszenie priorytetu procesu niekoniecznie musi zredukowaµ ilo£µ otrzymywanego przez niego czasu procesora û dzieje siΩ tak jedynie w przypadku, gdy przestanie on byµ w╣tkiem o najwy┐szym priorytecie.

Monitor systemu

     Monitor systemu umo┐liwia obserwowanie i zapisywanie û ale nie zmienianie û bazowych i dynamicznych priorytet≤w w╣tk≤w i proces≤w. Monitor systemu udostΩpnia liczniki priorytet≤w w dw≤ch obiektach: Proces oraz W╣tek.      Rysunek 29.18 przedstawia wykres priorytet≤w bazowych kilku proces≤w. Proces bezczynny (bia│a linia na dole wykresu) dzia│a z priorytetem Bezczynny (0), dziΩki czemu nigdy nie przerywa dzia│ania innych proces≤w.
     
     

Rysunek 29.18 Procesy i ich priorytety bazowe

     Na rysunku 19.19 przedstawiono dynamiczny priorytet pojedynczego w╣tku programu Paint (Mspaint.exe), zmieniaj╣cy siΩ w odpowiedzi na czynno£ci wykonywane przez u┐ytkownika. Priorytetem bazowym tego w╣tku jest 8 (Pierwszoplanowy Normalny). Podczas u┐ywania tego programu na pierwszym planie jego dynamiczny priorytet wynosi 12, ale opada do 8, gdy czas procesora jest przydzielany innym procesom.
     

Rysunek 29.19 Priorytety bazowy i aktualne

Mened┐er zada±

     Mened┐er zada± wy£wietla i umo┐liwia zmienianie priorytetu bazowego procesu, jednak┐e nie monitoruje jego w╣tk≤w. Priorytety bazowe zmieniane za pomoc╣ Mened┐era zada± s╣ wa┐ne jedynie na czas dzia│ania procesu. WiΩcej informacji na ten temat mo┐na znaleƒµ w Pomocy Mened┐era zada± oraz w rozdziale äOm≤wienie monitorowania wydajno£ciö.
Uwaga Aby zmienianie priorytet≤w by│o mo┐liwe, konto aktualnie zalogowanego u┐ytkownika musi posiadaµ odpowiednie uprawnienia. W systemie Windows 2000 Professional, uprawnienia takie posiadaj╣ domy£lnie jedynie u┐ytkownicy nale┐╣cy do grupy U┐ytkownicy zaawansowani.


Aby zmieniµ priorytet bazowy procesu, nale┐y:
  1. W Mened┐erze zada± klikn╣µ zak│adkΩ Procesy.
  2. Klikn╣µ prawym przyciskiem myszy nazwΩ procesu.
  3. Z menu podrΩcznego wybraµ polecenie Ustaw priorytet, a nastΩpnie wybraµ nowy priorytet bazowy.

Ostrze┐enie Je┐eli kilka proces≤w dzia│a z priorytetem Wysoki, mog╣ pojawiµ siΩ problemy. Nale┐y unikaµ uruchamiania jednocze£nie kilku proces≤w na tym poziomie.

     Zmiana priorytetu staje siΩ wa┐na przy nastΩpnej aktualizacji Mened┐era zada± û ponowne uruchomienie procesu nie jest konieczne.

Process Viewer

     Process Viewer (Pviewer.exe) jest narzΩdziem wchodz╣cym w sk│ad pakietu Support Tools, znajduj╣cego siΩ na dysku CD systemu operacyjnego Windows 2000. Umo┐liwia ono monitorowanie priorytet≤w proces≤w i w╣tk≤w oraz zmienianie klasy priorytet≤w bazowych dla procesu. Instrukcje dotycz╣ce instalowania i u┐ywania narzΩdzi Support Tools znajduj╣ siΩ w pliku Sreadme.doc, kt≤ry mo┐na znaleƒµ w katalogu Support\Tools na dysku CD systemu operacyjnego Windows 2000.

Polecenie Start

     Uruchamiaj╣c procesy z poziomu wiersza polece± za pomoc╣ polecenia start mo┐na okre£laµ dla nich priorytety bazowe. Aby zapoznaµ siΩ ze wszystkimi opcjami tego polecenia, nale┐y w wierszu polece± wpisaµ start /?.
     KlasΩ priorytet≤w dla procesu mo┐na zmieniµ na Czas rzeczywisty, u┐ywaj╣c polecenia start /realtime. Nale┐y pamiΩtaµ o tym, ┐e zmiana priorytetu z /normal na /high lub /realtime mo┐e znacznie obni┐yµ wydajno£µ innych proces≤w.


Ostrze┐enie Ustalenie priorytetu Czasu rzeczywistego dla aplikacji korzystaj╣cej intensywnie z procesora mo┐e spowodowaµ, ┐e komputer przestanie odpowiadaµ.

Konfiguracja systemu Windows 2000 a priorytety proces≤w

     System Windows 2000 Professional jest domy£lnie skonfigurowany tak, aby przydziela│ aplikacjom kr≤tkie przedzia│y (kwanty) czasu o zmiennej d│ugo£ci, oraz aby zwiΩksza│ priorytet aplikacji pierwszoplanowych. W przeciwie±stwie do niego, system Windows 2000 Server jest skonfigurowany tak, aby przypisywa│ d│ugie kwanty czasu o sta│ej d│ugo£ci, oraz aby nie zmienia│ priorytet≤w aplikacji pierwszoplanowych. Zachowanie takie zwiΩksza wydajno£µ us│ug dzia│aj╣cych w tle. Mo┐liwe jest symulowanie jednego typu systemu operacyjnego, gdy w komputerze zainstalowany jest system operacyjny drugiego typu û to znaczy symulowanie zachowania systemu Windows 2000 Server w zainstalowanym systemie Windows 2000 Professional i vice versa. Rysunek 29.20 przedstawia okno dialogowe umo┐liwiaj╣ce konfigurowanie odpowiedzi aplikacji w systemie Windows 2000 Professional.

Aby skorzystaµ z okna dialogowego Opcje wydajno£ci, nale┐y:
  1. W Panelu sterownia dwukrotnie klikn╣µ ikonΩ System.
  2. Wybraµ zak│adkΩ Zaawansowane, a nastΩpnie klikn╣µ Opcje wydajno£ci.
     

Rysunek 29.20 Okno dialogowe Opcje wydajno£ci we w│a£ciwo£ciach systemu

     Rezultaty zmian w Opcjach wydajno£ci s╣ najbardziej widoczne w warto£ciach priorytet≤w w╣tk≤w. Zmiany w rodzaju kwant≤w czasu i ich d│ugo£ci s╣ tak nieznaczne, ┐e najczΩ£ciej u┐ytkownik nie jest w stanie ich zauwa┐yµ.

Testowanie zmian priorytet≤w

     W poprzednich paragrafach opisane zosta│y metody zmieniania priorytet≤w w╣tk≤w, umo┐liwiaj╣ce efektywniejsze ich dzia│anie w warunkach wystΩpowania w╣skiego gard│a. Niestety, je┐eli wydajno£µ procesora jest ju┐ maksymalnie wykorzystana, to zwiΩkszanie priorytet≤w zablokowanych w╣tk≤w nie musi wyeliminowaµ lub zmniejszyµ efektu w╣skiego gard│a zwi╣zanego z procesorem. W takiej sytuacji najlepszym rozwi╣zaniem jest wymiana procesora na wydajniejszy.
     Rysunek 29.21 przedstawia w╣tki o r≤┐nych priorytetach wsp≤│zawodnicz╣ce o czas procesora. Przyk│ad ten demonstruje zmieniaj╣cy siΩ podzia│ czasu procesora miΩdzy procesy o r≤┐nych priorytetach w sytuacji, gdy zwiΩksza siΩ zapotrzebowanie na czas procesora. Przyk│ad ten zosta│ przygotowany za pomoc╣ narzΩdzia CpuStress.
     

Rysunek 29.21 Przydzia│ czasu procesora na podstawie priorytet≤w w╣tk≤w

     Powy┐szy wykres przedstawia dwa w╣tki tego samego procesu dzia│aj╣ce w komputerze jednoprocesorowym. Nale┐y zwr≤ciµ uwagΩ na warto£ci czasu procesora dla wyst╣pienia _Total oraz dla w╣tk≤w 1 i 2.
     Rysunek 29.22 przedstawia dwa w╣tki tego samego procesu dzia│aj╣ce w komputerze jednoprocesorowym. Rysunki 29.23, 29.24 i 29.25 zawieraj╣ szczeg≤│owe informacje na temat zmian w wykorzystaniu procesora przez w╣tki narzΩdzia CpuStress w zwi╣zku ze zmianami priorytet≤w tych w╣tk≤w.
     Na rysunku 29.22 widaµ, ┐e dwa w╣tki narzΩdzia CpuStress zosta│y uruchomione z tym samym poziomem aktywno£ci i dzia│aj╣ z tym samym priorytetem û Normalnym.
     

Rysunek 29.22 Por≤wnanie dzia│ania dw≤ch w╣tk≤w o priorytecie Normalnym

     Po zwiΩkszeniu priorytetu w╣tku 1 do poziomu Powy┐ej normalnego i podniesieniu poziomu jego aktywno£ci do £redniego mo┐na zauwa┐yµ niewielki spadek wykorzystania czasu procesora przez w╣tek 2. Przedstawiono to na rysunku 29.23.
     

Rysunek 29.23 Por≤wnanie dzia│ania w╣tk≤w o priorytetach Normalny i Powy┐ej normalnego

     Przywr≤cenie priorytet≤w obydwu w╣tk≤w do poziomu Normalnego i zwiΩkszenie ich poziom≤w aktywno£ci powoduje, ┐e ka┐dy z nich zaczyna korzystaµ z du┐ej czΩ£ci czasu procesora. Jak pokazano na rysunku 29.24, ca│kowite wykorzystanie procesora jest sta│e i ekstremalnie wysokie.
     

Rysunek 29.24 Por≤wnanie dzia│ania dw≤ch w╣tk≤w o priorytecie Normalnym i podobnym poziomie aktywno£ci

     Na koniec, zwiΩkszenie priorytetu w╣tku 1 do poziomu Powy┐ej normalnego, przy zachowaniu podwy┐szonego poziomu aktywno£ci, powoduje przydzielenie znacznie wiΩkszej ilo£ci czasu procesora w╣tkowi o wy┐szym priorytecie i dramatyczny spadek przydzia│u tego czasu dla w╣tku 2. Sytuacja ta zosta│a przedstawiona na rysunku 29.25.
     

Rysunek 29.25 Por≤wnanie dzia│ania w╣tk≤w o r≤┐nych priorytetach i podobnym poziomie aktywno£ci

     Powy┐sze rezultaty pokazuj╣, ┐e gdy procesor nie jest ca│kowicie wykorzystany, zwiΩkszenie priorytetu jednego z w╣tk≤w prawie nie ma wp│ywu na czas procesora przydzielony inny w╣tkom. Jednak┐e, je┐eli procesor jest maksymalnie obci╣┐ony, to zwiΩkszenie priorytetu jednego z w╣tk≤w nawet o jeden poziom powoduje, ┐e w╣tek ten bΩdzie otrzymywa│ wiΩkszo£µ czasu procesora.
     W rzeczywisto£ci, gdy ca│y czas procesora jest wykorzystany, to w╣tek 2 nie m≤g│by w og≤le dzia│aµ. Jego funkcjonowanie jest mo┐liwe tylko dziΩki zastosowanej w systemie Windows technice automatycznego zwiΩkszania priorytetu, umo┐liwiaj╣cej przydzielenie czasu procesora w╣tkom o ni┐szych priorytetach, kt≤re znajduj╣ siΩ w stanie gotowo£ci, ale nie mog│yby zostaµ w inny spos≤b uruchomione. Jest to szczeg≤lnie u┐yteczne w≤wczas, gdy w╣tek o ni┐szym priorytecie oczekuje na zako±czenie operacji wej£cia/wyj£cia.

Eliminowanie w╣skiego gard│a zwi╣zanego z procesorem

     Je┐eli stwierdzone zostanie wystΩpowanie w╣skiego gard│a zwi╣zanego z procesorem, to wykonanie ni┐ej opisanych czynno£ci mo┐e pom≤c w skr≤ceniu kolejki procesora i zmniejszeniu jego obci╣┐enia. Po ka┐dej zmianie nale┐y powt≤rzyµ monitorowanie wykorzystania i d│ugo£ci kolejki procesora w celu okre£lenia wp│ywu tej zmiany na poziom wykorzystania zasob≤w i funkcjonowanie ca│ego systemu.

Dodatkowe zasoby