Почему мой системный процесс выполняет дисковый ввод-вывод?

501
Svish

Иногда я хочу посмотреть, сколько моих ресурсов фактически использует программа. Но, похоже, что часто, несмотря на то, что процесс делает много, он, например, едва ли вообще не выполняет дисковый ввод-вывод. система процесс, с другой стороны, делает много этого.

Например, в моем конкретном случае сейчас у меня есть небольшой SFTP-сервер, который получает много данных, которые я вижу на вкладке Сеть в Resource Monnitor . Но в Таблице дисков он почти ничего не делает, кроме небольшого чтения X:\$BitMapи X:\$Mft. Однако система, похоже, имеет скорость записи, аналогичную скорости приема в сети, и файлы, к которым она обращается, являются теми, которые получает сервер SFTP.

Что на самом деле здесь происходит?

0
захватить трассировку xperf диска / FileIO: http://pastebin.com/AyxAVU60 и поделиться сжатым файлом magicandre1981 8 лет назад 0

1 ответ на вопрос

1
Jamie Hanrahan

The system process is where the MappedPageWriter thread lives. This thread is what's responsible for writng modified pages of mapped files to the files they belong to. (It is a cousin to the ModifiedPageWriter thread, also in the System process, which does the same for modified pages that are backed by the pagefile... the ModifiedPageWriter thread is what writes to the pagefile.)

The mapped file mechanism is used by the Windows file cache, which is used by default when a program does traditional read/write access to a files. And of course if your sftp server is using mapped files rather then r/w calls for its received files, those are mapped files too.

So, this is a normal part of writing files on Windows... unless the program has opened the output file with FILE_FLAG_NOBUFFERING, which bypasses the Windows file cache (and has many disadvantages).