Звуковий збій і пауза VPN потрапляють в одні й ті самі десять секунд, а утиліта повідомляє високе значення з позначкою «затримка DPC». Спокуса — зробити висновок, що драйвер сповільнює тунель або що тунель навантажує драйвер. Жоден із цих висновків із цього числа не випливає.

Тут задіяні три вимірювання, і вони не поділяють одну межу.

Три числа, три межі

Відкладений виклик процедури — це робота, яку драйвер відкладає зі свого обробника переривань, а час усередині цих процедур — локальне для процесора вимірювання, приписане модулям і функціям. Луна-обмін — це спостереження часу на сокеті, створене мережевим стеком і віддаленим відповідачем. Подія розриву — це перехід стану, записаний клієнтом. Кожне відповідає на питання, на яке не можуть відповісти інші, і збіг одиниць не робить їх взаємозамінними.

Корисна дисципліна — назвати межу до читання значення. Запишіть одиницю й межу поруч. Якщо інструмент повідомляє мілісекунди, запитайте: мілісекунди чого — часу в процедурі, часу очікування запуску чи часу до приходу відповіді.

Високе число в одній категорії — зачіпка, а не діагноз.

Прочитайте визначення за заголовком

Утиліти різняться тим, що називають затримкою. Одні повідомляють тривалість процедур драйвера, інші — затримку планування, і ці дві величини можуть рухатися в протилежних напрямках на одній машині. Панель, яка одну з них називає просто затримкою DPC, сказала вам менше, ніж здається. Тому дві панелі можуть розходитися в оцінці машини, яка зовсім не змінювалася.

Така сама обережність діє і всередині одного інструмента аналізу. Включна тривалість веде процедуру від входу до виходу, а виключна підсумовує лише ті фрагменти, де виконувалася сама процедура. Вибір неправильного стовпця робить того, хто викликав, винним.

Локальна робота драйвера й затримка мережі теж взаємодіють, не зливаючись. Надмірна активність, пов'язана з перериваннями, може затримувати чутливу до часу роботу на машині, а перевантажений шлях може затримувати пакети, і обидва можуть бути правдою під час однієї видимої паузи.

Помістіть кожне спостереження в одне вікно

Трасування корисне лише тоді, коли ви читаєте інтервал, що містить симптом. Запишіть трасування, подію клієнта й збій програми з часовими позначками, потім подивіться на ті самі секунди в усіх трьох. Максимум із годинного трасування й розрив пізніше того дня — два не пов'язані факти.

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

Потім відкрийте трасування в інструменті аналізу й відсортуйте за тривалістю в межах цього вікна, а не за всім записом. керівництво з аналізу процесора описує подання тривалості DPC/ISR, яке відносить час до модулів і функцій.

Підтвердьте, що насправді сталося з тунелем, поки ви там. Короткочасна втрата трафіку програми не означає, що клієнт почав нові переговори, а успіх невеликої перевірки не доводить, що все інше продовжувало працювати.

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

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

Одна зміна за експеримент — єдиний спосіб учитися з результату. Кабельне порівняння звужує область, але воно одночасно змінює радіошлях і активність драйвера, тому ставтеся до нього як до зачіпки, а не як до доказу.

Ставтеся до трасування як до чутливих даних. Воно може містити назви процесів і відомості про середовище, тому його місце в підтримуваному каналі запису, а не в публічному вкладенні. Укажіть, на яке спостереження трасування мало відповісти.

Схожі статті