Точка соединения NTFS с жесткого диска на твердотельный накопитель, приведет ли это к узким местам производительности? (перемещение паровой игры)

13

Может ли точка соединения NTFS между жесткими дисками вызвать узкое место? Или соединение будет кэшироваться в памяти?

В частности, я хочу установить Steam на магнитный жесткий диск. Это означает, что все игры будут установлены там. Чтобы извлечь выгоду из моего SSD, я соединю игры, в которые я активно играю, из каталога Steam на жестком диске в SSD.

Мне было интересно, если это приведет к снижению производительности. Каждый раз, когда игра обращается к файлу, нужно ли ей читать HDD, читать точку соединения, определять новый путь на SSD, а затем получать истинный файл? Или это ОС кеширует это перенаправление, так что снижение производительности происходит только в первый раз?

Благодарность!

ddtemplar
источник
3
Определение точки соединения непосредственно сохраняется в ответственной записи MFT. Поскольку MFT кэшируется в памяти, я не ожидал, что к жесткому диску будет обращаться при работе со связанным каталогом.
Джин
Благодарность! Тогда я не буду слишком беспокоиться об этом, если не начну замечать странные замедления.
ddtemplar
2
Даже если для чтения точки соединения требовался доступ к жесткому диску, он крошечный - считывание закончится почти сразу, и произойдет только один раз, так как оно будет кэшировано.
Adambean
Примечание с одной стороны: если вы устанавливаете приложение steam на SSD, вы все равно можете изменить место установки игры внутри steam без перехода.
Кибернард

Ответы:

5

Скорее всего нет, это не будет узким местом. С переходами NTFS связаны некоторые издержки, но в вашем сценарии они должны быть незначительными.

Вы можете избавиться от накладных расходов, физически перенеся данные на SSD и вообще не используя переходы (что, по-видимому, является основной проблемой для вашего вопроса), но я сомневаюсь, что вы могли измерить разницу.

Где хранятся и кэшируются соединения?

Соединения - это тип точек повторного анализа, которые все хранятся в $Extend\$Reparse метафайле (другой более известный метафайл - это $MFT).

Когда с файлом или каталогом связана точка повторной обработки, NTFS создает атрибут, названный $Reparseдля этой точки повторной обработки. Этот атрибут хранит код повторной обработки и данные. Чтобы NTFS могла легко находить все точки повторной обработки в томе, файл метаданных с именем \$Extend\$Reparseхранит записи, которые соединяют номера записей файла повторной обработки и каталога MFT со связанными кодами точек повторной обработки. NTFS сортирует записи по номеру записи MFT в $Rиндексе.

Источник: Inside Win2K NTFS, часть 1, Марк Руссинович

Диаграмма повторной обработки

Процесс повторной обработки

Источник: Inside Win2K NTFS, часть 1, Марк Руссинович

Были комментарии, что соединения хранятся в MFT и что MFT кэшируется. Что ж, теперь, когда мы знаем, где хранятся соединения, мне потребуется надежный источник для поддержки утверждения о кешировании; который я не смог найти.

Так что я не знаю, но я не думаю, что это имеет значение.

Есть ли документированный сценарий, когда кросс-дисковый переход снижает производительность?

Да, ARF столкнулся с такой проблемой . Он тестировал пакетное удаление небольших файлов, и когда операция проводилась через соединение, ограничивающим фактором был уже не IO (как и ожидалось), а процессор. Этот тест также подробно обсуждался на GitHub .

Властимил Овчачик
источник