Udostępnij przez


Informacje o śledzeniu zdarzeń

Śledzenie zdarzeń systemu Windows (ETW) to wydajna funkcja śledzenia na poziomie jądra, która umożliwia rejestrowanie zdarzeń jądra lub zdarzeń zdefiniowanych przez aplikację w pliku dziennika. Można przetwarzać zdarzenia w czasie rzeczywistym lub z rejestru i używać ich do debugowania aplikacji lub określania, gdzie występują problemy z wydajnością w aplikacji.

Funkcja ETW umożliwia dynamiczne włączanie lub wyłączanie śledzenia zdarzeń, co pozwala na wykonywanie szczegółowego śledzenia w środowisku produkcyjnym bez konieczności ponownego uruchamiania komputera lub aplikacji.

Interfejs API śledzenia zdarzeń jest podzielony na trzy odrębne składniki:

  • Kontrolery, które rozpoczynają i kończą sesję śledzenia zdarzeń oraz włączają usługodawców.
  • dostawcy , którzy organizują wydarzenia
  • konsumenci, którzy konsumują zdarzenia

Na poniższym diagramie przedstawiono model śledzenia zdarzeń.

model śledzenia zdarzeń

Kontrolery

Kontrolery to aplikacje definiujące rozmiar i lokalizację pliku dziennika, uruchamianie i zatrzymywanie sesji śledzenia zdarzeń, włączają dostawców, aby mogli rejestrować zdarzenia w sesji, zarządzać rozmiarem puli i uzyskiwać statystyki wykonywania dla sesji. Statystyki sesji obejmują liczbę używanych buforów, liczbę dostarczonych buforów oraz liczbę utraconych zdarzeń i buforów.

Aby uzyskać więcej informacji, zapoznaj się z sekcją Kontrolowanie sesji śledzenia zdarzeń.

Dostawców

Dostawcy to aplikacje, które zawierają instrumentację śledzenia zdarzeń. Po zarejestrowaniu się przez dostawcę kontroler może następnie włączyć lub wyłączyć śledzenie zdarzeń u dostawcy. Dostawca definiuje jego interpretację włączania lub wyłączania. Ogólnie rzecz biorąc, włączony dostawca generuje zdarzenia, podczas gdy wyłączony dostawca nie. Umożliwia to dodawanie śledzenia zdarzeń do aplikacji bez konieczności generowania zdarzeń przez cały czas.

Mimo że model ETW oddziela kontroler i dostawcę na oddzielne aplikacje, aplikacja może zawierać oba składniki.

Aby uzyskać więcej informacji, zobacz sekcję Organizowanie wydarzeń.

Typy dostawców

Istnieją cztery główne typy dostawców: dostawcy MOF (wersja klasyczna), dostawcy WPP, dostawcy oparte na manifeście i dostawcy TraceLogging. Jeśli piszesz aplikacje dla systemu Windows Vista lub nowszego, musisz użyć dostawcy opartego na manifeście lub dostawcy śledzenia, który nie musi obsługiwać starszych systemów.

Dostawcy MOF (wersja klasyczna):

  • Użyj funkcji RegisterTraceGuids i TraceEvent, aby rejestrować i zapisywać zdarzenia.
  • Użyj klas MOF, aby zdefiniować zdarzenia, aby użytkownicy wiedzieli, jak z nich korzystać.
  • Można włączyć tylko jedną sesję śledzenia w danym momencie.

Dostawcy programu WPP:

  • Użyj funkcji RegisterTraceGuids i TraceEvent, aby rejestrować i zapisywać zdarzenia.
  • Skojarzono pliki TMF (skompilowane w pliku .pdb pliku binarnego) zawierające informacje dekodujące wywnioskowane ze skanowania preprocesora instrumentacji WPP w kodzie źródłowym.
  • Można włączyć tylko jedną sesję śledzenia w danym momencie.

Dostawcy oparty na manifeście:

  • Użyj EventRegister i EventWrite do rejestrowania i zapisywania zdarzeń.
  • Użyj manifestu, aby zdefiniować zdarzenia, aby użytkownicy wiedzieli, jak z nich korzystać.
  • Maksymalnie osiem sesji śledzenia może być jednocześnie włączonych.

dostawcy TraceLogging:

  • Użyj TraceLoggingRegister i TraceLoggingWrite do rejestrowania i zapisywania zdarzeń.
  • Używaj samoopisujących się zdarzeń, aby same zdarzenia zawierały wszystkie wymagane informacje do ich konsumowania.
  • Można włączyć przez maksymalnie osiem sesji śledzenia jednocześnie.

Wszyscy dostawcy zdarzeń zasadniczo używają rodziny interfejsów API do śledzenia zdarzeń (TraceEvent w przypadku starszych technologii oraz EventWrite/EventWriteEx dla nowszych technologii). Dostawcy zdarzeń po prostu różnią się tym, jakie typy pól przechowują w ładunkach zdarzeń i gdzie przechowują skojarzone informacje dekodujące zdarzenia.

Konsumenci

Konsumenci to aplikacje, które wybierają co najmniej jedną sesję śledzenia zdarzeń jako źródło zdarzeń. Użytkownik może żądać zdarzeń z wielu sesji śledzenia zdarzeń jednocześnie; system dostarcza zdarzenia w kolejności chronologicznej. Użytkownicy mogą odbierać zdarzenia przechowywane w plikach dziennika lub z sesji, które dostarczają zdarzenia w czasie rzeczywistym. Podczas przetwarzania zdarzeń użytkownik może określić czas rozpoczęcia i zakończenia, a dostarczane będą tylko zdarzenia występujące w określonym przedziale czasu.

Aby uzyskać więcej informacji, zobacz Konsumowanie zdarzeń.

Brakujące zdarzenia

Narzędzie Perfmon, diagnostyka systemu i inne narzędzia systemowe mogą zgłaszać brakujące zdarzenia w dzienniku zdarzeń i wskazywać, że ustawienia śledzenia zdarzeń systemu Windows (ETW) mogą nie być optymalne. Zdarzenia mogą zostać utracone z wielu powodów:

  • Całkowity rozmiar zdarzenia jest większy niż 64K. Obejmuje to nagłówek ETW oraz dane lub obciążenie. Użytkownik nie ma kontroli nad tymi brakującymi zdarzeniami, ponieważ rozmiar zdarzenia jest skonfigurowany przez aplikację.

  • Rozmiar buforu ETW jest mniejszy niż całkowity rozmiar zdarzenia. Użytkownik nie ma kontroli nad tymi brakującymi zdarzeniami, ponieważ rozmiar zdarzenia jest konfigurowany przez aplikację rejestrującą zdarzenia.

  • W przypadku rejestrowania w czasie rzeczywistym konsument czasu rzeczywistego nie konsumuje zdarzeń wystarczająco szybko lub wcale nie jest obecny, a plik zapasowy się zapełnia. Może to nastąpić, jeśli usługa dziennika zdarzeń jest zatrzymana i uruchomiona ponownie w trakcie rejestrowania zdarzeń. Użytkownik nie ma kontroli nad tymi brakującymi zdarzeniami.

  • Podczas rejestrowania w pliku dysk jest zbyt powolny, aby nadążyć za szybkością rejestrowania.

Z dowolnego z tych powodów zgłoś te problemy dostawcy aplikacji lub usługi generującej zdarzenia. Te problemy można rozwiązać tylko przez dewelopera aplikacji lub usługę rejestrując zdarzenia. Jeśli brakujące zdarzenia są zgłaszane w usłudze dziennika zdarzeń, może to wskazywać na problem z konfiguracją usługi dziennika zdarzeń. Użytkownik może mieć ograniczoną możliwość zwiększenia maksymalnej ilości miejsca na dysku do użycia przez usługę dziennika zdarzeń, co może zmniejszyć liczbę brakujących zdarzeń.