У меня довольно старый домашний каталог на жестком диске. Было создано и удалено много файлов, и теперь размер /home /username составляет 995328 байт. Пожалуйста, обратите внимание, я имею в виду размер "файла каталога" (каждый каталог - это специальный файл, содержащий ссылки на другие файлы и каталоги), а не общий размер файлов внутри. Другими словами, это размер "." (точка) каталог, который вы видите в выводе ls -la.
В моем домашнем каталоге только 244 файла + каталоги внутри. На другом компьютере у меня есть 203 файла + каталоги в домашнем каталоге и "." dir составляет всего 4096 байт. Это может не беспокоить, но я заметил огромное снижение производительности, когда играл в Natural Selection 2. В частности, он сохраняет скомпилированные шейдеры и моды в "~/.config/Natural Selection 2", и поэтому каждый раз, когда он получает доступ к файлу, он должен проходить через этот огромный домашний каталог ~ 1 Мб.
Чтобы ускорить процесс, я переместил его каталог в /opt /confs (мой корневой раздел находится на SSD, сама игра также находится там, в /opt), и это очень помогло. Тем не менее, другие плееры все еще загружались до меня, они также работают на Windows и SSD. Я также попытался смонтировать --bind этот каталог из "/opt /confs /Natural Selection 2" в "~ /.config /Natural Selection 2", но я не увидел никаких улучшений.
DID помогает создать нового пользователя в /opt /home (то есть на SSD) и использовать его для запуска игры, чтобы /home /username больше не использовался. У меня было огромное улучшение, как в два раза, 37 секунд вместо 1 минуты 15 секунд. У меня 32 ГБ ОЗУ (только 10-12 занято в любое время), поэтому все это должно быть сильно кэшировано, а скорость жесткого диска не должна мешать прохождению пути.
Я думаю, что файл домашнего каталога теперь полон дыр, оставшихся после удаления старых файлов и каталогов. *, И поэтому поиск выполняется медленно. Я не мог найти способ сделать его меньше и быстрее, кроме как создать новый каталог и переместить в него файлы и каталоги, удалить пустой старый домашний каталог и переименовать этот новый. Но это хакерский способ, и если это действительно проблема, должен быть способ справиться с редкими каталогами. Особенно, когда все говорят, что файловые системы ext вообще не нуждаются в дефрагментации. Ну, для файлов это правда, но кажется, что никто не заботится о каталогах.
редактировать: забыл проверить другие случаи, чтобы исключить другие возможности. Я переместил домашний каталог этого пользователя в /home (который находится на жестком диске), а каталог конфигурации игры в /opt /confs (SSD). Таким образом, теперь путь выглядит как / (SSD) /home / (HDD) /newuser/.config/ (все еще HDD) Natural Selection 2 (символическая ссылка на /opt /confs / Natural Selection 2, SSD). Все еще загружается довольно быстро, без разницы с чистым путем SSD (43 секунды). Затем я провел контрольное измерение: я переместил домашний каталог нового пользователя в домашний каталог моего основного пользователя, чтобы его путь был /home / rkfg / newuser, где /home / rkfg - проблемный фрагментарный каталог. Каталог конфигурации игры по-прежнему имеет символическую ссылку на SSD, все остальное тоже самое. И долгие времена загрузки вернулись: 1 минута 39 секунд! Теперь он должен пройти через большой файл каталога, и, поскольку игра делает это десятки раз в секунду, все складывается. Да, он не очень оптимизирован в этой части, надеюсь, он станет лучше. Но дело в том, что огромные и фрагментированные файлы каталогов действительно увеличивают время поиска. И кеш не сильно помогает, несмотря на все оптимизации.