Как запретить некоторым играм Windows отключать/обходить кэширование чтения с диска? Возможная проблема с DRM

Это вторая игра, в которую я недавно играл, и по каким-то причинам Windows не использует дисковый кеш. У меня 64 ГБ оперативной памяти. Сама игра жрет около 7Гб, под ОС осталось 2Гб, а это значит, под кэш свободно более 55Гб ОЗУ. Все игровые ресурсы занимают около 34 ГБ, что означает, что все можно и нужно кэшировать .

После двухчасовой игры Windows показывает, что игра прочитала с диска более 170 ГБ данных. Игра запускается из Steam, но на самом деле это игра Origin (EA), то есть загружены оба решения DRM. Файлами игры по-прежнему управляет Steam.

Для первой игры я нашел вот такое дурацкое решение: каждый раз, когда играл, я создавал RAM-диск, копировал на этот диск установленные файлы и запускал игру таким образом. Это очень раздражает, потому что копирование таких огромных объемов данных только для того, чтобы играть в игру, выглядит ужасно чрезмерным.

Монитор ресурсов показывает, что игровой процесс снова и снова считывает одни и те же игровые файлы.

Возможно, это DRM Origin/Steam действуют синхронно, но я понятия не имею.

Помимо этих двух игр, у меня нет других приложений или игр, в которых возникала бы такая проблема.

Я пробовал гуглить эту проблему, но ничего не вышло. ОС — Windows 10 в конфигурации по умолчанию, т.е. я ничего не настраивал. Если я правильно помню, первая игра также была игрой NFS, использующей движок Frostbite.

Люди на самом деле жаловались на это: https://www.reddit.com/r/needforspeed/comments/eoqiop/my_hdd_is_screaming_while_playing_nfs_heat/


Некоторые обновления:

  • Утилита Microsoft Cacheset является только 32-битной и в любом случае бесполезна, поскольку ограничения на дисковый кеш Windows 10 практически отсутствуют.

  • Вот самое главное: я попробовал вручную кэшировать все игровые ресурсы, скопировав файлы игры вNUL. Все успешно кэшировано, поскольку скорость последовательных копий составляет несколько гигабайт в секунду. Как только я запускаю игру, кеш уменьшается прямо на глазах, пока не становится как минимум на 12 ГБ меньше. Игра удаляет файлы из кэша диска. Тот, кто запрограммировал игру, должен быть наказан предвзято. Это глупо, ужасно и бессмысленно.

  • Многие инструкции инструктируют установить игру на SSD-диск, чтобы избежать замедления, что подтверждает, что это широко распространенная проблема, только никто до меня не нашел времени, чтобы вникнуть в нее глубже.

  • Вот экраны диспетчера задач, монитора ресурсов и RAMMap:

  • Я как бы «решил» проблему, используя RAM-диск (это будет работать только для людей, у которых более 48 ГБ ОЗУ) и скопировав на него файлы игры, только это немного безумно и кажется чрезмерным.

2 ответа

Кажется, что игра была запрограммирована неэффективно, но я считаю, что некоторые результаты могут иметь и другие интерпретации.

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

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

Наконец, алгоритм распределения памяти Windows не гарантирует идеальную работу для всех профилей программ. Фактически ваша игра может использовать ввод-вывод очень неэффективно, и Windows недостаточно оптимизирует ее. Ваше решение с использованием RAM-диска — это один из способов избежать чрезмерного ввода-вывода, преобразовав его в копии в памяти, но, к счастью, это намного быстрее.

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

Чтобы избежать двойной буферизации кеша в кеше хоста и гостевом кеше, кэширование ввода-вывода хоста должно быть отключено:VBoxManage storagectl "VM name" --name <controllername> --hostiocache off

Другие вопросы по тегам