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

लेटेंसी माप और 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 की सीमा में बदलता है। पासों की संख्या निश्चित रहती है: चार पोस्टपास। पहले लक्ष्य समय के आसपास सीमा चुनी जाती है, फिर उसे परिष्कृत किया जाता है और चयनित कॉन्फ़िगरेशन की जाँच की जाती है। तेज़ वीडियो कार्ड पर वही समय लेने के लिए अधिक जटिल कार्य की आवश्यकता होती है।

प्रदर्शन परीक्षणों में कार्य की मात्रा निश्चित होती है। 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 — यह फ़्रेम प्रदर्शन का सॉफ़्टवेयर इवेंट है; स्क्रीन से प्रकाश मापने के लिए फ़ोटोडायोड का उपयोग नहीं किया जाता। CPU/GPU/Latency के आधार मॉडल में लेटेंसी घटक के भीतर Baseline और Loaded के भार 20/80 हैं। प्रदर्शन मेट्रिक्स PC Score में शामिल नहीं हैं; उसमें क्या शामिल है, यह स्कोर गणना में वर्णित है। ETW सत्र शुरू करने के लिए व्यवस्थापक के रूप में लॉन्च या “Performance Log Users” समूह की सदस्यता की आवश्यकता हो सकती है। यदि सत्र शुरू नहीं हो सका, तो इस निदान का ब्लॉक नहीं होगा, और विफलता परिणाम में स्पष्ट रूप से दर्ज की जाती है। डेटा का अभाव शून्य लेटेंसी के बराबर नहीं है।

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

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

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

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

मापन का विवरण इंजन 0.8.0 के लिए 2026-10-02 को अद्यतन किया गया। QPC और D3D12 पर Microsoft का दस्तावेज़ इसी तिथि को पुनः जाँचा गया। PresentMon का संदर्भ उपयोग किए गए संस्करण 2.5.1 से संबंधित है।