Гудавы збой і паўза VPN адбываюцца ў адны і тыя ж дзесяць секунд, а ўтыліта паведамляе пра высокі паказнік з пазнакай «затрымка DPC». Спакуса — зрабіць выснову, што драйвер запавольвае тунель або што тунель нагружае драйвер. Ні адна з гэтых высноў не вынікае з таго ліку.

Тут задзейнічаны тры вымярэнні, і яны не маюць агульнай мяжы.

Тры лікі, тры межы

Адкладзены выклік працэдуры — гэта праца, якую драйвер адкладвае са свайго апрацоўшчыка перапыненняў, і час, праведзены ўнутры гэтых працэдур, — гэта лакальнае для працэсара вымярэнне, аднесенае да модуляў і функцый. Кругавы абыход рэха — назіранне за часам на сокеце, якое ствараюць сеткавы стек і аддалены адказнік. Падзея разрыву — пераход стану, зафіксаваны кліентам. Кожнае адказвае на пытанне, на якое не могуць адказаць іншыя, і супадзенне адзінак не робіць іх узаемазаменнымі.

Карысная дысцыпліна — назваць мяжу перад чытаннем значэння. Запішыце адзінку і мяжу побач. Калі інструмент паведамляе пра мілісекунды, спытайце: мілісекунды чаго — часу ўнутры працэдуры, часу чакання запуску ці часу да прыходу адказу.

Высокі лік у адной катэгорыі — гэта зачэпка, а ніколі не дыягназ.

Чытайце азначэнне за загалоўкам

Утыліты розняцца ў тым, што яны называюць затрымкай. Адны паведамляюць пра працягласць працэдур драйвера, іншыя — пра затрымку планавання, і гэтыя дзве велічыні могуць рухацца ў супрацьлеглых кірунках на адной машыне. Панэль, якая называе адну з іх проста «затрымка DPC», паведаміла вам менш, чым здаецца. Таму дзве панэлі могуць разыходзіцца ў ацэнцы машыны, якая зусім не змянілася.

Тая ж асцярожнасць дзейнічае і ўнутры аднаго інструмента аналізу. Уключаная працягласць вядзе працэдуру ад уваходу да выхаду, а выключаная працягласць сумуе толькі тыя фрагменты, дзе выконвалася сама гэтая працэдура. Выбар непатрэбнага слупка робіць выклікальніка вінаватым.

Лакальная праца драйвера і сеткавая затрымка таксама ўзаемадзейнічаюць, не зліваючыся. Надмерная актыўнасць, звязаная з перапыненнямі, можа затрымліваць адчувальную да часу працу на машыне, а перагружаны шлях можа затрымліваць пакеты, і абодва могуць быць праўдай падчас адной бачнай паўзы.

Змясціце кожнае назіранне ў адно акно

Трасоўка карысная толькі тады, калі вы чытаеце інтэрвал, які змяшчае сімптом. Запішыце трасоўку, падзею кліента і збой праграмы з часовымі пазнакамі, затым паглядзіце на адны і тыя ж секунды ва ўсіх трох. Максімум з гадзіннай трасоўкі і разрыў пазней пасля абеду — дзве незвязаныя высновы.

wpr -start CPU -filemode
wpr -stop vpn-trace.etl
xperf -i vpn-trace.etl -a dpcisr -o dpc.txt

Затым адкрыйце трасоўку ў інструменце аналізу і адсартуйце па працягласці ўнутры гэтага акна, а не па ўсім запісе. рэкамендацыі па аналізе працэсара апісвае прадстаўленне працягласці DPC/ISR, якое адносіць час да модуляў і функцый.

Пацвердзіце, што насамрэч адбылося з тунелем, пакуль вы там. Кароткачасовая страта трафіку праграмы не азначае, што кліент пачаў новыя перамовы, а поспех маленькай праверкі не даказвае, што ўсё астатняе працягвала працаваць.

Змяніце той кампанент, на які ўказваюць доказы

Загружаны модуль — гэта месца для даследавання, а не прыгавор. Ён можа выконваць працу, выкліканую іншым кампанентам або створанай вамі нагрузкай. Трымайце разам назву модуля, прыладу, версію драйвера і назіраны інтэрвал, бо менавіта гэты набор пастаўшчык можа выкарыстаць.

Адна змена за эксперымент — адзіны спосаб навучыцца з выніку. Правадное параўнанне звузіць абсяг, але яно адначасова змяняе радыёшлях і актыўнасць драйвера, таму стаўцеся да яго як да падказкі, а не як да доказу.

Стаўцеся да трасоўкі як да адчувальных даных. Яна можа змяшчаць назвы працэсаў і звесткі пра асяроддзе, таму ёй месца ў падтрыманым канале запісу, а не ў публічным далучэнні. Скажыце, на якое назіранне павінна была адказаць трасоўка.

Падобныя артыкулы