Может ли точка соединения NTFS между жесткими дисками стать узким местом? Или соединение будет кэшироваться в памяти?
В частности, я хочу установить Steam на магнитный HDD. Это значит, что все игры будут установлены там. Чтобы извлечь пользу из моего SSD, я перенесу игры, в которые я активно играю, из каталога Steam на HDD на SSD.
Мне было интересно, вызовет ли это проблему с производительностью. Каждый раз, когда игра обращается к файлу, ей нужно считывать HDD, считывать точку соединения, определять новый путь на SSD, а затем получать настоящий файл? Или ОС кэширует это перенаправление, так что штраф за производительность будет только в первый раз?
Спасибо!
решение1
Скорее всего, нет, это не будет узким местом. Есть некоторые накладные расходы, связанные с соединениями NTFS, но в вашем сценарии они должны быть незначительными.
Вы могли бы избавиться от накладных расходов, физически переместив данные на SSD и вообще не используя соединения (что, как мне кажется, является основной проблемой вашего вопроса), но я сомневаюсь, что вы сможете измерить разницу.
Где хранятся и кэшируются соединения?
Соединенияявляются типомточки повторной обработкикоторые все хранятся в$Extend\$Reparse
метафайл(еще более известный метафайл — $MFT
).
Когда файл или каталог имеет связанную с ним точку повторной обработки, NTFS создает атрибут с именем
$Reparse
для точки повторной обработки. Этот атрибут хранит код повторной обработки и данные. Чтобы NTFS могла легко найти все точки повторной обработки на томе, файл метаданных с именем\$Extend\$Reparse
хранит записи, которые связывают номер записи MFT файла точки повторной обработки и каталога с их связанными кодами точек повторной обработки. NTFS сортирует записи по номеру записи MFT в индексе$R
.
источник:Внутри Win2K NTFS, часть 1 Марка Руссиновича
Повторный анализ диаграммы
источник:Внутри Win2K NTFS, часть 1 Марка Руссиновича
Были комментарии, что соединения хранятся в MFT и что MFT кэшируется. Ну, теперь, когда мы знаем, где хранятся соединения, мне бы потребовался достоверный источник для поддержки заявления о кэшировании; который я не смог найти.
Так что я не знаю, но не думаю, что это имеет значение.
Есть ли задокументированный сценарий, когда перекрестное соединение дисков снижало производительность?
Да,АРФстолкнулся спроблемакак это. Он проводил бенчмаркинг пакетного удаления небольших файлов, и когда операция проводилась через junction, ограничивающим фактором был уже не IO (как и ожидалось), а CPU. Этот бенчмарк также подробно обсуждался наGitHub.