Görev Paralel Kitaplığı ve PLINQ'da ETW Olayları
Hem Görev Paralel Kitaplığı hem de PLINQ, Windows Performans Analizi gibi araçları kullanarak uygulamaların profilini oluşturmak ve sorun gidermek için kullanabileceğiniz Windows için Olay İzleme (ETW) olayları oluşturur. Ancak çoğu senaryoda, paralel uygulama kodunun profilini oluşturmanın en iyi yolu Visual Studio'da Eşzamanlılık Görselleştiricisi'ni kullanmaktır.
Görev Paralel Kitaplığı ETW Olayları
EVENT_HEADER yapısında, tarafından Parallel.ForParallel.ForEach oluşturulan olaylar için ProviderId GUID değeri şu Parallel.Invoke şekildedir:
0x2e5dba47, 0xa3d2, 0x4d16, 0x8e, 0xe0, 0x66, 0x71, 0xff, 0xdc, 0xd7, 0xb5
Paralel Döngü Başlangıcı
EVENT_DESCRIPTOR. Görev = 1
EVENT_DESCRIPTOR. Kimlik = 1
Kullanıcı Verileri
Ad | Tür | Açıklama |
---|---|---|
OriginatingTaskSchedulerID | System.Int32 | Döngüsü başlatan TaskScheduler'ın kimliği. |
OriginatingTaskID | System.Int32 | Döngünün başlatıldığını görevin kimliği. |
ForkJoinContextID | System.Int32 | Çatal/birleştirme semantiğine sahip olaylar için iç içe yerleştirmeyi ve çiftleri göstermek için kullanılan benzersiz tanımlayıcı. |
OperationType | System.Int32 | Döngünün türünü gösterir: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
InclusiveFrom | System.Int64 | Döngü sayacının başlangıç değeri |
Özel Kullanım | System.Int64 | Döngü sayacının bitiş değeri |
Paralel Döngü Ucu
EVENT_DESCRIPTOR. Görev = 2
EVENT_DESCRIPTOR. Kimlik = 2
Kullanıcı Verileri
Ad | Tür | Açıklama |
---|---|---|
OriginatingTaskSchedulerID | System.Int32 | Döngüsü başlatan TaskScheduler'ın kimliği. |
OriginatingTaskID | System.Int32 | Döngünün başlatıldığını görevin kimliği. |
ForkJoinContextID | System.Int32 | Çatal/birleştirme semantiğine sahip olaylar için iç içe yerleştirmeyi ve çiftleri göstermek için kullanılan benzersiz tanımlayıcı. |
totalIterations | System.Int64 | Toplam yineleme sayısı |
Paralel Çağırma Başlangıcı
EVENT_DESCRIPTOR. Görev = 3
EVENT_DESCRIPTOR. Kimlik = 3
Kullanıcı Verileri
Ad | Tür | Açıklama |
---|---|---|
OriginatingTaskSchedulerID | System.Int32 | Döngüsü başlatan TaskScheduler'ın kimliği. |
OriginatingTaskID | System.Int32 | Döngünün başlatıldığını görevin kimliği. |
ForkJoinContextID | System.Int32 | Çatal/birleştirme semantiğine sahip olaylar için iç içe yerleştirmeyi ve çiftleri göstermek için kullanılan benzersiz tanımlayıcı. |
totalIterations | System.Int64 | Toplam yineleme sayısı |
operationType | System.Int32 | Döngünün türünü gösterir: 1 = ParallelInvoke 2 = ParallelFor 3 = ParallelForEach |
ActionCount | System.Int32 | Paralel çağırmada yürütülecek eylem sayısı. |
Paralel Çağırma Sonu
EVENT_DESCRIPTOR. Görev = 4
EVENT_DESCRIPTOR. Kimlik = 4
Kullanıcı Verileri
Ad | Tür | Açıklama |
---|---|---|
OriginatingTaskSchedulerID | System.Int32 | Döngüsü başlatan TaskScheduler'ın kimliği. |
OriginatingTaskID | System.Int32 | Döngünün başlatıldığını görevin kimliği. |
ForkJoinContextID | System.Int32 | Çatal/birleştirme semantiğine sahip olaylar için iç içe yerleştirmeyi ve çiftleri göstermek için kullanılan benzersiz tanımlayıcı. |
PLINQ ETW Olayları
The EVENT_HEADER. PLINQ için ProviderId GUID değeri:
0x159eeeec, 0x4a14, 0x4418, 0xa8, 0xfe, 0xfa, 0xab, 0xcd, 0x98, 0x78, 0x87
Paralel Sorgu Başlangıcı
EVENT_DESCRIPTOR. Görev = 1
EVENT_DESCRIPTOR. Kimlik = 1
Kullanıcı Verileri
Ad | Tür | Açıklama |
---|---|---|
OriginatingTaskSchedulerID | System.Int32 | Döngüsü başlatan TaskScheduler'ın kimliği. |
OriginatingTaskID | System.Int32 | Döngünün başlatıldığını görevin kimliği. |
Queryıd | System.Int32 | Benzersiz bir sorgu tanımlayıcısı. |
Paralel Sorgu Sonu
EVENT_DESCRIPTOR. Görev = 2
EVENT_DESCRIPTOR. Kimlik = 2
Kullanıcı Verileri
Ad | Tür | Açıklama |
---|---|---|
OriginatingTaskSchedulerID | System.Int32 | Döngüsü başlatan TaskScheduler'ın kimliği. |
OriginatingTaskID | System.Int32 | Döngünün başlatıldığını görevin kimliği. |
Queryıd | System.Int32 | Benzersiz bir sorgu tanımlayıcısı. |