Optymalizacja programów Open-Source

Slides:



Advertisements
Podobne prezentacje
Temat 2: Podstawy programowania Algorytmy – 1 z 2 _________________________________________________________________________________________________________________.
Advertisements

Witam na szkoleniu Colway. SZKOLENIE Z PREZENTOWANIA PIERWSZEGO PLANU FINANSOWEGO COLWAY.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
Zajęcia 1-3 Układ okresowy pierwiastków. Co to i po co? Pojęcie masy atomowej, masy cząsteczkowej, masy molowej Proste obliczenia stechiometryczne. Wydajność.
Stężenia Określają wzajemne ilości substancji wymieszanych ze sobą. Gdy substancje tworzą jednolite fazy to nazywa się je roztworami (np. roztwór cukru.
PRACA Z APLIKACJAMI SYSTEM PRZEMIESZCZANIA oraz NADZORU WYROBÓW AKCYZOWYCH EMCS PL 1.
Sprawozdawczość. Podstawowe terminy Okres sprawozdawczy  3 kolejne miesiące, licząc od daty zawarcia umowy o dofinansowanie projektu Rodzaje raportów.
Wyszukiwanie informacji w Internecie. Czym jest wyszukiwarka? INTERNET ZASOBY ZAINDEKSOWANE PRZEZ WYSZUKIWARKI Wyszukiwarka to mechanizm, który za pomocą.
Excel 2007 dla średniozaawansowanych zajęcia z dnia
PODRÓZNICY AMERYKI POŁUDNIOWEJ. Jesteście podróżnikami badającymi tropikalne zwierzęta, zamierzacie wybrać się do Ameryki Południowej, aby stworzyć album.
Jeśli chcesz przejść do konkretnego zagadnienia, wybierz je z listy: Dopisanie narzędzia Modyfikacja narzędzia Usunięcia narzędzia Lokalizacja domyślna.
EWALUACJA JAKO ISTOTNY ELEMENT PROJEKTÓW SYSTEMOWYCH Sonia Rzeczkowska.
Pomiar przyspieszenia ziemskiego za pomocą piłeczki tenisowej.
… przemy ś lenia pedagogiczne. „Najważniejszym okresem w życiu nie są lata studiowania na wyższej uczelni, ale te najwcześniejsze, czyli okres od narodzenia.
Zapraszamy na naszą stronę. Zależy nam na kontakcie z Wami. Czytajcie, komentujcie i dyskutujcie na forum. Nic o Was bez Was Zapraszamy na naszą stronę.
Jak to się robi ? Instrukcja wypełnienia dzienniczka treningowego, na podstawie danych z GARMIN-a Forerunner 305.
Porównywarki cen leków w Polsce i na świecie. Porównywarki w Polsce.
Sesja 6 Planowanie wdrożenia: Mapa Procesu Zmian
Pierwsza pomoc przedmedyczna. Aspekty prawne Zgodnie z 162 art. Kodeksu karnego: Zgodnie z 162 art. Kodeksu karnego: „Kto człowiekowi znajdującemu się.
Komunikatory Zespół Szkół Zawodowych Nr 3 im. Adama Kocura w Katowicach - Janowie.
Instalacja nienadzorowana windows xp Jakub klafta.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
Optymalna wielkość produkcji przedsiębiorstwa działającego w doskonałej konkurencji (analiza krótkookresowa) Przypomnijmy założenia modelu doskonałej.
Woda O tym, dlaczego powinniśmy ją oszczędzać Jan Stasiewicz, kl. II C.
Podstawowe prace w jednym z najlepszych programów graficznych.
Definiowanie i planowanie zadań typu P 1.  Planowanie zadań typu P  Zadania typu P to zadania unikalne służące zwykle dokonaniu jednorazowej, konkretnej.
MODUŁ 3 TEMAT 1 POZIOM 2 Wyznaczani e celów. W TYM TEMACIE MŁODZI LUDZIE: Poznają, jak planowanie celów może pomóc im w ich przyszłej karierze Będą wyznaczyć.
Obliczanie procentu danej wielkości Radosław Hołówko.
Raport cytowań & indeks h DR KLEMENTYNA KARLIŃSKA-BATRES WEB OF SCIENCE.
ZASTOSOWANIE  Programowanie  Ułatwianie pracy  Szybkie obliczanie  Spisywanie kosztów  Tworzenie tabel i wykresów  Obliczanie średniej, sumy,
Jak tworzymy katalog alfabetyczny? Oprac.Regina Lewańska.
, + - = 0,5 CZYTAJ DOKŁADNIE ZADANIA I POLECENIA. IM TRUDNIEJSZE ZADANIE, TYM BARDZIEJ WARTO JE PRZECZYTAĆ KILKA RAZY.
Optymalizacja programów Open- Source Profilery wysokiego poziomu część 3 Krzysztof Lichota
Optymalizacja programów Open- Source Pamięć część 1 Krzysztof Lichota
O PARADOKSIE BRAESSA Zbigniew Świtalski Paweł Skałecki Wydział Matematyki, Informatyki i Ekonometrii Uniwersytet Zielonogórski Zakopane 2016.
Kluczowe elementy skutecznej strategii analizy danych internetowych
Dz.U Ustawa z dnia 14 grudnia 2016 r. - Prawo oświatowe
Wykład 4. Dr Krzysztof Jonas
Schematy blokowe.
Podstawowe polecenia systemu
On-the-Fly Garbage Collection
ORGANIZACJA.
Full Text Finder Przegląd Publication Finder
KOMPONENTY ORAZ ZASADA DZIAŁANIA
Liczby pierwsze.
Przybliżenia dziesiętne liczb rzeczywistych
Quick Tips Tutorial Jak uzyskać dostęp do raportów EBSCOhost i EBSCO Discovery Service w EBSCOadmin support.ebsco.com.
ALGORYTMY I STRUKTURY DANYCH
Wstęp do Informatyki - Wykład 3
Rekrutacja do przedszkoli w Gminie Strzyżów
Przewodnik Udoskonalanie listy wyników w wyszukiwarce naukowej
Wstęp do Informatyki - Wykład 8
10 kroków do zmiany nawyków
Git - system kontroli wersji
Bezpieczeństwo dostępu do danych w systemie Windows
Temat: Pliki— miejsce na komputerowe informacje
Laboratorium 1 – obsługa wejść i wyjść
Jak korzystać z usługi Video s i Raportu Kontaktów
EXCEL Wykład 4.
Koszyk danych.
Podstawy informatyki Zygfryd Głowacz.
Pisemne dzielenie liczb naturalnych
Proste obliczenia w arkuszu kalkulacyjnym
Znajdowanie liczb pierwszych w zbiorze
POZNAJEMY PULPIT Opracowanie: mgr Barbara Benisz SP nr 20 w Rybniku
Bufory.
Program na dziś Wprowadzenie Logika prezentacji i artykułu
Uniwersytet Kardynała Stefana Wyszyńskiego w Warszawie
Autor: Magdalena Linowiecka
Najważniejsze operacje graficzne w programie GIMP
Zapis prezentacji:

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

Massif

Massif Narzędzie Valgrinda pozwalające sprawdzić w którym miejscu programu pamięć jest alokowana, kiedy i ile Pokazuje zużycie pamięci na stertę (heap), administację stertą i na stos Potrafi wygenerować wykres pokazujący zużycie pamięci w czasie

Zalety massifa Wykres pozwala szybko się zorientować, w którym miejscu alokujemy najwięcej pamięci Tekstowy raport pozwala zorientować się jaka jest ścieżka wywołania, która prowadzi do alokacji Bardzo łatwy w użyciu, nie wymaga rekompilacji programu

Wady massifa Obliczanie pamięci na administrowanie stertą jest przybliżone Nie można dokładnie oznaczyć miejsc w czasie, w których jakieś działanie się zaczyna lub kończy – trzeba w przybliżeniu zapamiętywać czas Program wykonuje się bardzo wolno Wyniki mogą być niedokładne, bo stan alokacji jest rejestrowany co jakiś czas

Użycie massifa Wywołanie: valgrind --tool=massif <polecenie> Po zakończeniu tworzony jest w bieżącym katalogu plik tekstowy zawierający opis ile pamięci z którego miejsca było zaalokowane Plik wynikowy należy przetworzyć narzędziem ms_print Domyślnie rejestrowane są dane co ileś wykonanych instrukcji, opcja ‑‑time‑unit=B zmienia na rejestrowanie co ileś zaalokowanych bajtów (częstotliwość zrzutów jest dynamicznie zmieniana tak by zawsze trzymać <100)

Użycie massifa Jeśli używamy własnych funkcji alokujących pamięć można je wskazać massifowi za pomocą ‑‑alloc‑fn Profilowanie stosu można włączyć opcją ‑‑stacks=yes (domyślnie wyłączona, bo bardzo spowalnia) Jeśli pokazywany stan stosu jest zbyt mały, by rozpoznać jednoznacznie miejsce alokacji, należy zwiększyć głębokość pokazywanego stosu za pomocą opcji --depth

Użycie ms_print ms_print generuje plik tekstowy z wykresem (ASCII) i szczegółowymi danymi zrzutów Pokazuje ilość zażądanej alokacji (useful-heap) i narzut administracyjny (extra-heap) Dla każdego snapshota pokazuje rozbicie z których funkcji (i ścieżek wywołania) nastąpiły alokacje i jaka wielkość Można zmienić parametry generowania wykresu „:” na wykresie oznacza zwykły snapshot, „@” szczegółowy, a „#” moment największego zużycia

kmtrace

kmtrace Narzędzie z pakietu KDE SDK Zawiera bibliotekę ładowaną za pomocą LD_PRELOAD i skrypty do przetwarzania wygenerowanych w ten sposób wyników Zbieranie i generowanie wyników nie wymaga GUI, więc można używać go do śledzenia demonów lub automatycznego zbierania wyników

kmtrace Domyślne skrypty przetwarzające służą do znajdowania wycieków pamięci, a nie do analizy zużycia pamięci Plik śladu zawiera rozmiar alokacji i zrzut stosu, więc można sobie go łatwo przetwarzać na swoje sposoby

Wady kmtrace Nie pokazuje zużycia stosu Nie pokazuje pamięci zaalokowanej za pomocą mmap() Nie uwzględnia fragmentacji pamięci Z tych powodów zużycie pamięci pokazywane przez memprof dość odbiega od prawdziwego zużycia po uwzględnieniu załadowanych bibliotek, stosu, itd.

Użycie kmtrace Uruchamiamy program za pomocą: MALLOC_TRACE=./ktrace.out LD_PRELOAD=/usr/lib/kmtrace/libktrace.so <polecenie> lub kminspector <polecenie> Ślad jest w pliku ktrace.out i ma format tekstowy Analiza śladu (wycieki): kmtrace <plik-śladu> Można zliczyć rozmiar i liczbę alokacji prostym skryptem: cat ktrace.out | grep '^\+' | (s=0; i=0; while read dummy addr len; do i=$[$i + 1]; s=$[ $s + len ]; done; echo $i $s ; )

Bibliografia http://valgrind.org/docs/manual/ms-manual.html http://developer.gnome.org/doc/guides/optimisation/Massif.html http://ktown.kde.org/~seli/memory/analysis.html