WYDAJNE SYSTEMY KOMPUTEROWE

89.10

Na stanie

Wydajne systemy komputerowe. Przewodnik dla administratorów systemów lokalnych i w chmurze

Spis treści

Wstęp (19)

Podziękowania (27)

O autorze (31)

Rozdział 1. Wprowadzenie (33)

  • 1.1. Wydajność systemów (33)
  • 1.2. Role (34)
  • 1.3. Działania (35)
  • 1.4. Perspektywy (36)
  • 1.5. Zapewnienie wydajności to wyzwanie (37)
    • 1.5.1. Wydajność jest subiektywna (37)
    • 1.5.2. Systemy są skomplikowane (37)
    • 1.5.3. Może istnieć wiele problemów związanych z wydajnością (38)
  • 1.6. Opóźnienie (39)
  • 1.7. Monitorowanie dynamiczne (40)
  • 1.8. Przetwarzanie w chmurze (41)
  • 1.9. Studium przypadku (42)
    • 1.9.1. Wolno działające dyski (42)
    • 1.9.2. Zmiana oprogramowania (44)
    • 1.9.3. Co dalej? (46)

Rozdział 2. Metodologia (47)

  • 2.1. Terminologia (48)
  • 2.2. Modele (49)
    • 2.2.1. Wydajność systemu podczas testu (49)
    • 2.2.2. Systemy kolejkowe (50)
  • 2.3. Koncepcje (50)
    • 2.3.1. Opóźnienie (50)
    • 2.3.2. Skala czasu (52)
    • 2.3.3. Kompromisy (52)
    • 2.3.4. Dostrajanie wydajności (54)
    • 2.3.5. Poziomy trafności (55)
    • 2.3.6. Rekomendacje w danym momencie (56)
    • 2.3.7. Obciążenie kontra architektura (56)
    • 2.3.8. Skalowalność (57)
    • 2.3.9. Znane niewiadome (59)
    • 2.3.10. Metryki (59)
    • 2.3.11. Poziom wykorzystania (60)
    • 2.3.12. Nasycenie (62)
    • 2.3.13. Profilowanie (63)
    • 2.3.14. Buforowanie (63)
  • 2.4. Perspektywy (66)
    • 2.4.1. Analiza zasobów (66)
    • 2.4.2. Analiza obciążenia (67)
  • 2.5. Metodologia (68)
    • 2.5.1. Jawna antymetoda (70)
    • 2.5.2. Antymetoda losowej zmiany (70)
    • 2.5.3. Antymetoda obwiniania kogoś innego (71)
    • 2.5.4. Metoda przygotowanej ad hoc listy rzeczy do sprawdzenia (71)
    • 2.5.5. Opis problemu (72)
    • 2.5.6. Metoda naukowa (73)
    • 2.5.7. Cykl diagnostyczny (74)
    • 2.5.8. Metoda narzędzi (75)
    • 2.5.9. Metoda USE (76)
    • 2.5.10. Charakterystyka obciążenia (83)
    • 2.5.11. Analiza drążąca (84)
    • 2.5.12. Analiza opóźnienia (85)
    • 2.5.13. Metoda R (87)
    • 2.5.14. Monitorowanie zdarzeń (87)
    • 2.5.15. Dane statystyczne będące punktem odniesienia (89)
    • 2.5.16. Statyczne dostosowanie wydajności (89)
    • 2.5.17. Dostosowanie bufora (90)
    • 2.5.18. Mikrotesty wydajności (91)
  • 2.6. Modelowanie (91)
    • 2.6.1. Biznes kontra chmura (92)
    • 2.6.2. Identyfikacja wizualna (92)
    • 2.6.3. Prawo skalowalności Amdahla (94)
    • 2.6.4. Prawo skalowalności uniwersalnej (95)
    • 2.6.5. Teoria kolejek (96)
  • 2.7. Planowanie pojemności (100)
    • 2.7.1. Ograniczenia zasobu (100)
    • 2.7.2. Analiza współczynnika (102)
    • 2.7.3. Skalowanie rozwiązań (103)
  • 2.8. Statystyka (103)
    • 2.8.1. Ocena wydajności (104)
    • 2.8.2. Wartość średnia (105)
    • 2.8.3. Odchylenie standardowe, percentyle i mediana (106)
    • 2.8.4. Współczynnik zmienności (107)
    • 2.8.5. Rozkład wielomodalny (107)
    • 2.8.6. Elementy odstające (108)
  • 2.9. Monitorowanie (108)
    • 2.9.1. Wzorce na podstawie czasu (109)
    • 2.9.2. Produkty służące do monitorowania (110)
    • 2.9.3. Podsumowanie od chwili uruchomienia systemu (110)
  • 2.10. Wizualizacja (111)
    • 2.10.1. Wykres liniowy (111)
    • 2.10.2. Wykres punktowy (112)
    • 2.10.3. Mapy cieplne (113)
    • 2.10.4. Wykres warstwowy (114)
    • 2.10.5. Narzędzia wizualizacji (115)
  • 2.11. Ćwiczenia (115)
  • 2.12. Odwołania (116)

Rozdział 3. Systemy operacyjne (117)

  • 3.1. Terminologia (118)
  • 3.2. Środowisko (119)
    • 3.2.1. Jądro (119)
    • 3.2.2. Stosy (122)
    • 3.2.3. Przerwania i wątki przerwań (123)
    • 3.2.4. Poziom priorytetu przerwania (124)
    • 3.2.5. Procesy (125)
    • 3.2.6. Wywołania systemowe (127)
    • 3.2.7. Pamięć wirtualna (129)
    • 3.2.8. Zarządzanie pamięcią (130)
    • 3.2.9. Algorytm szeregowania (130)
    • 3.2.10. Systemy plików (132)
    • 3.2.11. Buforowanie (134)
    • 3.2.12. Sieci (134)
    • 3.2.13. Sterowniki urządzeń (135)
    • 3.2.14. Wieloprocesorowość (136)
    • 3.2.15. Wywłaszczenie (136)
    • 3.2.16. Zarządzanie zasobami (137)
    • 3.2.17. Monitorowanie (137)
  • 3.3. Jądra systemów (138)
    • 3.3.1. UNIX (139)
    • 3.3.2. Systemy Solaris (139)
    • 3.3.3. Systemy Linux (143)
    • 3.3.4. Różnice (146)
  • 3.4. Ćwiczenia (147)
  • 3.5. Odwołania (147)

Rozdział 4. Narzędzia monitorowania (149)

  • 4.1. Rodzaje narzędzi (150)
    • 4.1.1. Liczniki (150)
    • 4.1.2. Monitorowanie (152)
    • 4.1.3. Profilowanie (153)
    • 4.1.4. Monitorowanie (sar) (154)
  • 4.2. Źródła danych statystycznych (155)
    • 4.2.1. Interfejs /proc (156)
    • 4.2.2. Interfejs /sys (161)
    • 4.2.3. Framework kstat (162)
    • 4.2.4. Zliczanie opóźnienia (165)
    • 4.2.5. Zliczanie mikrostanu (166)
    • 4.2.6. Inne narzędzia monitorowania (166)
  • 4.3. DTrace (168)
    • 4.3.1. Monitorowanie statyczne i dynamiczne (170)
    • 4.3.2. Sondy (171)
    • 4.3.3. Dostawcy (172)
    • 4.3.4. Argumenty (172)
    • 4.3.5. Język D (173)
    • 4.3.6. Wbudowane zmienne (173)
    • 4.3.7. Akcje (173)
    • 4.3.8. Typy zmiennych (173)
    • 4.3.9. Jednowierszowe wywołania DTrace (177)
    • 4.3.10. Skrypty (177)
    • 4.3.11. Obciążenie (178)
    • 4.3.12. Dokumentacja i zasoby (179)
  • 4.4. SystemTap (180)
    • 4.4.1. Sondy (181)
    • 4.4.2. Zestawy tapset (181)
    • 4.4.3. Akcje i wbudowane zmienne (182)
    • 4.4.4. Przykłady (182)
    • 4.4.5. Obciążenie (184)
    • 4.4.6. Dokumentacja i zasoby (185)
  • 4.5. perf (185)
  • 4.6. Obserwowanie monitorowania (186)
  • 4.7. Ćwiczenia (187)
  • 4.8. Odwołania (187)

Rozdział 5. Aplikacje (189)

  • 5.1. Podstawy dotyczące aplikacji (190)
    • 5.1.1. Cele (191)
    • 5.1.2. Optymalizacja najczęstszego sposobu użycia aplikacji (192)
    • 5.1.3. Monitorowanie (193)
    • 5.1.4. Notacja „duże O” (193)
  • 5.2. Techniki sprawdzania wydajności aplikacji (194)
    • 5.2.1. Ustalenie wielkości operacji wejścia-wyjścia (194)
    • 5.2.2. Pamięć podręczna (195)
    • 5.2.3. Buforowanie (195)
    • 5.2.4. Technika odpytywania (196)
    • 5.2.5. Współbieżność i równoległość (196)
    • 5.2.6. Nieblokujące operacje wejścia-wyjścia (199)
    • 5.2.7. Powiązanie z procesorem (200)
  • 5.3. Języki programowania (200)
    • 5.3.1. Języki kompilowane (201)
    • 5.3.2. Języki interpretowane (202)
    • 5.3.3. Maszyny wirtualne (203)
    • 5.3.4. Mechanizm usuwania nieużytków (203)
  • 5.4. Metodologia i analiza (204)
    • 5.4.1. Analiza stanu wątku (205)
    • 5.4.2. Profilowanie procesora (208)
    • 5.4.3. Analiza wywołań systemowych (210)
    • 5.4.4. Profilowanie operacji wejścia-wyjścia (218)
    • 5.4.5. Charakterystyka obciążenia (219)
    • 5.4.6. Metoda USE (219)
    • 5.4.7. Analiza drążąca (220)
    • 5.4.8. Analiza blokad (221)
    • 5.4.9. Statyczne dostosowanie wydajności (223)
  • 5.5. Ćwiczenia (224)
  • 5.6. Odwołania (226)

Rozdział 6. Procesory (227)

  • 6.1. Terminologia (228)
  • 6.2. Modele (229)
    • 6.2.1. Architektura procesora (229)
    • 6.2.2. Pamięci podręczne w procesorze (230)
    • 6.2.3. Kolejki działania w procesorze (230)
  • 6.3. Koncepcje (231)
    • 6.3.1. Częstotliwość taktowania zegara (231)
    • 6.3.2. Instrukcje (232)
    • 6.3.3. Potok instrukcji (232)
    • 6.3.4. Wielkość instrukcji (232)
    • 6.3.5. Wartości CPI, IPC (233)
    • 6.3.6. Poziom wykorzystania (233)
    • 6.3.7. Czasy użytkownika i jądra (234)
    • 6.3.8. Poziom nasycenia (234)
    • 6.3.9. Wywłaszczenie (235)
    • 6.3.10. Odwrócenie priorytetów (235)
    • 6.3.11. Wieloprocesowość, wielowątkowość (236)
    • 6.3.12. Długość słowa (237)
    • 6.3.13. Optymalizacja kodu wynikowego (238)
  • 6.4. Architektura (238)
    • 6.4.1. Sprzęt (238)
    • 6.4.2. Oprogramowanie (246)
  • 6.5. Metodologia (253)
    • 6.5.1. Metoda narzędzi (254)
    • 6.5.2. Metoda USE (255)
    • 6.5.3. Charakterystyka obciążenia (256)
    • 6.5.4. Profilowanie (257)
    • 6.5.5. Analiza cykli (259)
    • 6.5.6. Monitorowanie wydajności (260)
    • 6.5.7. Statyczne dostosowanie wydajności (260)
    • 6.5.8. Dostrojenie priorytetu (261)
    • 6.5.9. Kontrola zasobów (262)
    • 6.5.10. Powiązanie z procesorem (262)
    • 6.5.11. Mikrotesty wydajności (262)
    • 6.5.12. Skalowanie (263)
  • 6.6. Analiza (264)
    • 6.6.1. uptime (265)
    • 6.6.2. vmstat (267)
    • 6.6.3. mpstat (268)
    • 6.6.4. sar (270)
    • 6.6.5. ps (271)
    • 6.6.6. top (272)
    • 6.6.7. prstat (273)
    • 6.6.8. pidstat (275)
    • 6.6.9. time, ptime (276)
    • 6.6.10. DTrace (277)
    • 6.6.11. SystemTap (284)
    • 6.6.12. perf (284)
    • 6.6.13. cpustat (292)
    • 6.6.14. Inne narzędzia (293)
    • 6.6.15. Wizualizacja (294)
  • 6.7. Eksperymenty (297)
    • 6.7.1. Ad hoc (297)
    • 6.7.2. sysbench (298)
  • 6.8. Dostrajanie (298)
    • 6.8.1. Opcje kompilatora (299)
    • 6.8.2. Klasy i priorytety szeregowania (299)
    • 6.8.3. Opcje algorytmu szeregowania (300)
    • 6.8.4. Dołączanie procesu (302)
    • 6.8.5. Grupa procesorów na wyłączność (302)
    • 6.8.6. Kontrola zasobów (303)
    • 6.8.7. Opcje procesora (dostrajanie BIOS-u) (303)
  • 6.9. Ćwiczenia (303)
  • 6.10. Odwołania (305)

Rozdział 7. Pamięć (307)

  • 7.1. Terminologia (308)
  • 7.2. Koncepcje (309)
    • 7.2.1. Pamięć wirtualna (309)
    • 7.2.2. Stronicowanie (310)
    • 7.2.3. Żądanie stronicowania (311)
    • 7.2.4. Przepełnienie (313)
    • 7.2.5. Wymiana (313)
    • 7.2.6. Użycie bufora systemu plików (314)
    • 7.2.7. Poziom wykorzystania i nasycenie (314)
    • 7.2.8. Alokatory (315)
    • 7.2.9. Długość słowa (315)
  • 7.3. Architektura (315)
    • 7.3.1. Architektura sprzętowa (315)
    • 7.3.2. Oprogramowanie (321)
    • 7.3.3. Przestrzeń adresowa procesu (328)
  • 7.4. Metodologia (332)
    • 7.4.1. Metoda narzędzi (333)
    • 7.4.2. Metoda USE (334)
    • 7.4.3. Charakterystyka użycia pamięci (335)
    • 7.4.4. Analiza cykli (337)
    • 7.4.5. Monitorowanie wydajności (337)
    • 7.4.6. Wykrywanie wycieków pamięci (337)
    • 7.4.7. Statyczne dostrojenie wydajności (338)
    • 7.4.8. Kontrola zasobów (339)
    • 7.4.9. Mikrotesty wydajności (339)
  • 7.5. Analiza (339)
    • 7.5.1. vmstat (340)
    • 7.5.2. sar (343)
    • 7.5.3. slabtop (345)
    • 7.5.4. ::kmastat (347)
    • 7.5.5. ps (348)
    • 7.5.6. top (350)
    • 7.5.7. prstat (350)
    • 7.5.8. pmap (351)
    • 7.5.9. DTrace (353)
    • 7.5.10. SystemTap (357)
    • 7.5.11. Inne narzędzia (358)
  • 7.6. Dostrajanie (360)
    • 7.6.1. Parametry możliwe do dostrojenia (360)
    • 7.6.2. Różnej wielkości strony (363)
    • 7.6.3. Alokatory (364)
    • 7.6.4. Kontrola zasobów (364)
  • 7.7. Ćwiczenia (365)
  • 7.8. Odwołania (366)

Rozdział 8. Systemy plików (369)

  • 8.1. Terminologia (370)
  • 8.2. Modele (371)
    • 8.2.1. Interfejsy systemów plików (371)
    • 8.2.2. Bufor systemu plików (371)
    • 8.2.3. Bufory poziomu drugiego (372)
  • 8.3. Koncepcje (372)
    • 8.3.1. Opóźnienie systemu plików (373)
    • 8.3.2. Buforowanie (373)
    • 8.3.3. Losowe kontra sekwencyjne operacje wejścia-wyjścia (374)
    • 8.3.4. Mechanizm prefetch (375)
    • 8.3.5. Odczyt z wyprzedzeniem (376)
    • 8.3.6. Buforowanie operacji zapisu (376)
    • 8.3.7. Synchroniczne operacje zapisu (377)
    • 8.3.8. Niezmodyfikowane i bezpośrednie operacje wejścia-wyjścia (378)
    • 8.3.9. Nieblokujące operacje wejścia-wyjścia (378)
    • 8.3.10. Mapowanie plików w pamięci (379)
    • 8.3.11. Metadane (379)
    • 8.3.12. Logiczne kontra fizyczne operacje wejścia-wyjścia (380)
    • 8.3.13. Operacje nie są jednakowe (383)
    • 8.3.14. Specjalne systemy plików (383)
    • 8.3.15. Znaczniki czasu dotyczące dostępu (383)
    • 8.3.16. Pojemność (384)
  • 8.4. Architektura (384)
    • 8.4.1. Stos operacji wejścia-wyjścia systemu plików (384)
    • 8.4.2. VFS (384)
    • 8.4.3. Bufory systemu plików (386)
    • 8.4.4. Funkcje systemu plików (390)
    • 8.4.5. Rodzaje systemów plików (392)
    • 8.4.6. Woluminy i pule (399)
  • 8.5. Metodologia (401)
    • 8.5.1. Analiza dysku (401)
    • 8.5.2. Analiza opóźnienia (402)
    • 8.5.3. Charakterystyka obciążenia (404)
    • 8.5.4. Monitorowanie wydajności (406)
    • 8.5.5. Monitorowanie zdarzeń (407)
    • 8.5.6. Statyczne dostosowanie wydajności (408)
    • 8.5.7. Dostrajanie bufora (408)
    • 8.5.8. Separacja obciążenia (409)
    • 8.5.9. Systemy plików w pamięci (409)
    • 8.5.10. Mikrotesty wydajności (409)
  • 8.6. Analiza (411)
    • 8.6.1. vfsstat (412)
    • 8.6.2. fsstat (413)
    • 8.6.3. strace, truss (413)
    • 8.6.4. DTrace (414)
    • 8.6.5. SystemTap (425)
    • 8.6.6. LatencyTOP (425)
    • 8.6.7. free (426)
    • 8.6.8. top (426)
    • 8.6.9. vmstat (426)
    • 8.6.10. sar (427)
    • 8.6.11. slabtop (428)
    • 8.6.12. mdb ::kmastat (429)
    • 8.6.13. fcachestat (429)
    • 8.6.14. /proc/meminfo (430)
    • 8.6.15. mdb ::memstat (430)
    • 8.6.16. kstat (431)
    • 8.6.17. Inne narzędzia (432)
    • 8.6.18. Wizualizacje (433)
  • 8.7. Eksperymenty (434)
    • 8.7.1. Ad hoc (435)
    • 8.7.2. Narzędzia mikrotestów wydajności (435)
    • 8.7.3. Opróżnienie bufora systemu plików (437)
  • 8.8. Dostrajanie (438)
    • 8.8.1. Wywołania aplikacji (438)
    • 8.8.2. ext3 (439)
    • 8.8.3. ZFS (440)
  • 8.9. Ćwiczenia (442)
  • 8.10. Odwołania (443)

Rozdział 9. Dyski (445)

  • 9.1. Terminologia (446)
  • 9.2. Modele (447)
    • 9.2.1. Prosty dysk (447)
    • 9.2.2. Pamięć podręczna dysku (447)
    • 9.2.3. Kontroler (448)
  • 9.3. Koncepcje (449)
    • 9.3.1. Pomiar czasu (449)
    • 9.3.2. Skale czasu (450)
    • 9.3.3. Buforowanie (452)
    • 9.3.4. Losowe kontra sekwencyjne operacje wejścia-wyjścia (452)
    • 9.3.5. Współczynnik odczyt/zapis (453)
    • 9.3.6. Wielkość operacji wejścia-wyjścia (454)
    • 9.3.7. Wartości IOPS nie są równe (454)
    • 9.3.8. Polecenie dyskowe niedotyczące transferu danych (454)
    • 9.3.9. Poziom wykorzystania (455)
    • 9.3.10. Nasycenie (456)
    • 9.3.11. Oczekiwanie na zakończenie operacji wejścia-wyjścia (456)
    • 9.3.12. Operacje synchroniczne kontra asynchroniczne (457)
    • 9.3.13. Dyskowe kontra aplikacji operacje wejścia-wyjścia (458)
  • 9.4. Architektura (458)
    • 9.4.1. Rodzaje dysków (458)
    • 9.4.2. Interfejsy (465)
    • 9.4.3. Rodzaje pamięci masowej (466)
    • 9.4.4. Stos dyskowych operacji wejścia-wyjścia w systemie operacyjnym (469)
  • 9.5. Metodologia (473)
    • 9.5.1. Metoda narzędzi (473)
    • 9.5.2. Metoda USE (474)
    • 9.5.3. Monitorowanie wydajności (475)
    • 9.5.4. Charakterystyka obciążenia (476)
    • 9.5.5. Analiza opóźnienia (478)
    • 9.5.6. Monitorowanie zdarzeń (479)
    • 9.5.7. Statyczne dopasowanie wydajności (480)
    • 9.5.8. Dostrojenie bufora (481)
    • 9.5.9. Kontrola zasobów (481)
    • 9.5.10. Mikrotesty wydajności (481)
    • 9.5.11. Skalowanie (483)
  • 9.6. Analiza (484)
    • 9.6.1. iostat (484)
    • 9.6.2. sar (493)
    • 9.6.3. pidstat (495)
    • 9.6.4. DTrace (495)
    • 9.6.5. SystemTap (505)
    • 9.6.6. perf (505)
    • 9.6.7. iotop (506)
    • 9.6.8. iosnoop (509)
    • 9.6.9. blktrace (512)
    • 9.6.10. MegaCli (514)
    • 9.6.11. smartctl (515)
    • 9.6.12. Wizualizacje (516)
  • 9.7. Eksperymenty (520)
    • 9.7.1. Ad hoc (520)
    • 9.7.2. Własne generatory obciążenia (520)
    • 9.7.3. Narzędzia mikrotestów wydajności (521)
    • 9.7.4. Przykład losowego odczytu (521)
  • 9.8. Dostrajanie (522)
    • 9.8.1. Modyfikowalne parametry systemu operacyjnego (523)
    • 9.8.2. Modyfikowalne parametry urządzenia dyskowego (525)
    • 9.8.3. Modyfikowalne parametry kontrolera dysku (525)
  • 9.9. Ćwiczenia (525)
  • 9.10. Odwołania (527)

Rozdział 10. Sieć (529)

  • 10.1. Terminologia (530)
  • 10.2. Modele (530)
    • 10.2.1. Interfejs sieciowy (531)
    • 10.2.2. Kontroler (531)
    • 10.2.3. Stos protokołów (532)
  • 10.3. Koncepcje (532)
    • 10.3.1. Sieci i routing (532)
    • 10.3.2. Protokoły (533)
    • 10.3.3. Hermetyzacja (534)
    • 10.3.4. Wielkość pakietu (534)
    • 10.3.5. Opóźnienie (535)
    • 10.3.6. Buforowanie (537)
    • 10.3.7. Dziennik połączeń (537)
    • 10.3.8. Negocjacja interfejsu (538)
    • 10.3.9. Poziom wykorzystania (538)
    • 10.3.10. Połączenia lokalne (539)
  • 10.4. Architektura (539)
    • 10.4.1. Protokoły (539)
    • 10.4.2. Sprzęt (543)
    • 10.4.3. Oprogramowanie (545)
  • 10.5. Metodologia (550)
    • 10.5.1. Metoda narzędzi (550)
    • 10.5.2. Metoda USE (551)
    • 10.5.3. Charakterystyka obciążenia (552)
    • 10.5.4. Analiza opóźnienia (553)
    • 10.5.5. Monitorowanie wydajności (554)
    • 10.5.6. Podsłuchiwanie pakietów (555)
    • 10.5.7. Analiza TCP (556)
    • 10.5.8. Analiza drążąca (557)
    • 10.5.9. Statyczne dostosowanie wydajności (557)
    • 10.5.10. Kontrola zasobów (558)
    • 10.5.11. Mikrotesty wydajności (559)
  • 10.6. Analiza (559)
    • 10.6.1. netstat (560)
    • 10.6.2. sar (566)
    • 10.6.3. ifconfig (568)
    • 10.6.4. ip (569)
    • 10.6.5. nicstat (569)
    • 10.6.6. dladm (570)
    • 10.6.7. ping (571)
    • 10.6.8. traceroute (572)
    • 10.6.9. pathchar (573)
    • 10.6.10. tcpdump (573)
    • 10.6.11. snoop (575)
    • 10.6.12. Wireshark (578)
    • 10.6.13. Dtrace (578)
    • 10.6.14. SystemTap (592)
    • 10.6.15. perf (592)
    • 10.6.16. Inne narzędzia (593)
  • 10.7. Eksperymenty (594)
    • 10.7.1. iperf (594)
  • 10.8. Dostrajanie (595)
    • 10.8.1. Linux (595)
    • 10.8.2. Solaris (598)
    • 10.8.3. Konfiguracja (601)
  • 10.9. Ćwiczenia (602)
  • 10.10. Odwołania (603)

Rozdział 11. Przetwarzanie w chmurze (605)

  • 11.1. Wprowadzenie (606)
    • 11.1.1. Współczynnik cena/wydajność (606)
    • 11.1.2. Skalowalna architektura (607)
    • 11.1.3. Planowanie pojemności (608)
    • 11.1.4. Pamięć masowa (610)
    • 11.1.5. Multitenancy (610)
  • 11.2. Wirtualizacja systemu operacyjnego (611)
    • 11.2.1. Obciążenie (613)
    • 11.2.2. Kontrola zasobów (615)
    • 11.2.3. Monitorowanie (619)
  • 11.3. Wirtualizacja sprzętowa (625)
    • 11.3.1. Obciążenie (627)
    • 11.3.2. Kontrola zasobów (634)
    • 11.3.3. Monitorowanie (637)
  • 11.4. Porównania (644)
  • 11.5. Ćwiczenia (646)
  • 11.6. Odwołania (647)

Rozdział 12. Testy wydajności (649)

  • 12.1. Wprowadzenie (650)
    • 12.1.1. Działania (650)
    • 12.1.2. Efektywne testy wydajności (651)
    • 12.1.3. Grzechy testów wydajności (653)
  • 12.2. Rodzaje testów wydajności (660)
    • 12.2.1. Mikrotesty wydajności (660)
    • 12.2.2. Symulacja (662)
    • 12.2.3. Powtarzalność (663)
    • 12.2.4. Standardy biznesowe (663)
  • 12.3. Metodologia (665)
    • 12.3.1. Pasywne testy wydajności (665)
    • 12.3.2. Aktywne testy wydajności (667)
    • 12.3.3. Profilowanie procesora (669)
    • 12.3.4. Metoda USE (671)
    • 12.3.5. Charakterystyka obciążenia (671)
    • 12.3.6. Własne testy wydajności (671)
    • 12.3.7. Stopniowa zmiana obciążenia (672)
    • 12.3.8. Sprawdzenie poprawności (674)
    • 12.3.9. Analiza statystyczna (674)
  • 12.4. Pytania dotyczące testu wydajności (676)
  • 12.5. Ćwiczenia (678)
  • 12.6. Odwołania (678)

Rozdział 13. Studium przypadku (681)

  • 13.1. Studium przykładu: czerwony wieloryb (681)
    • 13.1.1. Zdefiniowanie problemu (682)
    • 13.1.2. Pomoc techniczna (683)
    • 13.1.3. Rozpoczęcie pracy (684)
    • 13.1.4. Wybierz własną drogę (686)
    • 13.1.5. Metoda USE (688)
    • 13.1.6. Czy to już koniec? (691)
    • 13.1.7. Podejście drugie (691)
    • 13.1.8. Podstawy (693)
    • 13.1.9. Zignorowanie czerwonego wieloryba (694)
    • 13.1.10. Sprawdzenie jądra (694)
    • 13.1.11. Dlaczego? (696)
    • 13.1.12. Epilog (698)
  • 13.2. Komentarze (699)
  • 13.3. Informacje dodatkowe (700)
  • 13.4. Odwołania (700)

Dodatek A Metoda USE dla systemu Linux (701)

  • Zasoby fizyczne (702)
  • Zasoby programowe (705)
  • Odwołania (706)

Dodatek B Metoda USE dla systemu Solaris (707)

  • Zasoby fizyczne (707)
  • Zasoby programowe (710)
  • Odwołania (711)

Dodatek C Polecenie sar (713)

  • Linux (713)
  • Solaris (714)

Dodatek D Polecenie DTrace (715)

  • Dostawca syscall (715)
  • Dostawca proc (718)
  • Dostawca profile (718)
  • Dostawca sched (720)
  • Dostawca fbt (720)
  • Dostawca pid (721)
  • Dostawca io (722)
  • Dostawca sysinfo (722)
  • Dostawca vminfo (723)
  • Dostawca ip (723)
  • Dostawca tcp (723)
  • Dostawca UDP (724)

Dodatek E Od DTrace do SystemTap (725)

  • Funkcjonalność (725)
  • Terminologia (726)
  • Sondy (726)
  • Wbudowane zmienne (727)
  • Funkcje (727)
  • Przykład 1.: Wyświetlenie sond syscall:::entry (728)
  • Przykład 2.: Podsumowanie wielkości zwrotnej wywołania read() (728)
  • Przykład 3.: Zliczanie wywołań systemowych według nazwy procesu (730)
  • Przykład 4.: Zliczanie wywołań systemowych według nazwy wywołania systemowego dla procesu o identyfikatorze 123 (731)
  • Przykład 5.: Zliczanie wywołań systemowych według nazwy wywołania systemowego dla procesu o nazwie httpd (731)
  • Przykład 6.: Monitorowanie wywołania open() wraz z nazwą procesu i ścieżki (732)
  • Przykład 7.: Podsumowanie opóźnienia read() dla procesów mysqld (732)
  • Przykład 8.: Monitorowanie nowych procesów wraz z nazwą procesu i argumentami (733)
  • Przykład 9.: Monitorowanie stosów jądra z częstotliwością 100 Hz (733)
  • Odwołania (733)

Dodatek F Odpowiedzi do wybranych ćwiczeń (735)

  • Rozdział 2. „Metodologia” (735)
  • Rozdział 3. „Systemy operacyjne” (735)
  • Rozdział 6. „Procesory” (735)
  • Rozdział 7. „Pamięć” (736)
  • Rozdział 8. „Systemy plików” (736)
  • Rozdział 9. „Dyski” (737)
  • Rozdział 11. „Przetwarzanie w chmurze” (737)

Dodatek G Wydajność systemów: kto jest kim? (739)

Słowniczek (743)

Bibliografia (749)

Skorowidz (755)

Autor

ISBN

978-83-246-9157-9

Liczba stron

Rok wydania

Wydawca

Opinie

Na razie nie ma opinii o produkcie.

Napisz pierwszą opinię o „WYDAJNE SYSTEMY KOMPUTEROWE”