Высокая затрымка DPC не азначае павольны шлях VPN
Час драйвера, кругавыя абыходы рэха і падзеі сесіі блытаюць паміж сабой. Прачытайце, што вымярае кожны лічыльнік, перш чым змяняць кампанент.
Гудавы збой і паўза VPN адбываюцца ў адны і тыя ж дзесяць секунд, а ўтыліта паведамляе пра высокі паказнік з пазнакай «затрымка DPC». Спакуса — зрабіць выснову, што драйвер запавольвае тунель або што тунель нагружае драйвер. Ні адна з гэтых высноў не вынікае з таго ліку.
Тут задзейнічаны тры вымярэнні, і яны не маюць агульнай мяжы.
Тры лікі, тры межы
Адкладзены выклік працэдуры — гэта праца, якую драйвер адкладвае са свайго апрацоўшчыка перапыненняў, і час, праведзены ўнутры гэтых працэдур, — гэта лакальнае для працэсара вымярэнне, аднесенае да модуляў і функцый. Кругавы абыход рэха — назіранне за часам на сокеце, якое ствараюць сеткавы стек і аддалены адказнік. Падзея разрыву — пераход стану, зафіксаваны кліентам. Кожнае адказвае на пытанне, на якое не могуць адказаць іншыя, і супадзенне адзінак не робіць іх узаемазаменнымі.
Карысная дысцыпліна — назваць мяжу перад чытаннем значэння. Запішыце адзінку і мяжу побач. Калі інструмент паведамляе пра мілісекунды, спытайце: мілісекунды чаго — часу ўнутры працэдуры, часу чакання запуску ці часу да прыходу адказу.
Высокі лік у адной катэгорыі — гэта зачэпка, а ніколі не дыягназ.
Чытайце азначэнне за загалоўкам
Утыліты розняцца ў тым, што яны называюць затрымкай. Адны паведамляюць пра працягласць працэдур драйвера, іншыя — пра затрымку планавання, і гэтыя дзве велічыні могуць рухацца ў супрацьлеглых кірунках на адной машыне. Панэль, якая называе адну з іх проста «затрымка DPC», паведаміла вам менш, чым здаецца. Таму дзве панэлі могуць разыходзіцца ў ацэнцы машыны, якая зусім не змянілася.
Тая ж асцярожнасць дзейнічае і ўнутры аднаго інструмента аналізу. Уключаная працягласць вядзе працэдуру ад уваходу да выхаду, а выключаная працягласць сумуе толькі тыя фрагменты, дзе выконвалася сама гэтая працэдура. Выбар непатрэбнага слупка робіць выклікальніка вінаватым.
Лакальная праца драйвера і сеткавая затрымка таксама ўзаемадзейнічаюць, не зліваючыся. Надмерная актыўнасць, звязаная з перапыненнямі, можа затрымліваць адчувальную да часу працу на машыне, а перагружаны шлях можа затрымліваць пакеты, і абодва могуць быць праўдай падчас адной бачнай паўзы.
Змясціце кожнае назіранне ў адно акно
Трасоўка карысная толькі тады, калі вы чытаеце інтэрвал, які змяшчае сімптом. Запішыце трасоўку, падзею кліента і збой праграмы з часовымі пазнакамі, затым паглядзіце на адны і тыя ж секунды ва ўсіх трох. Максімум з гадзіннай трасоўкі і разрыў пазней пасля абеду — дзве незвязаныя высновы.
wpr -start CPU -filemode
wpr -stop vpn-trace.etl
xperf -i vpn-trace.etl -a dpcisr -o dpc.txt
Затым адкрыйце трасоўку ў інструменце аналізу і адсартуйце па працягласці ўнутры гэтага акна, а не па ўсім запісе. рэкамендацыі па аналізе працэсара апісвае прадстаўленне працягласці DPC/ISR, якое адносіць час да модуляў і функцый.
Пацвердзіце, што насамрэч адбылося з тунелем, пакуль вы там. Кароткачасовая страта трафіку праграмы не азначае, што кліент пачаў новыя перамовы, а поспех маленькай праверкі не даказвае, што ўсё астатняе працягвала працаваць.
Змяніце той кампанент, на які ўказваюць доказы
Загружаны модуль — гэта месца для даследавання, а не прыгавор. Ён можа выконваць працу, выкліканую іншым кампанентам або створанай вамі нагрузкай. Трымайце разам назву модуля, прыладу, версію драйвера і назіраны інтэрвал, бо менавіта гэты набор пастаўшчык можа выкарыстаць.
Адна змена за эксперымент — адзіны спосаб навучыцца з выніку. Правадное параўнанне звузіць абсяг, але яно адначасова змяняе радыёшлях і актыўнасць драйвера, таму стаўцеся да яго як да падказкі, а не як да доказу.
Стаўцеся да трасоўкі як да адчувальных даных. Яна можа змяшчаць назвы працэсаў і звесткі пра асяроддзе, таму ёй месца ў падтрыманым канале запісу, а не ў публічным далучэнні. Скажыце, на якое назіранне павінна была адказаць трасоўка.