Optymalizacja programów Open-Source

Slides:



Advertisements
Podobne prezentacje
Procedura instalacji systemu Windows XP
Advertisements

CLIMGEN (generator danych pogodowych w modelu CropSyst.
Prezentacja o MS-DOS’ie
PRACA W LINUKSIE W czym pisać? Przedstawienie edytorów tekstów od vi przez emacs aż do Kwrite Pakiety biurowe w Linuksie. Zgodność plików z plikami Microsoft.
CLR na platformie .NET Tomasz Kostarski.
Odśmiecanie Grzegorz Timoszuk
GDB Omówienie z przykładami
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Biblioteki i przestrzenie nazw
Systemy operacyjne.
Temat nr 10: System przerwań
Tworzenie stron w języku WML jest zbliżone do tworzenia stron w HTML. W obydwu przypadkach używa się do tego celu znaczników (tagów). Zadaniem znaczników.
SAMBA JAKO SERWER PLIKÓW
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
WINDOWS 95 WYCINEK AUTOSTART TWORZENIE POWIĄZAŃ PLIKÓW Z APLIKACJAMI
REPOZYTORIA 1. Co to są repozytoria?
Komputer a system komputerowy
Bootloader – program rozruchowy
Podstawy programowania. Język C i C++– podstawy Temat: 1
Podstawy systemu operacyjnego
Budowa systemu komputerowego
Prezentacja Adrian Pyza 4i.
Aplikacje systemu windows XP
5 Etapów Pracy Kompilatora
Maszyna wirtualna ang. virtual machine, VM.
Buforowanie D e f i n i c j a.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Fraktale w Gimp’ie 2.6 Czyli taka grafika jak w tle
Robimy własne notatki - Notatnik
Przeglądanie zasobów komputera - uruchamianie programów
Defragmentacja dysku Jednym z kluczowych czynników wydajności operacji wejścia/wyjścia jest poziom fragmentacji plików. Fragmentacja oznacza zapisywanie.
Instrukcja USOS Raporty tekstowe wersja by Marek Opacki.
Testowanie płyty głównej. Sygnały dźwiękowe BIOS
Etapy uruchamiania systemu Pliki konfiguracyjne
Systemy operacyjne (wiosna 2014)
MANUAL of Audyt_przestrzeni2.0 Autor koncepcji Z. Przygodzki Autor narzędzia: E. Kina.
Nieprawidłowy (inny niż JPG) format zdjęcia Zdjęcia skanowane lub robione w laboratoriach fotograficznych bywają zapisywane w plikach BMP lub innych. Aby.
Podstawy programowania
ZAPIS BLOKOWY ALGORYTMÓW
XML Publisher Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przeznaczenie XML Publisher Przeznaczenie XML Publisher Definiowanie Definiowanie.
KARTY DŹWIĘKOWE.
Co to jest format PDF PDF (ang. Portable Document Format) - jest formatem plików, który służy do prezentacji, przenoszenia oraz drukowania treści zarówno.
Podstawy języka skryptów
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
PHP Zmienne Damian Urbańczyk. Czym są zmienne? Zmienne zajmują pewien obszar pamięci, aby przechować pewne dane. W przypadku PHP, zmienne stosuje się.
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Iga Lewandowska I EMII MU
Podstawy programowania
Struktura systemu operacyjnego
Przerwania timera i przerwania zewnętrzne
Dokumentacja programu komputerowego i etapy tworzenia programów.
Stworzenie projektu w cubemx i kontunuacja w sw4stm32
PWM, obsługa wyświetlacza graficznego
C++ WYKŁAD 12 ( ) Własne biblioteki. S PIS TREŚCI Kompilacja i łączenie Moduły Biblioteki Biblioteka statyczna Biblioteka współdzielona Biblioteka.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Optymalizacja programów Open-Source Krzysztof Lichota
Optymalizacja programów Open- Source Inne zagadnienia Krzysztof Lichota
Optymalizacja programów Open- Source Optymalizacja czasu uruchamiania programu Krzysztof Lichota
Optymalizacja programów Open- Source Profilery niskiego poziomu część 2 Krzysztof Lichota
Optymalizacja programów Open- Source Dostęp do dysku Krzysztof Lichota
Optymalizacja programów Open-Source Profilery wysokiego poziomu część 1 Krzysztof Lichota
Optymalizacja programów Open-Source
TEMAT: Zapoznanie się z funkcja LICZNIKA w sterowniku Twido
Optymalizacja programów Open-Source
Wskaż wybrany krok lub kliknij Enter aby dowiedzieć się więcej.
TEMAT: Zapoznanie się z funkcja LICZNIKA w sterowniku Twido
Pomysły na dziś i na jutro
Zapis prezentacji:

Optymalizacja programów Open-Source Profilery wysokiego poziomu część 2 Krzysztof Lichota lichota@mimuw.edu.pl

gprof

gprof Pomiar działa na zasadzie instrumentacji kompilowanego kodu (wejścia i wyjścia z funkcji) oraz okresowego sprawdzania stosu (co określony czas działania programu, żeby przypisać czas) Program musi być zrekompilowany z odpowiednią opcją gcc Uruchomiony program generuje plik ze statystykami (gmon.out) Program gprof analizuje plik ze statystykami i przedstawia wyniki. Narzut – niewielki (ale większy niż np. Google profiler)

Zalety gprof Dokładnie zlicza wejścia i wyjścia z funkcji Dostępny na większości instalacji Linuksa Można włączyć profiling tylko dla niektórych modułów programu (przy kompilacji) Stanowi standard, niektóre inne narzędzia generują wyniki w jego formacie, więc narzędzia obsługujące gprof działają także tam. Informacje z profilowania mogą być użyte do sterowania rekompilacją

Wady gprof Wymaga rekompilacji programu i bibliotek używanych przez program Nie pokazuje, kiedy program śpi (np. z powodu wejścia/wyjścia albo swapowania) Czas jest zliczany przez próbkowanie i przypisywany do funkcji na podstawie liczby wystąpień (z założeniem, że każde wykonanie funkcji trwa tyle samo), więc jest to niedokładne

Użycie gprof - kompilacja Trzeba skompilować i zlinkować program z opcją -pg (przydaje się też -g do informacji o liniach w programie i -fprofile-arcs do instrumentacji bloków prostych) W przypadku systemu budowania autotools można użyć: CFLAGS="-pg -O0" LDFLAGS=-pg CPPFLAGS="-pg -O0" ./configure Lub jeśli jest dostępne to: ./configure –enable-profile Żeby uzyskać dobre wyniki należy zrekompilować również biblioteki (niektóre już są, np. libc_p.a).

Użycie gprof - uruchomienie Program uruchamia się normalnie, bez dodatkowych opcji Przy zakończeniu program zapisuje plik gmon.out w bieżącym katalogu Jeśli nie ma się praw zapisu do bieżącego katalogu, plik nie zostanie zapisany Jeśli program zostanie zakończony w niespodziewany sposób (nie przez exit()), to plik też nie zostanie zapisany

Użycie gprof – wyświetlanie wyników Zwykłe wywołanie: gprof opcje program-wykonywalny gmon.out >plik.txt (generuje tekstowe podsumowanie z czasem wykonywania dla poszczególnych funkcji i drzewem wywołań) Opcja –annotated-source wyświetla kod programu z anotacją o czasie przebywania w danym miejscu Opcje --exec-counts -l – pokazują ile czasu program spędził w każdym bloku prostym Opcja –line pokazuje liczbę wywołań dla każdej linii programu

Użycie gprof – wyświetlanie wyników (2) Istnieją narzędzia do graficznego przedstawiania wyników gprof (np. kprof dla KDE) Mogą one wyświetlać wyniki również innych profilerów używających formatu gprof

Inne przydatne rzeczy w gprof Ponieważ dane są zbierane przez próbkowanie, są niedokładne. Można skumulować dane z kilku uruchomień za pomocą opcji -s (dokładny opis w info dla gprof).

Rekompilacja z profilingiem Instrumentacja gcc do profilowania (opcja -fprofile-generate) może służyć również do podpowiedzenia kompilatorowi jak optymalnie kompilować przy powtórnej kompilacji. Więcej na zajęciach z profilowania niskiego poziomu.

bootchart

bootchart Zbiera dane podczas uruchomienia i generuje wykres obrazujący zachowanie systemu w czasie profilowania Zbiera informacje (z /proc) o zużyciu CPU (w tym o czasie zużytym na I/O) stopniu użycia dysków uruchomionych programach i co robią (używają CPU, czekają na I/O). Uruchomienie następuje w momencie uruchomienia systemu (przez modyfikację initrd) Zatrzymanie poprzez uruchomienie usługi bootchart-stop

bootchart (2) W initrd uruchamiany jest proces, który co jakiś czas budzi się i zbiera informacje z /proc Narzut niewielki, ale jeśli jest dużo procesów może się zwiększyć (informacje z /proc są zbierane dla wszystkich procesów)

Zalety bootchart Profiling od momentu uruchomienia systemu Przejrzyste, graficzne przedstawienie wyników Zbiorcze przedstawienie tego, co się dzieje w systemie Możliwość użycia do profilowania również innych fragmentów działania systemu niż start Pokazuje jakie procesy są uruchomione i kiedy oraz kiedy śpią Pokazuje środowisko w którym został uruchomiony (wersja jądra, opcje, itp.) Stosunkowo łatwo można go modyfikować

Wady bootchart Nie pokazuje zużycia pamięci Z powodu próbkowania może nie pokazać krótko żyjących procesów

Na co należy zwrócić uwagę Procesy, które nie działają nie są pokazywane na wykresie, tak samo krótko żyjące procesy, takie same procesy mogą zostać sklejone Generowanie wykresu zajmuje dużo procesora i może zaburzyć dalsze działania Czas jest liczony od momentu uruchomienia bootchart, czas na załadowanie jądra i rozpakowanie go (oraz czas uruchomienia BIOS-u) nie jest wliczany Domyślnie dane, z których był wygenerowany wykres są wyrzucane

Instalacja bootchart Zainstalować paczkę z dystrybucji Uaktualnić initrd (np. w Ubuntu „update-initramfs”).

Bibliografia http://www-128.ibm.com/developerworks/linux/library/l-gnuprof.html info:gprof http://bootchart.org/ http://docs.freebsd.org/44doc/psd/18.gprof/paper.pdf http://sourceware.org/binutils/docs/gprof/index.html