Ponto de junção NTFS de HDD para SSD, isso causará gargalo no desempenho? (realocação de jogos a vapor)

13

Um ponto de junção NTFS entre os HDDs pode causar um gargalo? Ou a junção será armazenada em cache na memória?

Especificamente, quero instalar o Steam em um disco rígido magnético. Isso significa que todos os jogos serão instalados lá. Para me beneficiar do meu SSD, vou apontar os jogos que estou jogando ativamente do diretório do Steam no HDD para o SSD.

Eu queria saber se isso causaria problemas de desempenho. Toda vez que o jogo acessa um arquivo, ele precisa ler o HDD, ler o ponto de junção, resolver o novo caminho no SSD e obter o arquivo verdadeiro? Ou o sistema operacional fará o cache dessa reorientação para que a penalidade de desempenho seja atingida apenas na primeira vez?

Obrigado!

ddtemplar
fonte
3
A definição de um ponto de junção é armazenada diretamente na entrada responsável da MFT. Como o MFT é armazenado em cache na memória, eu não esperaria que o HDD fosse acessado ao trabalhar com o diretório vinculado.
Gene
Obrigado! Não vou me preocupar muito com isso, a menos que comece a notar lentidão estranha.
Ddtemplar 02/07
2
Mesmo que o HDD precise ser acessado para ler o ponto de junção, é pequeno - a leitura terminaria quase imediatamente e só aconteceria uma vez, pois seria armazenada em cache.
Adambean
Uma observação lateral: Se você instalar o aplicativo steam no SSD, ainda poderá mudar para onde o jogo está instalado para dentro do steam sem uma junção.
22815 cybernard

Respostas:

5

Provavelmente não, não será um gargalo. Há alguma sobrecarga associada às junções NTFS, mas no seu cenário deve ser insignificante.

Você pode se livrar da sobrecarga movendo fisicamente os dados para o SSD e sem usar junções (o que parece ser a principal preocupação de sua pergunta para mim), mas duvido que você possa medir a diferença.

Onde as junções são armazenadas e armazenadas em cache?

Junções são tipos de pontos de nova análise que são armazenados no $Extend\$Reparse metarquivo (outro metarquivo mais famoso é o $MFT).

Quando um arquivo ou diretório tem um ponto de nova análise associado, o NTFS cria um atributo nomeado $Reparsepara o ponto de nova análise. Este atributo armazena o código e os dados de nova análise. Para que o NTFS possa localizar facilmente todos os pontos de nova análise em um volume, um arquivo de metadados denominado \$Extend\$Reparsearmazena entradas que conectam o arquivo do ponto de nova análise e os números de entrada do diretório MFT aos códigos de pontos de nova análise associados. O NTFS classifica as entradas pelo número de entrada da MFT no $Ríndice.

fonte: Inside Win2K NTFS, Parte 1 por Mark Russinovich

Diagrama de nova análise

Processo de nova análise

fonte: Inside Win2K NTFS, Parte 1 por Mark Russinovich

Houve comentários de que as junções são armazenadas na MFT e que a MFT é armazenada em cache. Bem, agora, quando sabemos onde as junções estão armazenadas, eu exigiria uma fonte confiável para suportar a reivindicação de armazenamento em cache; que não consegui encontrar.

Então eu não sei, mas acho que não importa.

Existe um cenário documentado em que a junção de disco cruzado diminuiu o desempenho?

Sim, a ARF teve um problema como este. Ele estava comparando a exclusão em lote de arquivos pequenos e, quando a operação foi realizada na junção, o fator limitante não era mais IO (como esperado), mas a CPU. Essa referência também foi discutida em detalhes no GitHub .

Vlastimil Ovčáčík
fonte