Pull to refresh

Comments 83

где вы раньше были… я же по этой причине играть перестал. наверно снова начну!)
так а толку? все равно таймер еще ждать.
Ага :) С 4gb в ноуте долго происходит только первая загрузка, потом файловый кэш в Win7 делает своё дело. Даже если из игры выйти и запустить чуть позже.

2tangro: Хороший детектив, прочитал с удовольствием :) я думаю там дело в seek, т.к. файлы вероятно читаются не в порядке инсталляции (т.е. не в порядке размещения на жёстким диске) и это, скорее всего так же касается чтения кусков из «pak» fsb файлов в каталоге audio. Но это гипотеза :) и как такое ускорить через хуки — с ходу тяжело придумать…

Есть идея отпрофайлить, в каком порядке это чтение чаще всего происходит и на основании этой информации сделать «дефрагментированную» пересборку файлов игры, куда потом и перенаправлять вызовы OpenFile/ReadFile. Метод, в принципе, довольно универсальный — может не только танкам пригодиться :)
Да, но он бы решил проблему с медленной загрузкой карт.
К тому же не тешьте себя, настоящий «правильный» ram-disk бывает только в linux/unix. Так что ваше решение != RAM-диск тоже.
«Настоящий правильный RAM-диск» — в смысле такой, который никогда не будет выгружен в своп? Или что?
В смысле который /dev/shm — может монтироваться куда угодно, быть частью RAID1 (нам же ведь чтение нужно быстрое, а запись может и подождать, зато данные будут в сохранности). И вообще может выступать полноценным блочным устройством, а не виртуальным огрызком.
Монтироваться куда угодно может и junction в Windows — в любую папку.
Не могу понять, зачем в данной ситуации зеркало. Зеркало нужно, чтобы ускорить чтение, поделив его между двумя дисками. Тут RAM все равно будет быстрее, чем диск. Запись никакая в этом сценарии не нужна.

Лучше всего было бы сделать так: сделать в RAM копию данных и выкинуть ее, когда у нас будет мало памяти. О черт, это называется файловый кеш, он в Windows есть, и если взять версию не десятилетней давности, а какую-нибудь поновее, где он лучше работает, то все будет работать без RAM-диска. Что же получается? Не нужен RAM-диск, не нужен RAID1, не нужен Linux — все работает и так…
Зеркало нужно для того, чтобы данные всегда писались на диск, если изменятся.
И да — файловому кешу нередко сносит башню, так что он здесь совсем не подходит. Например, просмотр фильма тяжелого вполне может выкинуть все файлы системы из памяти.
«Зеркало нужно для того, чтобы данные всегда писались на диск, если изменятся.»
Добро пожаловать в мир файлового кеша :))

«Просмотр фильма тяжелого вполне может выкинуть все файлы системы из памяти» — download.microsoft.com/download/8/C/2/8C21BAFE-3432-48D1-962A-F7A9DD54A2AC/Windows%207%20and%20Windows%20Server%202008%20R2%20Kernel%20Changes.pptx слайд №17
не вводите людей в заблуждение, /dev/shm (tmpfs), не является полноценным рамдиском, и запросто может попадать в своп.
настоящий ramdisk это блочное устройство(/dev/ram0, например), созданное из выделенного фрагмента оперативной памяти, которое можно отформатировать в любую желаемую файловую систему.
Смешались в кучу люди, кони…

vm.swapiness придуман не для того, чтобы какой-то определенный фрагмент памяти запретить свопить. Он не умеет этого делать. Он указывает system-wide политику свопинга и ничего более.

А дальше действует стандартный своппер, просто его агрессивность и порог срабатывания будут другими.

Можно, конечно, выставить там 0 или вообще сделать swapoff -a (и да, получить гарантию от свопинга), но это не решение (т.к. ненужные данные в своп не попадут тоже, втупую забив память и не позволяя адекватно работать дисковому кэшу в памяти) во-первых и ведет к непредсказуемым глюкам в случае жесткого oom во вторых.
shared memory совсем для другого создан.
Решил бы, но вопрос цены и наличия этого SSD в компьютере. Каждому решению свое место, в данном описанном случае выгрузить в оперативную память часть компонентов — было очень хорошим решением на мой взгляд.
UFO just landed and posted this here
Начиная с висты можно было заюзать софтлинки вместо junction.
Ну а насчет нарушения соглашения — строго говоря вы же не вмешиваетесь в работу игры, а вмешиваетесь в работу системы (если править таблицу экспорта или использовать сплайсинг, вместо хука IAT).
То есть модификации идёт в памяти системных библиотек, а не файлов игры.
Там весьма мощное соглашение. Хуки вполне подпали бы под какое-то «изменения алгоритмов работы» и т.д.
Ну я не юрист, но, прочитав здесь, не вижу никаких сложностей.
Краем задевает только пункт 4.4: «не модифицировать Проект».
«Проект — Игра + Пользователи + Модераторы + Администрация.»
«Игра — Программа + Сайт + Контента + Материалы»
«Программа — компоненты программного обеспечения, как отдельные, так и в совокупности, размещенные Администрацией или Разработчиком на Сайте, на сайтах третьих лиц в сети Интернет, DVD дисках и других носителях информации, и специальным образом отмеченные как составные части «World of Tanks».»

Собственно не вижу каким образом какой-нибудь kernel32.dll или ntdll.dll вписывается в эти определения.
Ну и алгоритмов тоже упоминания не встретил.

PS: ерунда у них, а не мощное соглашение, видно что писали по большей части программисты, а не юристы :)
Интересно: аудио 200 мб, всего 16 файлов, а грузится дольше всех — 14.48 сек…
Может, декомпрессия какая?
Каждый раз по-разному. Иногда аудио 14, а компоненты — 8, иногда аудио 8, а компоненты 25. Может от карты зависит или еще от чего-то.
ага, DOS. :)

Win 7, просто с отключенным Аеро.
В этом месте предполагалась подколка на счёт неполного использования 4 Гб памяти в 32-битных системах?
Ммм, нет. Никаких подколок. Просто предположил :)
Творения Руссиновича, как обычно — лучшие.
Недавно купил SSD и поставил WOT на него. Теперь появляюсь на карте одним из первых, и очень часто самым первым.
У меня обычный синий WD (не SSD). Появляюсь тоже первый :)
Use Windows Vista/7. С таким объемом оперативки кеш винды сделает ровно то же самое на автомате.
Первый раз после запуска игры карта всё равно долго грузится. Но вот потом да, мгновенно.
А вот не делает. Пробовал раз 5 подряд входить в бой — иногда быстрее, а иногда всё-равно время доступа к отдельным папкам очень большое. А в моём способе есть определённый детерминизм.
После кучки боёв на картах и большого (в моём случае это 8 гиг) объема оперативы кеш карт не вылетает оттуда в течении нескольких суток. Всё зависит от объема свободной оперативы ^_~
ну, я уже писал, что у меня ОЗУ меньше. может быть причина в этом.
Не сделает. Точнее, в идеальных условиях свободной памяти и чистого кэша — сделает, да. В реальной работе (с кучей фоновых приложений, в т.ч. работающих с диском) — эффект будет куда менее выражен.
То же самое в обязательном порядке делается с игрой Lineage2) Только там защита блокирует сторонние программы мониторинга (встроенный монитор ресурсов Windows работает отлично). Больше всего в Lineage2 клиент мучает папочку SysTextures, ее я и перенес на рамдрайв) После пробы разных рамдрайвов остановился на Dataram RAMDisk — при загрузке системы монтирует образ, при выключении системы сохраняет образ (для MMO игр это очень актуально, ибо данные постоянно обновляются), а главное нет проблем со спящим режимом)
UFO just landed and posted this here
Ускоряем загрузку вашего топика на хабре:
— Фотку танка не сохраняем в формате без потерь качества PNG.
— Скриншоты не масштабируем, чтобы не увеличивать энтропию.
— Такие бесцветные картинки можно и в 8 битих сохранять.

тыц тыц тыц тыц тыц
Меньше ваших в 4 с лишним раза.
Спасибо, чего уж там — и вправду так лучше.
В общем, нужно использовать современную операционную систему, а не ОС десятилетней давности.
4 Гб вполне годятся, чтобы обновиться до Windows 7.
Это не так и дорого, а все то же самое вы бы получили без RAM-дисков.
Да и на 2 гб чувствует себя 7 достаточно хорошо.
Обновить надо.
Но рам диск все равно ускоряет загрузку нужных файлов.
К тому же, можно купить копеечную флешку на 4-8Гб, и заюзать ReadyBoost.
В таком случае, даже 2Гб для 7ки будет достаточно.
вообще есть другая идея для ускорения, не жертвуя ОЗУ.

это использование утилитки, которая дает план загрузки файлов (как в этой статье), а дальше использование mydefrag, для создания областей на диске в которых в определенном порядке лежат файлы. Это ускоряет не меньше.

Сейчас и oo defrag чем то подобным распологает, но не так гибко настраиваемо, как в mydefrag.
например есть скрипт для WoW под mydefrag, после этого, вы сразу почуствуете, скорость загрузки WoW(world of warcraft).
Если бы вы написали точнее, то был бы крайне признателен.
Тут
скрипт. прогу тоже берешь и в путь.
чтобы придумтраь скрипт, нужно почитать хелп и посмотреть примеры других скриптов.
дляэтого скрипта лучше, когда wow на отдельном разделе диска. так как дефрагментацию надо производить с каким то периодом, и это будет быстрее, чем на смешанных данных.

вообще это скрипт, не только грузит wow быстрее, но и убирает лаги в прорисовке сцен.
Спасибо, если не поленюсь — попробую на WoT
Хм, у меня все резво загружается с обычного hdd. А для начала дефрагментировать диск не пробовали. Таким образом, чтобы все файлы в папке лежали в одной куче, а не по всему диску были раскиданы.
Мне для достижения приемлемой скорости загрузки достаточно оказалось поставить винт WD Caviar Black. Хотя исследование, безусловно, интересное.
Аналогичный винт стоит, 100мбит/сек выдает, и ресурсы все сдефрагментированы, грузится очень быстро )
Какой то геморой… обычно первый загружаюсь и без него. И винт не ссд и инет «гавно». А в общем всё равно ждать придётся всех остальных. А движок кончено у них изначально был старый и то что он до сих пор справляется как раз заслуга не кривых рук программистов.
Хм, у меня стоит Win 7 pro 64-bit, 8Gb оперативки и я загружаюсь быстрее всех, без всяких танцев с бубнами…
ах да, диск родной от ноутбука (hp probook 4520s) 5200 Об./минуту.
угу, тоже сразу о ней подумал, когда начал топик читать.
Хабр торт — спасибо автору за статью!
Офтоп: неужели в WOT(не играл) есть Меркава?
Нет там меркавы. И абрамса нет. Танки только 20-х-50-х, большая часть — времен второй мировой.
Может я что-то упустил, но есть же команда mklink (вроде). Позволяет создавать символические ссылки в windows (с какой версии — не помню). Пользовался ей для таких же целей.
Команда mklink появилась в win7 насколько я знаю, а у автора ХР.
Ну вообще да, у автора Win7, но я хотел описать способ, который работал бы и на XP.
А мне наоборот нравится что танки у меня грузятся секунд 15-25.
А то появляешься первым на карте и сидишь ждёшь остальных.
Тогда вы можете использовать данный способ, но вместо рам-диска — флоппи-дисковод, подключенный по COM-порту. Никого ждать точно вам не придется.
11г весит? Почисти папку с апдейтами и у тех у кого 8г оперативки — все влезет на рам диск
По Alt+F6 в FAR Manager давно умеет «hard links for files, junctions for folders and symbolic links for files and folders»
Нафига такие заморочки?
На форуме игры есть пережатые ресурсы игры. Причем с разной степенью сжатия.
На глаз разницы в качестве графики не заметно, а ускорение не только загрузки, но и ФПС в самой игре поднимает.
Данные сжаты? Если нет, то может сжать папку с помощью NTFS compression и сделать дефрагментацию?
Ну так ведь все равно приходится ждать столько же времени как и раньше! Разве что поговорить можно до окончания отсчета…
Покупайте SSD и будет вам счастье, у меня секунд за 10 загружается любая карта
Эх… Сначала я купил дорогую видюху, но как оказалось, это не помогло.
Проблему с долгой загрузкой я решил переносом игры на второй винчестер — не знаю всего механизма, но скорость загрузки увеличилась раза в два. Возможно потому что временные файлы на одном винте, а читаются файлы с другого винта.

А вот как решить проблему при игре на ноуте — не знаю. У меня 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+ с винта.
Sign up to leave a comment.

Articles