Ага :) С 4gb в ноуте долго происходит только первая загрузка, потом файловый кэш в Win7 делает своё дело. Даже если из игры выйти и запустить чуть позже.
2tangro: Хороший детектив, прочитал с удовольствием :) я думаю там дело в seek, т.к. файлы вероятно читаются не в порядке инсталляции (т.е. не в порядке размещения на жёстким диске) и это, скорее всего так же касается чтения кусков из «pak» fsb файлов в каталоге audio. Но это гипотеза :) и как такое ускорить через хуки — с ходу тяжело придумать…
Есть идея отпрофайлить, в каком порядке это чтение чаще всего происходит и на основании этой информации сделать «дефрагментированную» пересборку файлов игры, куда потом и перенаправлять вызовы OpenFile/ReadFile. Метод, в принципе, довольно универсальный — может не только танкам пригодиться :)
Да, но он бы решил проблему с медленной загрузкой карт.
К тому же не тешьте себя, настоящий «правильный» ram-disk бывает только в linux/unix. Так что ваше решение != RAM-диск тоже.
В смысле который /dev/shm — может монтироваться куда угодно, быть частью RAID1 (нам же ведь чтение нужно быстрое, а запись может и подождать, зато данные будут в сохранности). И вообще может выступать полноценным блочным устройством, а не виртуальным огрызком.
Монтироваться куда угодно может и junction в Windows — в любую папку.
Не могу понять, зачем в данной ситуации зеркало. Зеркало нужно, чтобы ускорить чтение, поделив его между двумя дисками. Тут RAM все равно будет быстрее, чем диск. Запись никакая в этом сценарии не нужна.
Лучше всего было бы сделать так: сделать в RAM копию данных и выкинуть ее, когда у нас будет мало памяти. О черт, это называется файловый кеш, он в Windows есть, и если взять версию не десятилетней давности, а какую-нибудь поновее, где он лучше работает, то все будет работать без RAM-диска. Что же получается? Не нужен RAM-диск, не нужен RAID1, не нужен Linux — все работает и так…
Зеркало нужно для того, чтобы данные всегда писались на диск, если изменятся.
И да — файловому кешу нередко сносит башню, так что он здесь совсем не подходит. Например, просмотр фильма тяжелого вполне может выкинуть все файлы системы из памяти.
не вводите людей в заблуждение, /dev/shm (tmpfs), не является полноценным рамдиском, и запросто может попадать в своп.
настоящий ramdisk это блочное устройство(/dev/ram0, например), созданное из выделенного фрагмента оперативной памяти, которое можно отформатировать в любую желаемую файловую систему.
vm.swapiness придуман не для того, чтобы какой-то определенный фрагмент памяти запретить свопить. Он не умеет этого делать. Он указывает system-wide политику свопинга и ничего более.
А дальше действует стандартный своппер, просто его агрессивность и порог срабатывания будут другими.
Можно, конечно, выставить там 0 или вообще сделать swapoff -a (и да, получить гарантию от свопинга), но это не решение (т.к. ненужные данные в своп не попадут тоже, втупую забив память и не позволяя адекватно работать дисковому кэшу в памяти) во-первых и ведет к непредсказуемым глюкам в случае жесткого oom во вторых.
Решил бы, но вопрос цены и наличия этого SSD в компьютере. Каждому решению свое место, в данном описанном случае выгрузить в оперативную память часть компонентов — было очень хорошим решением на мой взгляд.
Начиная с висты можно было заюзать софтлинки вместо junction.
Ну а насчет нарушения соглашения — строго говоря вы же не вмешиваетесь в работу игры, а вмешиваетесь в работу системы (если править таблицу экспорта или использовать сплайсинг, вместо хука IAT).
То есть модификации идёт в памяти системных библиотек, а не файлов игры.
Ну я не юрист, но, прочитав здесь, не вижу никаких сложностей.
Краем задевает только пункт 4.4: «не модифицировать Проект».
«Проект — Игра + Пользователи + Модераторы + Администрация.»
«Игра — Программа + Сайт + Контента + Материалы»
«Программа — компоненты программного обеспечения, как отдельные, так и в совокупности, размещенные Администрацией или Разработчиком на Сайте, на сайтах третьих лиц в сети Интернет, DVD дисках и других носителях информации, и специальным образом отмеченные как составные части «World of Tanks».»
Собственно не вижу каким образом какой-нибудь kernel32.dll или ntdll.dll вписывается в эти определения.
Ну и алгоритмов тоже упоминания не встретил.
PS: ерунда у них, а не мощное соглашение, видно что писали по большей части программисты, а не юристы :)
А вот не делает. Пробовал раз 5 подряд входить в бой — иногда быстрее, а иногда всё-равно время доступа к отдельным папкам очень большое. А в моём способе есть определённый детерминизм.
После кучки боёв на картах и большого (в моём случае это 8 гиг) объема оперативы кеш карт не вылетает оттуда в течении нескольких суток. Всё зависит от объема свободной оперативы ^_~
Не сделает. Точнее, в идеальных условиях свободной памяти и чистого кэша — сделает, да. В реальной работе (с кучей фоновых приложений, в т.ч. работающих с диском) — эффект будет куда менее выражен.
То же самое в обязательном порядке делается с игрой Lineage2) Только там защита блокирует сторонние программы мониторинга (встроенный монитор ресурсов Windows работает отлично). Больше всего в Lineage2 клиент мучает папочку SysTextures, ее я и перенес на рамдрайв) После пробы разных рамдрайвов остановился на Dataram RAMDisk — при загрузке системы монтирует образ, при выключении системы сохраняет образ (для MMO игр это очень актуально, ибо данные постоянно обновляются), а главное нет проблем со спящим режимом)
Ускоряем загрузку вашего топика на хабре:
— Фотку танка не сохраняем в формате без потерь качества PNG.
— Скриншоты не масштабируем, чтобы не увеличивать энтропию.
— Такие бесцветные картинки можно и в 8 битих сохранять.
В общем, нужно использовать современную операционную систему, а не ОС десятилетней давности.
4 Гб вполне годятся, чтобы обновиться до Windows 7.
Это не так и дорого, а все то же самое вы бы получили без RAM-дисков.
вообще есть другая идея для ускорения, не жертвуя ОЗУ.
это использование утилитки, которая дает план загрузки файлов (как в этой статье), а дальше использование mydefrag, для создания областей на диске в которых в определенном порядке лежат файлы. Это ускоряет не меньше.
Сейчас и oo defrag чем то подобным распологает, но не так гибко настраиваемо, как в mydefrag.
например есть скрипт для WoW под mydefrag, после этого, вы сразу почуствуете, скорость загрузки WoW(world of warcraft).
Тут
скрипт. прогу тоже берешь и в путь.
чтобы придумтраь скрипт, нужно почитать хелп и посмотреть примеры других скриптов.
дляэтого скрипта лучше, когда wow на отдельном разделе диска. так как дефрагментацию надо производить с каким то периодом, и это будет быстрее, чем на смешанных данных.
вообще это скрипт, не только грузит wow быстрее, но и убирает лаги в прорисовке сцен.
Хм, у меня все резво загружается с обычного hdd. А для начала дефрагментировать диск не пробовали. Таким образом, чтобы все файлы в папке лежали в одной куче, а не по всему диску были раскиданы.
Какой то геморой… обычно первый загружаюсь и без него. И винт не ссд и инет «гавно». А в общем всё равно ждать придётся всех остальных. А движок кончено у них изначально был старый и то что он до сих пор справляется как раз заслуга не кривых рук программистов.
Может я что-то упустил, но есть же команда mklink (вроде). Позволяет создавать символические ссылки в windows (с какой версии — не помню). Пользовался ей для таких же целей.
Нафига такие заморочки?
На форуме игры есть пережатые ресурсы игры. Причем с разной степенью сжатия.
На глаз разницы в качестве графики не заметно, а ускорение не только загрузки, но и ФПС в самой игре поднимает.
Эх… Сначала я купил дорогую видюху, но как оказалось, это не помогло.
Проблему с долгой загрузкой я решил переносом игры на второй винчестер — не знаю всего механизма, но скорость загрузки увеличилась раза в два. Возможно потому что временные файлы на одном винте, а читаются файлы с другого винта.
А вот как решить проблему при игре на ноуте — не знаю. У меня Lenovo y430, c2duo, 2G ram, и там стоит видюха жифорс 9300М. Параметры вроде хорошие, но 10-15 фпсов… Можно ли пофиксить?
п.с. Игровой движок от БигВорлда — ужоснах. Там гигантское количество багов. Что бы его допилить надо гинатское количество кода переписать, и хаков применить.
Пожмите ресурсы, очень помогает. На форуме у них есть паки со степенью сжатия 50%, 25% и 12.5%. На не самых лучших настройках разницы не заметите. Заодно и ФПС повысите. Правила, я думаю, это не нарушает, иначе давно закрыли бы эту тему на форуме.
Пожмите ресурсы. На форуме игры есть тема с паками со степенью сжатия 50%, 25% и 12.5%. Ускоряет загрузку и ФПС игры. На не самых лучших настройках разницы не заметите.
На моем Acer Revo R3610 после (да и до тоже не напрягало) урезания текстур стало грузиться в считанные секунды. Правда, все выглядит, как картины Ван Гога и FPS максимум до 12 удалось поднять. Странный дизбаланс — на слабом компе у меня грузится быстрее, а в игре тормозит жутко.
По вашей статистике из директории audio он прочитал чуть меньше 60 мегабайт в 33 файлах за 14.4 секунд. Думаю у вас просто была сильная фрагментация этих данных.
Вообще, описанный в статье случай — это что-то «из ряда вон». Обычно больше всего кушает папка «content» (и это видно на последнем скриншоте). Не знаю почему с аудио так вышло, может и правда фрагментация.
Глянул свой клиент, с перепаковаными текстурами он влезает на 2 ГБ РАМ диск с включенным НТФС сжатием(на распаковку плюем, проца все равно еще несколько ядер простаивающих).
Оставшихся 2х гиг оперативки теоретически хватает для работы игры. На практике проверить не могу, траблы с соединением к серверу.
По крайней мере на запуск клиента дисковых операций 0.3 сек вместо 20+ с винта.
Ускоряем загрузку карты в World of Tanks