Хорошо, давайте возьмем простой вопрос здесь. SSD особенно хороши при случайном чтении. Пока вы читаете полный блок, не имеет значения, делаете ли вы это непосредственно перед блоком или «на полпути через диск». Это не имеет никакого практического значения. На самом деле, вы даже не можете сказать. Ваша операционная система может думать, что она хранит данные в последовательных местах на SSD, но сам SSD вполне может сопоставить их с противоположными сторонами «хранилища». Таким образом, на SSD вам практически не нужно беспокоиться о дефрагментации файлов. Кроме. Я вернусь к этому.
Хорошо, давайте вернемся к обычным механическим дискам. Они намного быстрее при последовательном чтении, чем при случайном чтении. Гораздо быстрее.
Теперь, если я играю в Half-Life 3 и ему нужно загружать файлы данных, моему компьютеру будет намного легче, если эти файлы данных будут дефрагментированы и хранятся в непосредственной близости. Грубо (очень грубо), дефрагментация преобразует случайное чтение в последовательное чтение.
Вы соглашаетесь с тем, что очевидно, что файл данных карты и файл символьных данных быстрее дефрагментируются и находятся рядом друг с другом, чем файл данных карты, разбросанный по всему диску, и файл символьных данных также разбросанный по всему диску.
Но ... вы выдвигаете довольно странный сценарий. Вы предлагаете, например, что Half Life 3 должен загрузить PART файла данных карты и PART файла данных персонажа. Например, ему нужны только первые 10% файла данных карты и средние 10% файла данных символа.
В этом случае оптимальным способом хранения данных будет сохранение первых 10% данных карты, за которыми сразу следует средние 10% данных символов. Поскольку вы ничего не загружаете (в этом надуманном примере), не имеет значения, где что-то еще находится.
Так да. В этом конкретном случае было бы полезно, если бы данные были фрагментированы.
Теперь вернемся к SSD. Оказывается, твердотельные накопители должны читать и записывать страницу одновременно. Точный размер страницы зависит от SSD, но может составлять 2 КБ, 4 КБ, 8 КБ, 16 КБ или другой размер. Я хочу сказать, что если размер страницы SSD равен 16 КБ, и это минимальный размер, который вы можете загрузить, то ситуация, когда 10% данных карты и 10% необходимых вам символов находятся в одном блоке Ну, это будет быстрее. Быстрее загрузить один блок, чем два.
Так. Да, есть некоторые обстоятельства, когда преднамеренное фрагментирование данных ускоряет ваш доступ. Но трудно представить, почему вы пытаетесь оптимизировать этот случай. Действительно, большую часть времени вы хотите загрузить весь файл, а не только первые 10%. А современные операционные системы в любом случае кешируют файлы, поэтому при переходе с Half-Life 3 на другую карту есть неплохой шанс, когда данные карты уже находятся в кеше файловой системы, и вам вообще не нужно ничего загружать с диска. ,
Один интересный вариант - SSHD, гибридные диски. Это (практически) комбинации механических приводов с SSD-кешем. Насколько это актуально здесь? Ну, грубо говоря, гибридные диски будут перемещать часто доступный контент в более быструю область хранения, перемещая данные с вашего прядильного диска на часть SSD. Если вы всегда загружали первые 10% данных карты и средние 10% символьных данных и никогда не загружали что-либо еще, и если алгоритм гибридного диска был хорош, эти данные оказались бы на более быстрой части SSD. Таким образом, до некоторой степени это завершает то, что вы намереваетесь сделать. Обратите внимание, что обычный кэш файловой системы выполняет то же самое, только эффект, вероятно, быстрее, но длится только до перезагрузки.
TL; DNR: Да. А если серьезно, то это почти гарантированная бесполезная оптимизация.