Мы работаем над стресс-тестированием приложения и заметили любопытный случай, когда ядро Windows берет на себя выполнение стресс-теста. Приложение в рамках стресс-теста улавливает общесистемные события ввода-вывода, в основном CRUD файлов, с помощью драйвера минифильтра, подобного этому passthough driver .
Во время стресс-теста с использованием spddisk на одной конкретной виртуальной машине (Windows Server 2019 1809 17763.864 без внешнего антивирусного ПО или другого программного обеспечения безопасности), мы заметили, что процесс System
с зарезервированным pid 4
«берет на себя» выполнение стрессовой нагрузки. Похоже, то же самое происходит и с простым пакетным скриптом (создание, чтение, удаление файла в al oop). Я никогда не видел ничего подобного ни в одной другой системе, и мы не можем воспроизвести это поведение где-либо еще, кроме этой единственной виртуальной машины.
«Захват» происходит через несколько секунд после выполнения стресс-теста и проявляется следующим образом:
- Идентификатор процесса изменен на Зарезервированный системой pid 4
- Идентификатор потока изменен на другой
tid
- Пользовательский SID изменен с
S-1-5-21-2874696658-2485333267-3621126573-500
на S-1-5-18
- Пользователь изменен с
win-saacuiping\administrator
на NT AUTHORITY\SYSTEM
Мы зафиксировали это в procmon
дамп procmon
Это похоже на своего рода песочницу, но я никогда раньше такого не видел. Упрощенная команда, используемая для стресс-тестирования:
diskspd.exe -c100b -b1K -t2 -d60 -w50 -W0 -Sh f1.tmp
Кто-нибудь может объяснить, почему выполнение внезапно передается от одного процесса к Windows системе ядра 4?