इसे छोड़कर कंटेंट पर जाएं

लेटेंसी माप और PresentMon

इस पृष्ठ पर

PCBenchmarkX अलग से आंतरिक प्रोसेसिंग विलंबता और फ़्रेम आउटपुट विलंबता मापता है। ये सॉफ़्टवेयर मेट्रिक्स माउस क्लिक से स्क्रीन पर पिक्सेल के चमकने तक के पूरे पथ का वर्णन नहीं करते। पूरा मापन चक्र कार्यप्रणाली में वर्णित है।

स्वयं का सॉफ़्टवेयर उद्दीपन

Section titled “स्वयं का सॉफ़्टवेयर उद्दीपन”

निरंतर प्रवाह नियतात्मक अंतरालों 8-12 मिसे पर संकेत उत्पन्न करता है। यदि Windows अनुमति देता है, तो यह उच्च परिशुद्धता वाला प्रतीक्षारत टाइमर बनाता है; अन्यथा सामान्य प्रतीक्षारत टाइमर का उपयोग करता है। घटना की प्रतीक्षा निरंतर पोलिंग के बिना होती है, जो कर्नेल पर भार डालती। सिस्टम टाइमर का वैश्विक रिज़ॉल्यूशन इस दौरान नहीं बदलता।

प्रत्येक संकेत के लिए निर्धारित समय-सीमा, जनरेटर का जागरण, वास्तविक संकेत, प्राप्तकर्ता का जागरण, सिमुलेशन, कमांड भेजना, GPU टाइमस्टैम्प और प्रदर्शन घटनाएँ लॉग की जाती हैं। एक सामान्य फ़्रेम पहचानकर्ता सभी चरणों को जोड़ता है।

निर्धारित समय-सीमा → जनरेटर का जागरण → संकेत
↓
प्राप्तकर्ता का जागरण
↓
CPU → कमांड → GPU
↓
Present → आउटपुट घटना

इन टेपों में टाइमर की देरी और प्राप्तकर्ता के जागरण की विलंबता दोनों अलग-अलग दिखती हैं। Core Latency की शुरुआत वास्तविक संकेत है, इसलिए इस मेट्रिक में निर्धारित समय-सीमा से संकेत तक का चरण नहीं गिना जाता।

विलंबता पथ का चरण-वार विभाजन

Section titled “विलंबता पथ का चरण-वार विभाजन”

परिणाम में मापे गए पथ latency_path का चरण-वार विभाजन होता है — Baseline और Loaded के लिए अलग-अलग। चरण वास्तविक संकेत से गिने जाते हैं:

चरण क्या मापता है
signal_to_consumer_wake संकेत से प्राप्तकर्ता के जागरण तक
cpu_processing CPU-प्रोसेसिंग: सिमुलेशन और फ़्रेम डेटा की तैयारी
cpu_end_to_submit_start CPU-कार्य के अंत से भेजने की तैयारी शुरू होने तक का विराम
workload_submit_cpu_span ग्राफ़िक्स API कमांड की तैयारी और रिकॉर्डिंग
submit_start_to_gpu_begin तैयारी शुरू होने से GPU-कार्य शुरू होने तक; यह शुद्ध कतार विलंबता नहीं है
gpu_execution स्वयं GPU-कार्य का निष्पादन, GPU टिक्स में
presentation spans प्रदर्शन: Present का आवरण और संकेत से तथा GPU-कार्य के अंत से ScreenTime तक के अंतराल

प्रत्येक चरण आँकड़ों और प्रतिशतकों के साथ वितरण के रूप में दिया जाता है। खंड प्रत्येक अंकन युग्म के लिए अलग-अलग गिने जाते हैं, न कि दो माध्यिकाओं के घटाव से। यदि चरण का अंतिम अंकन अनुपस्थित या अविश्वसनीय है, तो उसका वितरण खाली रहता है — कोई स्थानापन्न मान नहीं होता। टाइमर की देरी (निर्धारित समय-सीमा और वास्तविक संकेत का अंतर) संकेत से पहले के अलग निदान के रूप में दर्ज की जाती है और पथ के कुल मानों में शामिल नहीं होती।

QPC और स्वयं के GPU timestamps

Section titled “QPC और स्वयं के GPU timestamps”

CPU-समय QueryPerformanceCounter के माध्यम से दर्ज किया जाता है। GPU के लिए इंजन मापे जाने वाले कार्य के चारों ओर दो timestamp query रखता है, GetTimestampFrequency के माध्यम से कतार की आवृत्ति प्राप्त करता है और टिक्स के अंतर को मिलीसेकंड में बदलता है:

GPU work, ms = (GPU_end − GPU_begin) × 1000 / GPU_frequency

D3D12 timing पर Microsoft के दस्तावेज़ के अनुसार, timestamp query पाइपलाइन के अंत तक कार्य की प्रगति दर्शाता है, और GPU तथा CPU काउंटर GetClockCalibration के माध्यम से जोड़े जाते हैं।

GPU/QPC का अंशांकन युग्म GPU-कार्य के पूरा होने को उसी समय-रेखा पर व्यक्त करने देता है जिस पर संकेत है:

GPU_completion_QPC = calibration_QPC +
(GPU_end − calibration_GPU) × QPC_frequency / GPU_frequency
Core Latency, ms =
(GPU_completion_QPC − signal_QPC) × 1000 / QPC_frequency

इस अनुमान की सटीकता काफ़ी हद तक इस पर निर्भर करती है कि CPU और GPU घड़ियाँ कितनी सटीकता से मिलाई गई हैं। यह फिर भी माउस के USB पथ, मैट्रिक्स स्कैनिंग समय या पिक्सेल की प्रतिक्रिया को कवर नहीं करता। Microsoft अलग से उच्च-परिशुद्धता QPC अंकन की बारीकियाँ बताता है।

Baseline इस लोड के न्यूनतम विन्यास में विलंबता मापता है। Loaded 8.333333 मिसे पर अंशांकित GPU-लोड के साथ काम करता है, यानी लगभग 120 हर्ट्ज़ के गणना बजट पर। भौतिक मॉनिटर की आवृत्ति भिन्न हो सकती है।

अंशांकन शेडर के भीतर जटिलता को 1-4096 की सीमा में बदलता है। पासों की संख्या निश्चित रहती है: चार पोस्टपास। पहले लक्ष्य समय के आसपास सीमा चुनी जाती है, फिर उसे परिष्कृत किया जाता है और चयनित विन्यास की जाँच की जाती है। तेज़ वीडियो कार्ड पर वही समय लेने के लिए अधिक जटिल कार्य चाहिए।

Performance में कार्य की मात्रा निश्चित है। Loaded Latency में लोड इस तरह अंशांकित किया जाता है कि GPU-कार्य का समय विभिन्न वीडियो कार्डों पर करीब हो। प्राप्त समय अंकन मापन के बाद सामान्यीकृत नहीं किए जाते।

विलंबता परीक्षण के फ़्रेम आउटपुट एक अलग प्रस्तुति पथ से जाते हैं: flip-discard मोड में बिना-किनारे वाली विंडो, अधिकतम फ़्रेम विलंबता (maximum frame latency) 1, अपेक्षित DXGI ऑब्जेक्ट और tearing, यदि सिस्टम इसे समर्थन करता है। यह पथ निश्चित प्रदर्शन लोड से अलग है, जो स्क्रीन बफ़र के बाहर निष्पादित होता है और Present नहीं करता।

प्रदर्शन घटनाओं के लिए PresentMon 2.5.1 लाइब्रेरी का उपयोग किया जाता है। यह Windows में ग्राफ़िक्स घटनाओं के विश्लेषण की ETW परियोजना है, जिसका वर्णन इसके लेखकों ने किया है। इस मापन कन्वेयर में Procmon / Process Monitor लागू नहीं होता।

PCBenchmarkX अपना स्वयं का संग्रह सत्र शुरू करता है, अपनी प्रक्रिया की घटनाएँ चुनता है और फ़्रेमों को सॉफ़्टवेयर संकेतों से जोड़ता है। इसके लिए अलग सेवा और अलग PresentMon के मैनुअल लॉन्च की आवश्यकता नहीं है।

अतिरिक्त अंतराल सहेजे जाते हैं:

  • संकेत से Present तक;
  • Present से ScreenTime तक;
  • संकेत से ScreenTime तक।

ScreenTime फ़्रेम प्रदर्शन की सॉफ़्टवेयर घटना है; स्क्रीन से प्रकाश मापने के लिए फ़ोटोडायोड का उपयोग नहीं किया जाता। प्रदर्शन मेट्रिक्स PC Score में शामिल नहीं हैं; इसमें क्या शामिल है, यह अंक गणना में वर्णित है। ETW सत्र शुरू करने के लिए व्यवस्थापक के रूप में लॉन्च या «प्रदर्शन लॉग उपयोगकर्ता» समूह की सदस्यता की आवश्यकता हो सकती है। यदि सत्र शुरू नहीं हो सका, तो इस निदान का ब्लॉक नहीं होगा, और विफलता परिणाम में स्पष्ट रूप से दर्ज की जाती है। डेटा की अनुपस्थिति शून्य विलंबता के बराबर नहीं है।

PresentMon का GPU-समय भी स्वयं के D3D12-समय से अलग संग्रहीत किया जाता है। PresentMon के डेवलपर्स HAGS पर GPU-मेट्रिक्स की सटीकता की सीमाएँ बताते हैं। इसलिए इंजन स्वयं के GPU timestamps को ETW के अनुमान से प्रतिस्थापित नहीं करता।

PCBenchmarkX में क्या विकसित किया गया

Section titled “PCBenchmarkX में क्या विकसित किया गया”

PCBenchmarkX में संकेत जनरेटर, फ़्रेम चरणों का मिलान, CPU-सिमुलेशन, D3D12-लोड, Loaded का अंशांकन, दोहराए जाने वाले ब्लॉकों का क्रम, मापन का संग्रह, सांख्यिकीय प्रसंस्करण और अंक मॉडल विकसित किए गए। QPC और D3D12 Windows प्रदान करता है। ETW के माध्यम से ग्राफ़िक्स घटनाओं के संग्रह के लिए ओपन-सोर्स परियोजना PresentMon का उपयोग किया जाता है।

तकनीकी जानकारी और बाहरी स्रोत 2026-09-20 को इंजन 0.5.2 के लिए सत्यापित किए गए।