Перейти к содержимому

Upimaji wa ucheleweshaji na PresentMon

На этой странице

PCBenchmarkX hupima kando ucheleweshaji wa ndani wa uchakataji na ucheleweshaji wa utoaji wa fremu. Vipimo hivi vya programu havielezii njia yote kuanzia mbofyo wa kipanya hadi mwanga wa pikseli kwenye skrini. Mzunguko kamili wa upimaji umeelezwa katika mbinu.

Mtiririko wa kudumu huzalisha ishara kwa vipindi vilivyoamuliwa 8-12 ms. Ikiwa Windows inaruhusu, huunda kipima muda cha kusubiri chenye usahihi wa juu; vinginevyo hutumia kipima muda cha kawaida cha kusubiri. Kusubiri tukio hufanyika bila uchunguzi wa kuendelea ambao ungetumia kernel. Azimio la jumla la kipima muda cha mfumo halibadiliki kwa hili.

Kwa kila ishara hurekodiwa muda uliopangwa, uamsho wa kizalishaji, ishara halisi, uamsho wa mpokeaji, uigaji, utumaji wa amri, mihuri ya muda ya GPU na matukio ya kuonyesha. Kitambulisho cha jumla cha fremu huunganisha hatua zote.

Muda uliopangwa → uamsho wa kizalishaji → ishara
↓
uamsho wa mpokeaji
↓
CPU → amri → GPU
↓
Present → tukio la utoaji

Katika mikanda hii huonekana kando ucheleweshaji wa kipima muda na ucheleweshaji wa uamsho wa mpokeaji. Mwanzo wa Core Latency ni ishara halisi, kwa hiyo hatua kutoka muda uliopangwa hadi ishara haijahesabiwa katika kipimo hiki.

Matokeo yana mgawanyo wa hatua kwa hatua wa njia iliyopimwa latency_path — kando kwa Baseline na Loaded. Hatua huhesabiwa kuanzia ishara halisi:

Hatua Kinachopimwa
signal_to_consumer_wake kutoka ishara hadi uamsho wa mpokeaji
cpu_processing uchakataji wa CPU: uigaji na utayarishaji wa data ya fremu
cpu_end_to_submit_start mapumziko kutoka mwisho wa kazi ya CPU hadi mwanzo wa utayarishaji wa utumaji
workload_submit_cpu_span utayarishaji na uandishi wa amri za API ya grafiki
submit_start_to_gpu_begin kutoka mwanzo wa utayarishaji hadi mwanzo wa kazi ya GPU; huu si ucheleweshaji safi wa foleni
gpu_execution utekelezaji wenyewe wa kazi ya GPU, kwa mizunguko ya GPU
presentation spans uonyeshaji: kifuniko Present na vipindi kutoka ishara na kutoka mwisho wa kazi ya GPU hadi ScreenTime

Kila hatua hutolewa kwa mgawanyo wenye takwimu na asilimia. Sehemu huhesabiwa kwa kila jozi ya alama kando, si kwa kutoa wastani mbili. Ikiwa alama ya mwisho ya hatua haipo au haiaminiki, mgawanyo wake hubaki mtupu — hakuna thamani za kubuni. Ucheleweshaji wa kipima muda (tofauti kati ya muda uliopangwa na ishara halisi) hurekodiwa kama uchunguzi tofauti kabla ya ishara na hauingii katika thamani za jumla za njia.

Muda wa CPU hurekodiwa kupitia QueryPerformanceCounter. Kwa GPU injini huweka timestamp query mbili kuzunguka kazi inayopimwa, hupata mzunguko wa foleni kupitia GetTimestampFrequency na kubadilisha tofauti ya mizunguko kuwa milisekunde:

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

Kwa nyaraka za Microsoft kuhusu D3D12 timing, timestamp query huonyesha kupita kwa kazi hadi mwisho wa bomba, na vihesabu vya GPU na CPU huunganishwa kupitia GetClockCalibration.

Jozi ya urekebishaji ya GPU/QPC huruhusu kuonyesha kukamilika kwa kazi ya GPU kwenye mhimili huo wa muda kama ishara:

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

Usahihi wa makadirio haya hutegemea sana jinsi saa za CPU na GPU zinavyolinganishwa kwa usahihi. Bado haifuniki njia ya USB ya kipanya, muda wa kuchanganua tumbo au mwitikio wa pikseli. Microsoft hueleza kando mambo ya kina ya alama za QPC zenye usahihi wa juu.

Baseline hupima ucheleweshaji katika usanidi mdogo wa mzigo huu. Loaded hufanya kazi na mzigo wa GPU uliorekebishwa kwa 8,333333 ms, yaani kwa bajeti ya kukokotoa ya takriban 120 Hz. Kifaa cha kuonyesha halisi kinaweza kuwa na mzunguko tofauti.

Urekebishaji hubadilisha ugumu ndani ya shader katika kiwango 1-4096. Idadi ya mizunguko hubaki isiyobadilika: mizunguko minne ya baada ya kuchakata. Kwanza huchaguliwa kiwango karibu na muda lengwa, kisha hufanywa ufafanuzi na usanidi uliochaguliwa huhakikiwa. Ili kutumia muda huo huo kwenye kadi ya grafiki ya haraka, kazi ngumu zaidi inahitajika.

Katika Performance kiasi cha kazi kimewekwa. Katika Loaded Latency mzigo hurekebishwa ili muda wa kazi ya GPU uwe karibu kwenye kadi tofauti za grafiki. Alama za muda zilizopatikana hazirekebishwi baada ya upimaji.

Utoaji wa fremu za jaribio la ucheleweshaji hupitia njia tofauti ya uonyeshaji: dirisha lisilo na mipaka katika hali ya flip-discard, ucheleweshaji wa juu wa fremu (maximum frame latency) 1, kitu cha DXGI kinachotarajiwa na tearing, ikiwa mfumo unaiunga mkono. Njia hii imetenganishwa na mzigo usiobadilika wa utendaji, ambao hufanyika nje ya buffer ya skrini na hausababishi Present.

Kwa matukio ya kuonyesha hutumika maktaba ya PresentMon 2.5.1. Ni mradi wa ETW wa kuchanganua matukio ya grafiki katika Windows, ulioelezwa na waandishi wake. Procmon / Process Monitor haitumiwi katika mfululizo huu wa upimaji.

PCBenchmarkX huanzisha kikao chake cha kukusanya, huchagua matukio ya mchakato wake na huunganisha fremu na ishara za programu. Kwa hili hakuna haja ya huduma tofauti na kuanzisha kwa mkono PresentMon tofauti.

Vipindi vya ziada huhifadhiwa:

  • kutoka ishara hadi Present;
  • kutoka Present hadi ScreenTime;
  • kutoka ishara hadi ScreenTime.

ScreenTime ni tukio la programu la kuonyesha fremu; photodiode ya kupima mwanga kutoka skrini haitumiwi. Vipimo vya uonyeshaji haviingii katika PC Score; kinachoingia ndani yake kimeelezwa katika hesabu ya alama. Kuanzisha kikao cha ETW kunaweza kuhitaji kuendeshwa kama msimamizi au uanachama katika kikundi cha «Watumiaji wa kumbukumbu ya utendaji». Ikiwa kikao hakikuweza kuanzishwa, sehemu hii ya uchunguzi haitakuwepo, na hitilafu hurekodiwa wazi katika matokeo. Ukosefu wa data haimaanishi ucheleweshaji wa sifuri.

Muda wa GPU wa PresentMon pia huhifadhiwa kando na muda wake wa D3D12. Waendelezaji wa PresentMon wanabainisha mipaka ya usahihi wa vipimo vya GPU wakati wa HAGS. Kwa hiyo injini haibadilishi GPU timestamps zake kwa makadirio kutoka ETW.

Katika PCBenchmarkX zimeundwa kizalishaji cha ishara, ulinganishaji wa hatua za fremu, uigaji wa CPU, mizigo ya D3D12, urekebishaji wa Loaded, mpangilio wa vitalu vinavyojirudia, ukusanyaji wa vipimo, uchakataji wa takwimu na modeli ya alama. QPC na D3D12 hutolewa na Windows. Kwa kukusanya matukio ya grafiki kupitia ETW hutumika mradi huria wa PresentMon.

Taarifa za kiufundi na vyanzo vya nje vimehakikiwa 2026-09-20 kwa injini 0.5.2.