İzleme verilerine erişme

.NET TraceProcessing, NuGet ile aşağıdaki paket kimliğiyle kullanılabilir:

Microsoft.Windows.EventTracing.Processing.All

Bu paket, izleme dosyasındaki verilere erişmenizi sağlar. Henüz bir izleme dosyanız yoksa, bir tane oluşturmak için Windows Performans Kaydedicisi'ni kullanabilirsiniz.

Aşağıdaki örnek konsol uygulaması, izlemede yer alan tüm işlemlerin komut satırlarına nasıl erişilir gösterilmektedir:

using Microsoft.Windows.EventTracing;
using Microsoft.Windows.EventTracing.Processes;
using System;

class Program
{
    static void Main(string[] args)
    {
        if (args.Length != 1)
        {
            Console.Error.WriteLine("Usage: <trace.etl>");
            return;
        }

        using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
        {
            IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses();

            trace.Process();

            IProcessDataSource processData = pendingProcessData.Result;

            foreach (IProcess process in processData.Processes)
            {
                Console.WriteLine(process.CommandLine);
            }
        }
    }
}

TraceProcessor kullanma

İzlemeyi işlemek için TraceProcessor.Create çağrılmalıdır. Temel arabirim ITraceProcessor'dır ve bu arabirimin kullanılması aşağıdaki deseni içerir:

  1. İlk olarak, işlemciye bir izlemeden hangi verileri kullanmak istediğinizi söyleyin
  2. İkincisi, izi işleyin;
  3. Son olarak sonuçlara erişin.

İşlemciye ne tür verilerin ön sırada olmasını istediğinizi söylemek, olası her tür izleme verisinin büyük hacimlerini işlemek için zaman harcamanız gerekmediği anlamına gelir. Bunun yerine , TraceProcessor yalnızca istediğiniz belirli veri türlerini sağlamak için gereken işi yapar.

TraceProcessor ile kullanmanızı önerdiğimiz birkaç proje ayarı vardır:

  1. Exe'leri 64 bit olarak çalıştırmanızı öneririz.

    Yeni bir C# .NET Framework konsol uygulaması için Visual Studio varsayılanı, 'Any CPU' (Tercih edilen 32 bit işaretli) olarak ayarlanmıştır. .NET için varsayılan ayar önerilen ayara zaten sahip olabilir.

    İzleme işleme özellikle daha büyük izlemelerle yoğun bellek kullanabilir ve TraceProcessor kullanan exe'lerde Platform hedefini x64 olarak değiştirmenizi (veya 32 bit tercih etme seçeneğinin işaretini kaldırmanızı) öneririz. Bu ayarları değiştirmek için projenin Özellikleri'nin altındaki Derleme sekmesine bakın. Tüm yapılandırmalarda bu ayarları değiştirmek için Yapılandırma açılan listesinin yalnızca geçerli yapılandırmanın varsayılanı yerine Tüm Yapılandırmalar olarak ayarlandığından emin olun.

  2. NuGet'i eski packages.config modu yerine daha yeni stildeki PackageReference moduyla kullanmanızı öneririz.

    Yeni projelerin varsayılanını değiştirmek için bkz. Araçlar, NuGet Paket Yöneticisi, Paket Yöneticisi Ayarları, Paket Yönetimi, Varsayılan paket yönetimi biçimi.

Yerleşik veri kaynakları

Bir .etl dosyası bir izlemede birçok veri türünü yakalayabilir. Bir .etl dosyasındaki verilerin izleme yakalanırken hangi sağlayıcıların etkinleştirildiğine bağlı olduğunu unutmayın. Aşağıdaki listede TraceProcessor tarafından sağlanan izleme verilerinin türleri gösterilmektedir:

Kod Açıklama İlgili WPA Öğeleri
izleme.UseClassicEvents() Şema bilgilerini içermeyen bir izlemeden klasik ETW olayları sağlar. Genel Olaylar tablosu (Olay Türü Klasik veya WPP olduğunda)
iz. UseConnectedStandbyData() Sistemin bağlı beklemeye girip çıktığına dair bir izlemeden veri sağlar. CS Özet tablosu
izini sür. UseCpuIdleStates() CPU C durumları hakkındaki bir izlemeden veri sağlar. CPU Boşta Durumları tablosu (Tür Gerçek olduğunda)
izleme. UseCpuSamplingData() İzden sağlanan veri, yönerge işaretçisinin düzenli örneklemesine dayanarak CPU kullanımı hakkında bilgi sunar. CPU Kullanımı (Örneklenmiş) tablosu
iz.UseCpuSchedulingData() Bağlam anahtarları ve hazır iş parçacığı olayları dahil olmak üzere CPU iş parçacığı zamanlaması hakkındaki bir izlemeden veri sağlar. CPU Kullanımı (Kesin) tablosu
izleme.UseDevicePowerData() Cihaz D durumları hakkında iz kaydından veri sağlar. Cihaz DState tablosu
iz. UseDirectXData() DirectX etkinliğiyle ilgili bir izlemeden veri sağlar. GPU Kullanımı tablosu
traceUseDiskIOData() Disk Giriş/Çıkış etkinliğiyle ilgili bir izleme hakkında veriler sağlar. Disk Kullanımı tablosu
iz. UseEnergyEstimationData() Energy Estimation Engine tarafından tahmin edilen her bir işlem başına enerji kullanımı hakkında bir izleme verisi sağlar. Enerji Tahmin Altyapısı Özeti (Prosese göre) tablosu
iz. UseEnergyMeterData() Enerji Ölçümü Arabiriminden (EMI) ölçülen enerji kullanımı hakkında bir izlemeden veri sağlar. Enerji Tahmin Motoru (Emi tarafından) tablosu
izleme.UseFileIOData() Dosya Girdi/Çıktı etkinliğiyle ilgili bir izlemeden veri sağlar. Dosya G/Ç tablosu
iz.UseGenericEvents() Bir izleme oturumundan açıkça belirtilmiş ve TraceLogging olayları sağlar. Genel Olaylar tablosu (Olay Türü Bildirimli olduğunda veya TraceLogging olduğunda)
iz. UseHandles() Aktif çekirdek tutamaçlarıyla ilgili bir izden kısmi veriler sağlar. Tablo tutamaçları
iz. UseHardFaults() İz kaydından sabit sayfa hataları hakkında veri sağlar. Sabit Hatalar tablosu
"trace.UseHeapSnapshots()" İşlem yığını kullanımı hakkında bir izlemeden veri sağlar. Yığın Anlık Görüntü Tablosu
iz. UseHypercalls() İzleme sırasında oluşan Hyper-V hiper çağrılar hakkında veri sağlar.
iz.SekmeResimBölümleriKullan() Görüntünün bölümleriyle ilgili bir izlemeden veri sağlar. CPU Kullanımı (Örneklenmiş) tablosunun Bölüm Adı sütunu
iz. UseInterruptHandlingData() Kesme Hizmeti Yordamı (ISR) ve Ertelenmiş Yordam Çağrısı (DPC) etkinliği hakkındaki bir izleme kaydından veri sağlar. DPC/ISR tablosu
iz.UseMarks() Bir izlemeden gelen işaretleri (etiketli zaman damgaları) sağlar. İşaretler tablosu
trace.MemoryKullanımVerisiKullan() Toplam sistem belleği kullanımıyla ilgili bir izlemeden veri sağlar. Bellek Kullanımı tablosu
izleme.UseMetadata() Daha fazla işlem yapmadan kullanılabilir izleme meta verileri sağlar. Sistem Yapılandırması, İzlemeler ve Genel
izleme.UsePlatformIdleStates() Bir sistemin hedef ve gerçek platform boşta durumları hakkında bir iz kaydından veri sağlar. Platform Bekleme Durumu tablosu
izleme.UsePoolAllocations() Çekirdek havuzu bellek kullanımına dair bir izlemenin verilerini sağlar. Havuz Özeti tablosu
iz. UsePowerConfigurationData() Sistem güç yapılandırması hakkında bir izleme kaydından veri sağlar. Sistem Yapılandırması, Güç Ayarları
izleme.UsePowerDependencyCoordinatorData() Aktif güç bağımlılığı koordinatörünün aşamalarıyla ilgili bir iz kaydından veri sağlar. Bildirim Aşaması Özeti tablosu
iz. UseProcesses() İzleme sırasında etkin olan işlemler ve bunların görüntüleri ve PDB'leri hakkında veri sağlar. İşlemler tablosu; Görüntüler tablosu; Simgeler Hub'ı
iz. UseProcessorCounters() İşlemci Sayacı İzleyicisi'nden (PCM) işlemci performans sayacı değerleriyle ilgili bir izlemeden veri sağlar.
izleme.UseProcessorFrequencyData() İşlemcilerin çalıştırıldığı sıklık hakkında bir izlemeden veri sağlar. İşlemci Sıklığı tablosu (Tür Gerçek olduğunda)
iz.KullanıcıİşlemciProfilVerisi() Etkin işlemci güç profiliyle ilgili bir izlemeden veri sağlar. İşlemci Profilleri tablosu
iz. UseProcessorParkingData() Hangi işlemcilerin park edilmiş veya park edilmemiş olduğuyla ilgili bir izlemeden veri sağlar. İşlemci Park Durumu tablosu
iz. UseProcessorParkingLimits() İzin verilen en fazla park edilmemiş işlemci sayısı hakkında bir izleme verisi sağlar. Core Parking Cap State tablosu
iz. UseProcessorQualityOfServiceData() Her işlemci için hizmet düzeyi kalitesiyle ilgili bir izlemeden veri sağlar. İşlemci Qos Sınıfı tablosu
iz.UseProcessorThrottlingData() İşlemci maksimum frekans kısıtlama ile ilgili bir izlemeden veri sağlar. İşlemci Kısıtlamaları tablosu
izleme.UseReadyBootData() Hazır Önyükleme'den önyükleme ön alma etkinliğiyle ilgili bir izlemeden veri sağlar. Hazır Başlatma Olayları tablosu
izleme.UseReferenceSetData() Her işlem tarafından kullanılan sanal bellek sayfalarına ilişkin bir izleme bilgisi sağlar. Referans Kümesi tablosu
iz.UseRegionsOfInterest() Xml yapılandırma dosyasında belirtilen bir izden adlandırılmış ilgi alanı aralıklarını sağlar. İlgi Alanları tablosu
iz. UseRegistryData() İzleme sırasında kayıt defteri etkinliği hakkında veri sağlar. Kayıt defteri tablosu
iz. UseResidentSetData() Her işlem için fiziksel bellekte yer alan sanal bellek sayfaları hakkında bir izlemeden veri sağlamaktadır. Yerleşik Küme tablosu
izleme.UseRundownData() Bir izden, iz verisi toplama işleminin gerçekleştiği aralıklar hakkında bilgi sağlar. Grafik zaman çizelgesinde gölgeli bölgeler
iz. UseScheduledTasks() İzleme sırasında çalıştırılan zamanlanmış görevler hakkında veri sağlar. Zamanlanmış Görevler tablosu
iz.UseServices() Etkin olan veya izleme sırasında durumlarının yakalanmış olduğu hizmetler hakkında veri sağlar. Hizmetler tablosu; Sistem Yapılandırması, Hizmetler
İzleriKullan() İzleme sırasında kaydedilen yığınlar hakkında veri sağlar.
iz.UseStackEvents() İzleme sırasında kaydedilen yığınlarla ilişkili olaylar hakkında veri sağlar. Stacks tablosu
iz.UseStackTags() Bir izlemedeki yığınları XML yapılandırma dosyasında belirtildiği gibi yığın etiketlerine gruplandıran bir eşleyici sağlar. Yığın Etiketi ve Çerçeve Yığın Etiketleri gibi sütunlar
iz.SembollerKullan() Bir iz için sembolleri yükleme olanağı sağlar. Sembol Yollarını Yapılandırma; Sembolleri Yükle
izleme.Syscalls() kullan İzleme sırasında gerçekleşen sistem çağrıları hakkında veri sağlar. Sistem çağrıları tablosu
izleme.UseSystemMetadata() Bir izleme kaydından sistem genelinde genel meta veriler sağlar. Sistem Yapılandırması
izleme.UseSystemPowerSourceData() Etkin sistem güç kaynağı (AC ve DC) hakkında bir izlemeden veri sağlar. Sistem Güç Kaynağı tablosu
iz.UseSystemSleepData() Genel sistem güç durumuyla ilgili bir izlemeden veri sağlar. Power Transition tablosu
iz.UseTargetCpuIdleStates() Hedef CPU C durumları hakkında bir izden veri sağlar. CPU Boşta Durumları tablosu (Tür Hedef olduğunda)
izleme.UseTargetProcessorFrequencyData() Hedef işlemci frekansları hakkında bir iz verisi sağlar. İşlemci Sıklığı tablosu (Tür Hedef olduğunda)
izleme.UseThreads() İzleme sırasında aktif olan iş parçacıkları hakkında veri sağlar. İş Parçacığı Ömürleri Tablosu
TraceTraceIstatistikleriniKullan() bir izlemedeki olaylar hakkında istatistikler sağlar. Sistem Yapılandırması, İzleme İstatistikleri
iz. UseUtcData() Microsoft'un Evrensel Telemetri İstemcisi (UTC) kullanılarak gerçekleştirilen telemetri etkinliği hakkındaki bir izlemeden gelen verileri sağlar. Utc tablosu
odaklanmaPenceresiKullan() Odaktaki etkin kullanıcı arabirimi penceresinde yapılan değişikliklerle ilgili bir izlemeden veri sağlar. Odak tablosundaki pencere
izleme. UseWindowsTracePreprocessorEvents() İzleme verilerinden alınan Windows yazılım izleme ön işlemcisi (WPP) olaylarını sağlar. WPP İzleme tablosu; Genel Olaylar tablosu (Olay Türü WPP olduğunda)
izleme.UseWinINetData() Windows internet (WinINet) aracılığıyla İnternet etkinliğiyle ilgili bir izlemeden veri sağlar. Ayrıntılar tablosunu indirin
iz. UseWorkingSetData() Her işlem veya çekirdek kategorisi için çalışma kümesinde yer alan sanal bellek sayfaları hakkındaki bir izlemeden veri sağlar. Sanal Bellek Anlık Görüntüleri tablosu

Ayrıca tüm kullanılabilir izleme verileri için ITraceSource'ta uzantı yöntemlerine bakın veya IntelliSense tarafından gösterilen "izleme" ile sağlanan yöntemi inceleyin.

Sonraki Adımlar

Bu genel bakışta TraceProcessor'ı ve erişebileceği yerleşik veri kaynaklarını kullanarak izleme verilerine erişmeyi öğrendiniz.

Sonraki adım, özel izleme verilerine erişmek için traceProcessor genişletmeyi öğrenmektir.