ASI DynamicStreaming

loganhackerdff

Известный
868
519
ещё бы я ебал причину, оно вылетает просто с нихуя, сколько бы я не выделял памяти
 
  • Нравится
Реакции: livingflore
D

deleted-user-422095

Гость
16.58.52.265.jpg

так должно быть или нет?
максимальное по 10-30 скачет
 

Dffdff

Участник
46
4
Плагин динамически меняет количество стриминг памяти.

Посмотреть вложение 112629

Изначально задается наибольшее доступное на вашем ПК значение, а затем по мере использования ОЗУ изменяет это значение.
Значение стриминга может опуститься до 256МБ при попытке удержать всю игру в ОЗУ без использования файла подкачки. Если удержать игру в ОЗУ не удается, то память для стриминга может опуститься до 100мб.

Исходники: https://gitlab.com/prime-hack/samp/plugins/DynamicStreaming
Здравствуй, такой вопрос, чтобы не было конфликтов, надо удалить Клео memory full и луа на очистку стрима? А также, нормально ли пашет в одиночке, ибо у меня папка модлоадера занимает 8гб, только очистка стрим памяти и помогала играть дольше 1 часа и то после 90 мин. почти всегда крашило, хотя оперативки до буя. Заранее спасибо зо ответ.
 

SR_team

like pancake
Автор темы
BH Team
4,804
6,475
Переписал алгоритм, теперь он динамичнее меняет стриминг во все стороны (раньше очень плохо повышал). Плюс используется актуальная информация о лимитах, что избавляет от варнинга в F5 на арз
 

SR_team

like pancake
Автор темы
BH Team
4,804
6,475
Скажи пж, memory_full.cs надо удалять?
лучше удали, но если там не в цикле память пишется, то плагин ее перезапишет и будет работать нормально
И нормально ли работает в одиночке?
проверь. Должно работать как надо, т.к. зависимости от сампа нет
потому что обнова пол часа назад была залита
 
  • Нравится
Реакции: Dffdff

Diego_Sativa

Известный
575
60
Плагин динамически меняет количество стриминг памяти, а так же чистит ее при заполнении не удаляя объекты, которые вы видите на экране.

Посмотреть вложение 112629

Изначально задается наибольшее доступное на вашем ПК значение, а затем по мере использования ОЗУ изменяет это значение.

По умолчанию в игре ограничено количество памяти, которое используют объекты на экране. В SA:MP это ограничение повышено, но при использовании сборок даже повышенного ограничения бывает недостаточно.

Что происходит, когда игра достигает ограничения
Игра начинает удалять из памяти более старые объекты, но если ограничение маленькое, то могут исчезать объекты с экрана.

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

Почему нельзя выделить памяти больше, чем размер gta3.img, что бы все объекты были в памяти
Игра 32-битная, это значит, что она использует 32-битные регистры и инструкции процессора. Это значит, что максимальный адрес в памяти к которому игра может обратиться это 32 единицы в двоичной системе счисления, что равно 4 гигабайтам. Однако и 4гб игре не доступны, потому что число может быть не только положительным, но и отрицательным, а это значит, что среди 32 единиц и нолей одна цифра должна означать знак +/-. Следовательно на адреса в памяти остается 31 бит - 31 единица это 2гб.

Можно ли как-то пропатчить игру, что бы все 32 бита означали адрес и игра могла использовать 4гб
Да, но с нюансами. Можно установить флаг LAA (large address aware) в заголовке PE у gta_sa.exe, но игра сможет использовать только 3-3.8ГБ, т.к. исторические костыли в оставшейся памяти хранят систему ввода/вывода. Подробнее на википедии - https://en.wikipedia.org/wiki/3_GB_barrier . Вроде можно что-то поменять в параметрах загрузки Windows, если винда x64, но я не проверял

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

Что отличает этот плагин от других
Данный плагин проверяет сколько памяти игра использует НЕ для стриминга и всю остальную доступную память отдает под стриминг, что бы минимизировать лаги при его заполнении. При этом если это возможно, не дает игре выйти за пределы оперативной памяти, если ее меньше 4гб в компе, что позволяет избежать использования файла подкачки, загрузка данных из которого такая же медленная, как загрузка с диска.

Что будет делать плагин, когда стриминговая память закончится
Плагин заранее, при достижении 90% заполнения запустит таймер на 1 минуту, по истечению которого половина (или четверть, если памяти мало) стриминга будет очищено.

Как работает очистка стриминга
Сначала удаляются объекты, которых давно не было на экране. Если этого не достаточно, то удаляются объекты за спиной игрока, которые не видно. Если и этого не достаточно, то удаляются объекты на экране. В общем визуально очистка не должна быть заметна.

Исходники: https://gitlab.com/prime-hack/samp/plugins/DynamicStreaming
Как вызвать надиси "[память]"? Походу у меня не работает, нет надписей.
он мне за 2-е минуты оставил 1гб памяти..... и 2 раза сделал очистку, разве это норм?
 

Peresvet

Известный
375
127
Сия информация доступна только с лаунчера АРЗ? Плагин вообще даёт какую-то информацию о своей работе на обычной сборке?
1630448182919.png