تاخیر کی پیمائش اور PresentMon
На этой странице
PCBenchmarkX اندرونی پروسیسنگ لیٹنسی اور فریم آؤٹ پٹ لیٹنسی کو الگ الگ ماپتا ہے۔ یہ سافٹ ویئر میٹرکس ماؤس کلک سے اسکرین پر پکسل کے چمکنے تک کے پورے راستے کو بیان نہیں کرتیں۔ مکمل پیمائشی چکر طریقہ کار میں بیان کیا گیا ہے۔
اپنا سافٹ ویئر محرک
Заголовок раздела «اپنا سافٹ ویئر محرک»مستقل اسٹریم 8-12 ملی سیکنڈ کے متعین وقفوں پر سگنلز پیدا کرتا ہے۔ اگر Windows اجازت دے تو یہ اعلیٰ درستگی کا انتظار کرنے والا ٹائمر بناتا ہے؛ ورنہ عام انتظار کرنے والا ٹائمر استعمال کرتا ہے۔ ایونٹ کا انتظار مسلسل پولنگ کے بغیر ہوتا ہے، جو کرنل کو مصروف رکھتی۔ اس دوران سسٹم ٹائمر کی عالمی ریزولوشن تبدیل نہیں ہوتی۔
ہر سگنل کے لیے شیڈول شدہ وقت، جنریٹر کی بیداری، اصل سگنل، وصول کنندہ کی بیداری، سمولیشن، کمانڈز کی بھیجنا، GPU ٹائم اسٹیمپ اور پریزنٹ ایونٹس لاگ کیے جاتے ہیں۔ فریم کا مشترکہ شناخت کنندہ تمام مراحل کو جوڑتا ہے۔
شیڈول شدہ وقت → جنریٹر کی بیداری → سگنل ↓ وصول کنندہ کی بیداری ↓ CPU → کمانڈز → GPU ↓ Present → آؤٹ پٹ ایونٹان ٹائم لائنوں میں ٹائمر کی تاخیر اور وصول کنندہ کی بیداری کی لیٹنسی دونوں الگ الگ نظر آتی ہیں۔ Core Latency کا آغاز اصل سگنل ہے، اس لیے اس میٹرک میں شیڈول شدہ وقت سے سگنل تک کا مرحلہ شمار نہیں ہوتا۔
لیٹنسی کے راستے کی فی مرحلہ تقسیم
Заголовок раздела «لیٹنسی کے راستے کی فی مرحلہ تقسیم»نتیجہ ماپے گئے راستے 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
Заголовок раздела «QPC اور اپنے GPU timestamps»CPU وقت QueryPerformanceCounter کے ذریعے ریکارڈ ہوتا ہے۔ GPU کے لیے انجن ماپے جانے والے کام کے گرد دو timestamp query رکھتا ہے، GetTimestampFrequency کے ذریعے قطار کی فریکوئنسی حاصل کرتا ہے اور ٹکس کے فرق کو ملی سیکنڈ میں بدلتا ہے:
GPU work, ms = (GPU_end − GPU_begin) × 1000 / GPU_frequencyMicrosoft کی D3D12 timing سے متعلق دستاویزات کے مطابق، 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
Заголовок раздела «Baseline اور Loaded»Baseline اس لوڈ کی کم سے کم ترتیب میں لیٹنسی ماپتا ہے۔ Loaded 8,333333 ملی سیکنڈ پر کیلیبریٹ شدہ GPU لوڈ کے ساتھ کام کرتا ہے، یعنی تقریباً 120 ہرٹز کے کمپیوٹیشنل بجٹ پر۔ فزیکل مانیٹر کی فریکوئنسی مختلف ہو سکتی ہے۔
کیلیبریشن شیڈر کے اندر پیچیدگی کو 1-4096 کی حد میں تبدیل کرتی ہے۔ پاسز کی تعداد مقرر رہتی ہے: چار پوسٹ پاسز۔ پہلے ہدف وقت کے گرد ایک حد منتخب کی جاتی ہے، پھر اسے بہتر بنایا جاتا ہے اور منتخب ترتیب کی تصدیق کی جاتی ہے۔ تیز ویڈیو کارڈ پر وہی وقت لینے کے لیے زیادہ پیچیدہ کام درکار ہوتا ہے۔
کارکردگی کے ٹیسٹوں میں کام کا حجم مقرر ہوتا ہے۔ Loaded Latency میں لوڈ اس طرح کیلیبریٹ ہوتا ہے کہ GPU کام کا وقت مختلف ویڈیو کارڈز پر قریب قریب ہو۔ پیمائش کے بعد حاصل شدہ ٹائم اسٹیمپس کو نارملائز نہیں کیا جاتا۔
لیٹنسی ٹیسٹ کے فریم آؤٹ پٹ الگ پریزنٹیشن راستے سے گزرتے ہیں: flip-discard موڈ میں بارڈر لیس ونڈو، زیادہ سے زیادہ فریم لیٹنسی (maximum frame latency) 1, متوقع DXGI آبجیکٹ اور tearing، اگر سسٹم اسے سپورٹ کرے۔ یہ راستہ مقررہ کارکردگی لوڈ سے الگ ہے، جو اسکرین بفر سے باہر چلتا ہے اور Present پیدا نہیں کرتا۔
PresentMon کا کردار
Заголовок раздела «PresentMon کا کردار»پریزنٹ ایونٹس کے لیے 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 سیشن شروع کرنے کے لیے ایڈمنسٹریٹر کے طور پر چلانا یا «کارکردگی لاگ صارفین» گروپ کی رکنیت درکار ہو سکتی ہے۔ اگر سیشن شروع نہ ہو سکے تو اس تشخیص کا بلاک نہیں ہوگا، اور ناکامی نتیجے میں واضح طور پر ریکارڈ ہوگی۔ ڈیٹا کی عدم موجودگی صفر لیٹنسی کے برابر نہیں۔
PresentMon کا GPU وقت بھی اپنے D3D12 وقت سے الگ محفوظ ہوتا ہے۔ PresentMon کے ڈویلپرز HAGS کے ساتھ GPU میٹرکس کی درستگی کی حدود نوٹ کرتے ہیں۔ اس لیے انجن اپنے GPU timestamps کو ETW کے تخمینے سے تبدیل نہیں کرتا۔
PCBenchmarkX میں کیا تیار کیا گیا
Заголовок раздела «PCBenchmarkX میں کیا تیار کیا گیا»PCBenchmarkX میں سگنل جنریٹر، فریم مراحل کی مطابقت، CPU سمولیشن، D3D12 لوڈز، Loaded کیلیبریشن، دہرائے جانے والے بلاکس کی ترتیب، پیمائشوں کا جمع، شماریاتی پروسیسنگ اور اسکور ماڈل تیار کیے گئے۔ QPC اور D3D12 Windows فراہم کرتا ہے۔ ETW کے ذریعے گرافکس ایونٹس جمع کرنے کے لیے اوپن سورس پروجیکٹ PresentMon استعمال ہوتا ہے۔
پیمائش کی تفصیل 2026-10-02 کو انجن 0.8.0 کے لیے اپ ڈیٹ کی گئی۔ QPC اور D3D12 سے متعلق Microsoft کی دستاویزات اسی تاریخ کو دوبارہ جانچی گئیں۔ PresentMon کا حوالہ استعمال شدہ ورژن 2.5.1 سے متعلق ہے۔
