13.1.18. Profiler kodu

Window → Show Code Profiler otwiera profiler na poziomie funkcji dla oprogramowania układowego działającego na podłączonej kamerze: które funkcje C zostały wykonane, jak często i gdzie poszły mikrosekundy, strumieniowane na żywo podczas wykonywania skryptu. Odpowiada na pytanie, jakie nasuwa licznik FPS – dlaczego ten potok jest wolny – na poziomie kodu samej kamery.

Obsługa profilowania jest wkompilowana w oprogramowanie układowe i nie zawsze jest obecna: kamera musi działać z oprogramowaniem układowym zbudowanym z PROFILE_ENABLE=1, w przeciwnym razie wpis menu pozostaje wyłączony. Zbudowanie takiego oprogramowania układowego jest częścią procesu niestandardowej kompilacji opisanego w Budowanie oprogramowania układowego.

Okno Code Profiler: tabela funkcji wypełniona liczbą wywołań, kolumnami czasów, wartościami procentowymi oraz dwiema kolumnami sprzętowych liczników zdarzeń, z elementami sterującymi Flat/Tree i Inclusive/Exclusive na górze oraz wierszem sum na dole

Profiler obserwujący działanie skryptu: wywołania w przeliczeniu na funkcję, czasy oraz procent łącznego czasu, z dwoma sprzętowymi licznikami zdarzeń w skrajnie prawych kolumnach i wierszem sum poniżej.

Okno to sortowalna tabela funkcji wraz z liczbą ich wywołań, minimalną, maksymalną, łączną i średnią liczbą mikrosekund, średnią liczbą cykli oraz procentem łącznego czasu, z wierszem sum poniżej oraz polem filtra do wyszukiwania funkcji po nazwie. Nazwy funkcji pochodzą z pliku ELF oprogramowania układowego – wskaż w polu ścieżki oprogramowania układowego w oknie plik .elf wytworzony przez kompilację, a adresy zostaną rozwinięte do nazw.

Dwa elementy sterujące widokiem porządkują dane. Flat klasyfikuje każdą funkcję niezależnie – to widok do pytania „która pojedyncza funkcja jest najbardziej kosztowna”. Tree zagnieżdża wywoływane funkcje pod wywołującymi, pokazując, jak czas rozkłada się w dół łańcucha wywołań. Niezależnie od tego, Inclusive przypisuje funkcji czas spędzony we wszystkim, co wywołała, podczas gdy Exclusive liczy tylko ciało samej funkcji – inclusive znajduje kosztowny podsystem, exclusive znajduje kosztowną pętlę. Reset zeruje liczniki, co pozwala mierzyć w izolacji jeden etap potoku: zresetuj, pozwól mu się wykonać, odczytaj.

Profiler może też wyświetlać sprzętowe liczniki zdarzeń – chybienia pamięci podręcznej, błędne przewidywania rozgałęzień oraz inne zdarzenia, które procesor potrafi zliczać – obok kolumn czasów; wybierz je w tym samym oknie na oprogramowaniu układowym zbudowanym z odpowiednią obsługą.

Zobacz także

Interfejs CLI pakietu openmv potrafi nakładać te same dane profilowania na strumień na żywo z poziomu wiersza poleceń – zobacz Interfejs wiersza poleceń openmv.