Jaka jest różnica między monitorowaniem, śledzeniem i profilowaniem?

16

Widziałem często te trzy słowa, ale nie rozumiem dokładnych różnic między nimi. Na przykład gromadzenie wykorzystania procesora jest często nazywane profilowaniem i może również podlegać monitorowaniu wydajności. Jaka jest (subtelna) różnica między nimi?

Richard
źródło

Odpowiedzi:

11

W ten sposób używam tych słów. Inne mogą mieć dodatkowe lub różne zastosowania. W zależności od wykonywanej pracy użyję tych warunków w różny sposób. Zespoły programistów i zespoły operacyjne mają różne potrzeby użytkowania.

Monitorowanie to monitorowanie. Zwykle trwa, a najlepiej zautomatyzowany. Narzędzia open source jak Munin, Nagiosi MRTGnależą do tej kategorii. Istnieje również wiele komercyjnych narzędzi. Chciałbym również włączyć sarciągłe w tej kategorii, ale jego wyniki zwykle nie są monitorowane. Narzędzi monitorowania można używać do wyzwalania alertów, gdy monitorowany zasób spadnie powyżej lub poniżej poziomu wyzwalania. Wiele narzędzi monitorowania działa dobrze w środowiskach heterogenicznych.

Profilowanie jest zwykle wykonywane w określonym programie, aby zobaczyć, który kod wykorzystuje najwięcej zasobów. Często jest to czas procesora, ale może również obejmować pamięć, operacje we / wy i czas wykonania (ściany). Zwykle służy do identyfikacji kodu kandydującego do optymalizacji. Narzędzia do profilowania zwykle zależą od języka i / lub platformy.

Innego rodzaju profilowania dokonuje się przy użyciu dzienników i / lub danych monitorowania. Jest to profilowanie użytkowania i można to zrobić z różnych powodów. Nie znalazłem wielu narzędzi do tego.

Śledzenia używam na kilka różnych sposobów. Najczęściej śledzę trasy sieciowe. W zależności od ustawień sieci i zapory ogniowej można z powodzeniem stosować różne narzędzia. Większość z nich ma traceroute w nazwie lub opisie.

Śledzenie programu to śledzenie wykonania programu. Zazwyczaj odbywa się to w sytuacji testowej. Można to zrobić na wiele sposobów (w mojej kolejności użycia i doświadczenia):

  • Śledzenie połączeń za pomocą narzędzi takich jak, straceaby zobaczyć, jak nazywa się kod. Może to być przydatne do ustalenia, dlaczego program nie działa lub nie odpowiada zgodnie z oczekiwaniami.
  • Rejestrowanie na poziomie śledzenia, które zależy od włączenia odpowiednich instrukcji rejestrowania do kodu. Większość pakietów logowania obsługuje ten poziom szczegółowości. Rejestrowanie na poziomie śledzenia zwykle słabo pokrywa kod. Ogólnie dodaję go w razie potrzeby i pozostawiam w kodzie do przyszłego użytku.
  • Śledzenie pokrycia kodu rejestruje, które części kodu wykonały w zestawie testów. Może to być przydatne w określaniu brakujących przypadków testowych. Trudno jest uzyskać 100% pokrycia kodu. Należy osiągnąć 100% pokrycie normalnych przepływów.
  • Sprawdzanie biurka: śledzenie kodu poprzez czytanie. Niezbyt przydatne w większych programach, ale dobry sposób na identyfikację przypadków skrajnych dla testów jednostkowych, i / lub identyfikację możliwych problemów, gdy prawdopodobne źródło zostanie zawężone. Som = e IDE i edytory ułatwiają śledzenie wywołania kodu implementacyjnego.
  • Debugowanie na żywo; śledzenie wykonania kodu podczas jego działania przy użyciu debugera. Możliwe jest śledzenie instrukcji wykonania według instrukcji, ale jeśli problem dotyczy czasu, może być ukryty. Debugery, które mogą łączyć kod z bieżącą instrukcją, bardzo pomagają, ale mogą wymagać zbudowania debugowanej wersji programu.
BillThor
źródło
-1

W serwerze aplikacji SAP WEB możemy zdefiniować te trzy słowa kluczowe, jak wspomniano poniżej:

Techniki monitorowania, śledzenia i profilowania oferowane przez Internet, a także techniki dostarczane przez inne systemy SAP i zewnętrzne mogą być zintegrowane przy użyciu sprawdzonej architektury CCMS, co może znacznie uprościć obsługę dużych, rozproszonych i heterogenicznych instalacji.

Robert
źródło