Optymalizacja systemów komputerowych

Optymalizacja systemów komputerowych
Gian-Paolo D. Musumeci, Mike Loukides

Kategoria: Inżynieria oprogramowania Algorytmy, Inżynieria oprogramowania
Wydawnictwo: READ ME

Ilość stron: 338
ISBN: 83-7243-253-8
Optymalizacja systemów komputerowych

Jest to książka pełna rzetelnych informacji, które trudno znaleźć w jednym miejscu. Podręcznik "Optymalizacja systemów komputerowych" wyjaśnia metody poprawiania efektywności poszczególnych podsystemów, takich jak pamięć, dyski i macierze dysków, komunikacja wejścia/wyjścia (I/O), komunikacja sieciowa i inne. Najogólniej mówiąc, próbuje odpowiedzieć na dwa zasadnicze pytania: jak można uzyskać więcej, nie kupując dodatkowego sprzętu, i kiedy naprawdę potrzebny jest zakup dodatkowych urządzeń (więcej pamięci, szybsze dyski, procesory i karty sieciowe). Ponieważ optymalizacja wymaga dobrze ugruntowanej wiedzy, w książce opisano wiele ważnych mechanizmów funkcjonowania komputerów i systemów operacyjnych. Dzięki tym informacjom możemy eliminować pewne "wąskie gardła" i obserwować, jak niektóre z pozoru niewinne działania mogą wpływać na wydajność systemu. W tej dziedzinie nie ma łatwych rozwiązań, dlatego bez wiedzy o tym, jak programy konkurują ze sobą o zasoby, nie sposób efektywnie zarządzać posiadanymi urządzeniami i tworzyć wydajne konfiguracje. Materiał prezentowany jest na przykładach systemów Linux i Solaris, choć opisywane w niej zasady można z powodzeniem stosować na wszystkich platformach.

Spis treści:

 

  • Wprowadzenie
  • Rozdział 1: Wstęp do optymalizacji wydajności
  • Rozdział 2: Zarządzanie obciążeniem
  • Rozdział 3: Procesory
  • Rozdział 4: Pamięć
  • Rozdział 5: Dyski
  • Rozdział 6: Macierze dyskowe
  • Rozdział 7: Sieci
  • Rozdział 8: Optymalizacja kodu
  • Rozdział 9: Optymalizacja błyskawiczna

    Spis treści: 

  • Wprowadzenie
    • Kto powinien kupić tę książkę?
    • Przedmiot
    • Jak czytać tę książkę
      • Jako opowiadanie
      • Jako poradnik encyklopedyczny
    • Organizacja tekstu
    • Konwencje typograficzne
    • Pytania i komentarze
    • Uwagi osobiste i podziękowania
      • Podziękowania od Mike'a Loukidesa
  • Rozdział 1: Wstęp do optymalizacji wydajności
    • Wstęp do architektury komputerów
      • Poziomy transformacji
      • Model von Neumanna
      • Pamięci podręczne, hierarchia pamięci
      • Korzyści z architektury 64-bitowej
    • Zasady optymalizacji wydajności
      • Zasada 0. Poznaj swoje środowisko
      • Zasada 1. Nic za darmo!
      • Zasada 2. Przepustowość czy opóźnienie
      • Zasada 3. Nie przeciążaj zasobów
      • Zasada 4. Starannie opracowuj testy
    • Optymalizowanie wydajności statycznej
      • Różne inne zmiany
    • Podsumowanie
  • Rozdział 2: Zarządzanie obciążeniem
    • Analiza obciążenia
      • Proste polecenia
      • Ewidencjonowanie procesów
      • Automatyzowanie programu sar
      • Wirtualny Adrian
      • Analiza wzorców ruchu sieciowego
    • Sterowanie obciążeniem
      • Edukacja
      • Parametry maxusers i pt_cnt
      • Ograniczanie możliwości użytkowników
      • Środowiska złożone
    • Miarodajne wyznaczniki wydajności (benchmarki)
      • MIPS-y i megaflopy
      • Benchmarki dla poszczególnych komponentów
      • Komercyjne testy obciążeniowe
      • Benchmarki użytkownika
    • Podsumowanie
  • Rozdział 3: Procesory
    • Architektura mikroprocesora
      • Częstotliwości zegarów
      • Potoki
      • Procesory RISC drugiej generacji
    • Buforowanie
      • Hierarchia pamięci podręcznej
      • Organizacja i działanie pamięci podręcznej
      • Pamięć asocjacyjna
      • Lokalność a hamulce pamięci podręcznej
      • Anomalia wielkości pamięci podręcznej
    • Szeregowanie procesów
      • Model Systemu V i Linuksa
      • Wielowarstwowe klasy szeregowania. Model Solarisa
    • Przetwarzanie wieloprocesorowe
      • Komunikacja z procesorami
      • Wieloprocesorowe systemy operacyjne
      • Wątki
      • Blokowanie
      • Wpływ pamięci podręcznej na wydajność wieloprocesorową
    • Połączenia z urządzeniami peryferyjnymi
      • SBus
      • PCI
      • Zestawienie systemów połączeń z urządzeniami peryferyjnymi
      • Przerwania w systemie Linux
      • Przerwania w systemie Solaris
    • Narzędzia wydajności procesorów
      • Średnie obciążenie
      • Kolejki procesów
      • W rozbiciu na kategorie
      • Systemy wieloprocesorowe
      • Programy top i prstat
      • Statystyki blokad
    • Sterowanie procesorami w Solarisie
      • Narzędzia do monitorowania wydajności łączności z urządzeniami peryferyjnymi
      • Zaawansowane statystyki związane z wydajnością procesorów
    • Podsumowanie
  • Rozdział 4: Pamięć
    • Realizacje pamięci fizycznej
    • Architektura pamięci wirtualnej
      • Strony
      • Segmenty
      • Szacowanie wymagań pamięciowch
      • Układ przestrzeni adresów
      • Lista wolnych stron pamięci
      • Kolorowanie stron
      • Bufor TLB
    • Mechanizmy stronicowania i wymiany
      • Spadek wydajności programów interakcyjnych
      • Przestrzeń wymiany
    • Konsumenci pamięci
      • Buforowanie systemu plików
      • Zapisy do pamięci podręcznej systemu plików: fsflush i bdflush
      • Interakcje między pamięcią podręczną systemu plików a pamięcią fizyczną
      • Interakcje między pamięcią podręczną systemu plików a dyskiem
    • Narzędzia do analizy wydajności pamięci
      • Pomiary wydajności pamięci
      • Badanie wykorzystania pamięci w całym systemie
      • Badanie wykorzystania pamięci procesów
      • Narzędzia systemu Linux
    • Podsumowanie
  • Rozdział 5: Dyski
    • Architektura dysków
      • Wzorce dostępów
      • Odczyt
      • Zapis
      • Określanie wydajności
    • Interfejsy
      • IDE
      • IPI
      • SCSI
      • Fibre Channel
      • IEEE 1394 (FireWire)
      • USB
    • Typowe problemy z wydajnością
      • Wysoka asymetria operacji I/O
      • Interakcja pamięci i dysków
      • Długie czasy obsługi
    • Systemy plików
      • Elementy składowe systemów plików (v-węzły, i-węzły i r-węzły)
      • UFS
      • Rejestrowanie transakcji systemu plików
      • System EXT2
      • System EXT3
      • System plików Reiser (ReiserFS)
      • System JFS
      • Tymczasowy system plików (tmpfs)
      • Veritas VxFS
      • Buforujące systemy plików (CacheFS)
    • Narzędzia do analiz
      • Uaktywnianie pamięci podręcznych dysku
      • Pomiar wydajności dysków
      • Błędy
      • Narzędzie iostat
      • Program sar
      • Śledzenie I/O
    • Podsumowanie
  • Rozdział 6: Macierze dyskowe
    • Terminologia
    • Klasy RAID
      • RAID 0: rozwarstwianie
      • RAID 1: dublowanie
      • RAID 2: macierze z kodami Hamminga
      • RAID 3: rozwarstwianie chronione parzystością
      • RAID 4: rozwarstwianie chronione parzystością na niezależnych dyskach
      • RAID 5: rozproszone rozwarstwianie chronione parzystością
      • RAID 10: dublowane warstwy
    • Sprzętowo czy programowo
      • Programowo
      • Sprzętowo
    • Zestawienie konstrukcji macierzy dyskowych
      • Wybór klasy RAID
    • Znane programowe implementacje RAID
      • Solaris: Solstice DiskSuite
      • Linux: md
    • Recepty RAID
      • Katalogi domowe z dużym natężeniem operacji na atrybutach
      • Katalogi domowe z dużym natężeniem operacji na danych
      • Szybkie przetwarzanie komputerowe
      • Bazy danych
      • Studium przypadku: aplikacje wykonujące duże operacje I/O
    • Podsumowanie
  • Rozdział 7: Sieci
    • Zasady działania sieci
      • Model OSI
    • Nośniki fizyczne
      • UTP
      • Światłowód
    • Interfejsy sieciowe
      • Ethernet
      • FDDI
      • ATM
      • Ethernet czy ATM/FDDI
    • Protokoły sieciowe
      • IP
      • TCP
      • UDP
      • Transport sieciowy za pomocą TCP czy UDP
    • NFS
      • Charakterystyka działania NFS
      • Optymalizowanie klientów
      • Optymalizowanie serwerów
      • NFS a sieci rozległe
    • CIFS via Unix
    • Podsumowanie
  • Rozdział 8: Optymalizacja kodu
    • Dwie ważne metody
      • Algorytmy wyszukiwania łańcuchów
      • Pułapki optymalizacji
    • Techniki analizy kodu
      • Pomiar czasu działania aplikacji (time, timex i ptime)
      • Pomiar czasu sekcji kodu
      • Analiza z wykorzystaniem sond: sondy TNF systemu Solaris
      • Analiza za pomocą profilowania: program gprof
    • Wzorce optymalizacji
      • Arytmetyka
      • Pętle
      • Łańcuchy
    • Interakcja z kompilatorami
      • Typowe optymalizacje: -fast
      • Poziom optymalizacji: -xO
      • Określanie architektury zestawu instrukcji: -xarch
      • Określanie architektury procesora: -xchip
      • Wstawianie funkcji: -xinlining i -xcrossfile
      • Analiza zależności danych: -xdepend
      • Operacje wektorowe: -xvector
      • Domyślna wielkość stałych zmiennopozycyjnych: -xsfpconst
      • Preselekcja danych: -xprefetch
      • Krótkie zestawienie flag kompilatora
      • Sprzężenie zwrotne profilowania
    • Podsumowanie
  • Rozdział 9: Optymalizacja błyskawiczna
    • Pięć najważniejszych wskazówek dotyczących optymalizacji
      • Gdzie jest wąskie gardło dysku?
      • Czy w komputerze jest wystarczająca ilość pamięci?
      • Czy procesory nie są przeciążone?
      • Czy procesy blokują się na dyskowych operacjach I/O?
      • Czy czas przetwarzania systemu dominuje nad czasem przetwarzania użytkownika?
    • Przepisy na optymalizacje błyskawiczne
      • Stacje robocze pojedynczych użytkowników
      • Serwery grup roboczych
      • Serwery WWW
  • Inżynieria oprogramowania Algorytmy, Inżynieria oprogramowania


    Podobne książki:


    Cykl projektowania zabezpieczeń dla praktyków Klienci domagają się wyższego poziomu zabezpieczeń i prywatności w używanym oprogramowaniu – i jest to uzasadnione żądanie. Ta książka jest pierwszym szczegółowym opisem rygorystycznej, sprawdzonej metodologii, która w mierzalny sposób...
     
    Struktura i interpretacja programów komputerowych Struktura i interpretacja programów komputerowych W świecie informatycznym książka ta jest uważana za najlepszy podręcznik do wykładu „Wstęp do programowania”. Autorzy wyraźnie dają do zrozumienia, że programy pisze się nie tylko po to, by je wykonywać, ale także po to, by je czytać,...
     
    Zrozumieć UML 2.0 metody modelowania obiektowego Zrozumieć UML 2.0 metody modelowania obiektowego Tworzenie złożonego systemu informatycznego wymaga przygotowania projektu. Należy określić w nim środowisko działania systemu, wymagania użytkowników, procesy realizowane przez system i jego elementy składowe. Opis słowny, przydatny w trakcie zbierania...