#perf_prof_branch

1 messages · Page 43 of 1

whole cloud
#

Thank you for showing me what I have already seen a dozen times, please don't send me more of that crash, I have all I need, and don't ping me for it twice in the middle of the night I see all messages here anyway, k thx bb.

maiden sequoia
#

I believe it pinged two times because i edited the message to add a second link. It crashed 2 times in 5 minutes.

whole cloud
#

2.06.148581 new PROFILING branch with PERFORMANCE binaries, v6, server and client, windows 32/64-bit, linux server 32/64-bit

if you don't want to use the Steam branch, the files are also available for alternative download here:
https://drive.google.com/drive/folders/15p9j7C2nHUt6NoVfChX4YFuqzFXzblJh

empty goblet
whole cloud
#

If someone finds something badly broken in this prof build, please find it till thursday, thank you blobsalute

silk pewter
#

what, we can't report it before? 😁

stark falcon
#

does that mean 2.08 before winter break?

feral harness
#

unlikely

whole cloud
gritty wasp
whole cloud
#

think_turtle
I just want to get bugs fixed before the weekend

maiden sequoia
#

🦧

kindred radish
#

Somehow we lost about 10-25 Server FPS over the last updates. (Stable/perf doesn't make any difference)
I talked to other admins with high pop servers and they have similar problems.(Exile & KotH (vastly different (much less objects/no AI)) 🤔

Quote from a KotH Admin: "Its dropped my KoTH server at 80 players from 40fps to 16fps, no AI and less than 50 vehicles total"

Day it started should be the - 6/11/2021.


We shutdown the server every 3 hours, so "mission" runtime was ~60 minutes.
13.11.2021 - https://gyazo.com/496b1ecfeb9663ccb92ad795cea49cc9
30.11.2021 - https://gyazo.com/07c5af8b6d921ae18d7b4803f347a2af
^ - lower player numbers worse server FPS)

  • Made a test with no AI at all on the server and there was almost no difference in server FPS. I expected a huge difference since our server is pretty loaded (8k mission objects, 120+ AI, up to 70 players, no HC).
mellow lark
kindred radish
maiden sequoia
empty goblet
#

remember you can manually download the older server binaries from the google drive so you can verify your claim (e.g. if the 148560 perfoms better than 148581)

#

also another quesstion, how many CPUs that server has available or is it as some shared VM resource ?

kindred radish
# empty goblet also another quesstion, how many CPUs that server has available or is it as some...

i know but as i said, there is no difference atm in stable/or perf and our clients need to be able to join, so i couldn't revert to a older stable/perf version before

dedicated machine only for one arma server, ts server (mostly empty) and discord bot
AMD Ryzen 7 3800X 8-Core Processor @ 4.25 GHz
64 GB DDR-4 2666
NVME SSSD

And this quote from a much more experienced server admin with multiple servers (different game-modes)
"Its dropped my KoTH server at 80 players from 40fps to 16fps, no AI and less than 50 vehicles total"

empty goblet
#

i'm confused by no difference in stable / perf comment ... and what do the clients have with it ... anyone with main branch or performance binary of profiling can join server running main or (performance) profiling branch

#

the comments need to be clear ... which build number was fine and which ain't

#

e.g. 2.06.148470 is actual main branch, 2.06.148581 is actual profiling, 2.06.148560 was previous profiling etc.

#

also the MT fix which was returned to the profiling build 148581 already existed before, it was just temporary reverted due to the crashes i observed on our official servers

#

so, i would expect complains about performance to happen in the previous builds too

#

that's why we need the exact build numbers .... when the FPS was high, when it wasn't etc.

kindred radish
#

Similar bad perf in recent stable/perf. I know but server client version must be compatible so i can only go back some revisions ?!
The admin of the quote was from states it started for him at the 6/11/2021.
I think it was this hotfix update near this date (don't remember for sure).

empty goblet
#

build numbers, dates aren't helpful cause one can't really tell what the admin is running

#

is he running main branch, is he using profiling branch (performance or profiling binary) , is he using dev branch ?

#

Day it started should be the - 6/11/2021.
this is also quite annoying if i understand it properly ... that the low performance problem is happening for month already but we hear about it month later ?

#

why, why not report it asap

#

and i get no KOTH admins complain to me at KOTH discord either , so i'm not aware of any problem

kindred radish
#

We are used to getting blamed on the mods we use (Exile), make lots of changes etc.
So i always wanted to be sure about such feedback.

I try to get some more info and will reply back here.

empty goblet
#

ok, it definitely helps to narrow the case (to specific build / range of builds) if it ain't your mod/mission/server/scripting changes

kindred radish
#

And while looking at the patch-dates i think he got the date wrong in the message to me (https://steamdb.info/app/107410/patchnotes/)
I pretty sure he means the update from 16 November 2021, since he wrote that in the Exile Discord
— 16.11.2021 "Anyone else seeing a server performance drop since the Arma 3 update today?"

I felt some worse perf before (was running uptodate perf build all the time) so i can't say which build it was exactly nootlikethis

empty goblet
#

maybe he was before that on profiling branch and the update for WS overwrite it with main branch and he isn't on profiling branch since ?

#

in short, this is pure example why exact build numbers and branch IDs are needed (it's in .RPT)

#

Type: Public
Build: Profile
Version: 2.06.148581
this is profiling branch, profiling binary

#

Type: Public
Build: Stable
Version: 2.06.148581
this is profiling branch, performance binary

kindred radish
#

I am aware of that, i will add a extra log to our server with some basic needed performance metrics, so in the future i can pinpoint it more easily.
productVersion command returns this atm (perf client) ["Arma 3","Arma3",206,148581,"Stable",true,"Windows","x64"]
What that be suffice for the future ?
And i try to get the missing information this day, thanks already 👍

empty goblet
#

Type: Public
Build: Stable
Version: 2.06.148470
this is main branch, stable binary

empty goblet
whole cloud
#

Would be awesome if you could definitely say that it was the mini update.
But as far as I can see the update had no performance relevant stuff in there.
Mostly just minor fixes

hexed verge
#

for the ladder orientation fix, i noticed this on the tanoan building type Land_Shop_City_04_F

feral harness
#

@hexed verge could you give coordinates please?

#

this is in editor

hexed verge
empty goblet
#

btw. just FYI ... W10 and W11 treats Arma 3 just on par to notepad.exe in priorities (not as Games) hence that's another problem compared to W7/W8

hushed seal
#

🤦‍♂️ Setting process priority to high should "fix" that, correct?

quaint flame
#

Perhaps, but you need to do that every time you start A3, except you use a program.

silk summit
fickle geyser
#

thiiink I do not think it works like this.

silk summit
fickle geyser
#

do you need to ping me all the time?

silk summit
quaint flame
#

In case you didn't know. You can turn off pinging

quaint flame
#

You learn something every day I hope meowsweats

fickle geyser
hexed verge
#

so testing again, @feral harness. it is not near as bad as before for some reason.
position world [5755.25,10254.6,12.7227]

#

the one that i reported is the one at position world [5785.78,10276.1,15.476]

#

terrain both coords are from tanoa

hushed seal
thin wyvern
thin wyvern
#

3F = 0-5 on my 5600X

feral harness
hexed verge
#

wait one will check

feral harness
#

also maybe you need to verify files, as it looks inconsistent

hexed verge
#

it is consistent on the second cord it looks the same as the first screenshot at least

feral harness
#

I’ll check tomo on the map

hexed verge
#

looks fine in vr, even with the direction change

#

also looks fine if you tilt the building sideways in vr

feral harness
#

should work fine even upside down

inland dew
#

Tested in YAAB priority normal vs. above, high and real time.
FPS isn't higher at all

#

If not even slightly lower vs. normal

empty goblet
#

it ain't just normal priority thing what i got in mind ...

gritty wasp
#

maybe 12 gen intel related. I can test. But YAAB is so random run to run.

inland dew
gritty wasp
#

Still sounds like average temperature of universe.
Ok.
Win 11. 12 Gen Intel

  1. Stable perform better than perf. blobdoggoshruggoogly
  2. (perf + Pcore affinity + above normal) vs perf =
    +2.2 avg min (+5%)
    +1.23 avg (+2%)
    +6 avg max (+6.5%)
inland dew
#

Because of FPS variation from run to run

#

And min and max FPS can vary a lot from run to run

#

Only avg FPS is +- fine from run to run, although can vary to + or - 2-3 FPS

gritty wasp
#

I think stable vs perf will give more. In favor to stable. But I don't want to test it today

inland dew
gritty wasp
#

12700k + 4800CL38 DDR5. Full stock.
I don't have proper cooling for now. It is under 70 in arma, but hit 98 in cinebench. I need proper backplate and spacers. I think current one not tight enough.

inland dew
#

)))

inland dew
#

FPS with patch 2.04.147719 (LEGACY)
81.3 min. | 111.1 avg. | 196.2 max.

#

FPS with patch 2.06.148373
79.7 min. | 106.7 avg. | 181 max.

#

FPS with patch 2.06.148470 (STABLE)
80.1 min. | 109.8 avg. | 188.7 max.

#

FPS with patch 2.06.148581 (PERFORMANCE)
78.6 min. | 107.7 avg. | 185.1 max.

#

Only Arma and Steam were running, with all known and unnecessary background processes off and no other soft running to take screenshots, not even Steam overlay to press F12.
Restart of PC for YAAB runs of each build.
Waiting few minutes so Windows starts all the processes, to avoid lower/different FPS, in case I start YAAB runs, although there are some processes that still are starting.
Fixed CPU and GPU frequency, to avoid discrepancies coming from possible frequency variation.

random isle
#

@inland dew u disabled HT in bios ?

inland dew
#

To sum it all up, with patch 2.04.147719 (LEGACY) the performance is the best.

Patch 2.06.148470 (STABLE) comes 2nd with:
1.48% worse min. FPS vs. 2.04 (LEGACY)
1.17% worse avg. FPS vs. 2.04 (LEGACY)
3.82% worse max. FPS vs. 2.04 (LEGACY)

Patch 2.06.148581 (PERFORMANCE current/latest) comes 3rd with:
3.32% worse min. FPS vs. 2.04 (LEGACY)
1.87% worse min. FPS vs. 2.06 (STABLE)
3.06% worse avg. FPS vs. 2.04 (LEGACY)
1.91% worse avg. FPS vs. 2.06 (STABLE)
5.66% worse max. FPS vs. 2.04 (LEGACY)
1.91% worse max. FPS vs. 2.06 (STABLE)

Patch 2.06.148373 comes last

random isle
#

disable and run again

inland dew
#

doesn't bring anything

empty goblet
#

oh, remember to share with us the startup command-line

inland dew
inland dew
#

so, for now, using STABLE, gets you more performance than latest PERFORMANCE build

#

unfortunately, it's impossible to use 2.04 LEGACY, that gives the best performance, by far, to play on 2.06 servers (((

patent dome
#

Most performance related changes on the perf/prof branch right now are related to large AI numbers, far away ai, large triggers, and non-local ai. None of which really apply to YAAB, but multiplayer and larger missions.

#

So I don't think just going of YAAB is really what you should be using to determine if perf/prof is worth it.

random isle
#

id check that test mission code lol, 90% of mods in workshop are made by people who have no clue how arma works

empty goblet
patent dome
#

Yea, but he makes the conclusion that stable gives better peformance just based on YAAB, even though that barely shows any of the performance differences brought with recent perf/prof updates. Just hoped to bring some nuance to the results, as YAAB only covers singleplayer gameplay.

gritty wasp
inland dew
#

and that's not just me that has noticed it and it's also in multiplayer

#

one can say whatever one want's but numbers are there

patent dome
#

I know, I also can't give an explanation for it. But a lot of things are still getting added, fixed, changed. It could be anything.

inland dew
#

fixes/optimizations are really appreciated, but before moving forward, one should find the cause of lower performance with already made/implemented changes

patent dome
#

I'm also not saying it should not be looked at, I'm just trying to nuance that current perf/prof improvements won't show up in YAAB. And all other stuff is mostly anecdotal evidence, without the reproducible numbers YAAB provides.

inland dew
#

it won't show, sure, but performance has degraded and it's a fact

#

don't know how multipalyer related improvements could have degraded performance in multipalyer, as well as in singlepalyer at the same time, instead of improving it

#

you're the experts guys

#

we see/observe - we report

patent dome
#

I also can't explain it, I don't work on the code for it or have even studied it to know what could be the cause. I'm just trying to give my view on the observations.

inland dew
#

like people reporting lower performance on newer perf builds on their KotH servers, although there are 0 bots to begin with

patent dome
inland dew
#

so we have lower multiplayer performance, although 0 bots and lower singleplayer performance, although it's not multiplayer

#

anyways, these issues need to be tracked down, somehow

patent dome
#

Profiling would be the tool for that, which Dedmen regularly does. But so far it is all based on known performance bottlenecks. I don't think we have a clue where to start looking for the small performance degradation from 2.04 to 2.06 (perf or stable)

#

With time it can probably be figured out

inland dew
#

as one can see, even latest perf is slower than stable

#

and current stable slower than previous stable

#

well, 3 to almost 6% degradation, I wouldn't call that small, to be honest

patent dome
#

I'm saying small because a 1-3 fps difference in min and avg framerates is not really noticeable at 80+ fps.

whole cloud
#

You have to keep context in mind.
5% at 80fps are alot less than 5% at 20fps

#

Who cares when you get 78 instead of 80 fps. Right. No one.

Who cares when you get 50fps instead of 12... Yeah.

inland dew
#

anyways, one should talk about % only

#

well, it's "just" 3-4 FPS less, but that's on my system

#

on older/weaker systems it can easily be more than that

whole cloud
#

Older/weaker systems never even get that high.
If something is slower, it's probably one small subsystem that makes up a small part of the frame, and not literally the whole engine

inland dew
#

well, you certainly know better

#

I'm not an expert

#

but improvements/optimizations/fixes should only improve performance and not degrade it, no matter buy how much

whole cloud
#

I wanted to do some YAAB focused profiling.
But didn't think it's really worth the time investment.
I don't care about squeezing out 1 percent more at 80fps, while the majority of the players plays in completely different MP scenarios at like 20-30fps with occasional outright freezes

inland dew
#

if performance goes down, how can one call that optimization/improvement?

#

that's right - one can't

whole cloud
#

If you want performance. I can just strip out all AI features for you if that's what you want..

inland dew
#

no, but if there are perf issues, one should admit it and see what can be done to solve it, instead of saying I don't care

#

and the definition of improvements is to improve, not to degrade. correct me if I'm wrong

silk pewter
whole cloud
#

Oh you prefer to get 90 fps in a Singleplayer scenario, instead of getting towing and moddable keybinding and better ladder movement and steam rich presence and better ladder movement and more sound modability and more graphics settings control.
Ok then. Just go back to a older Arma version and have your fun there.

inland dew
#

what all of this has to do with lower perofrmance?

whole cloud
#

You don't get heated car seats for free.
Either more fuel efficiency, or heated seats. Not both.

whole cloud
#

Sorry if you feel offended that I don't care about your few % fps degradation at 80fps (which is well beyond playable) but.. i don't.

#

I have other fires to put out than that are more important

inland dew
#

I just wanted to report my findings

#

I did it

#

it's up to you guys

#

whether you will (be able/willing) do something about it

whole cloud
#

Yep and thank you for that.
But not thank you for behaving like a few percent at that top end should be our top priority and we should outright drop everything were doing for your well-being.

inland dew
#

I didn't say anything about you all having to outright drop everything for my well-being

whole cloud
inland dew
#

but ok, I guess I won't spend time anymore on such stuff in the future, seeing the reaction

inland dew
#

but ok, I'm off

#

Just so you know, there were already such situations at BI, in the past, when there were issues that weren't addressed timely or simply were not discovered and more and more builds/patches were released since and it was impossible to find when and because of what certain issues appeared, that weren't there before.
And I'm talking about the game itself, not a problem in an outdated custom mission

maiden sequoia
#

I don't mind if Arma 3 loose some performance for the map crash fix 🦧 🦧 🦧 🦧 🦧

gritty wasp
gritty wasp
gritty wasp
vagrant zodiac
#

I’m running AMD and have noticed a steady degradation of YAAB for some time. However, I can’t say that I’ve seen the same drops in MP environment- although that’s a lot more subjective than YAAB. Also without benchmarking regularly, I can’t say how much is directly down to A3 updates. One big step I mentioned here (as it was supposed to be a big performance step forwards- I think it might have been possibly particle related) but I never had time to do proper back to backs.
But over time, the loss is much more dramatic. My 1080p standard baseline not long after building my current machine was 94-97 fps average. Now getting over 80fps is not easy.
(And 84 FPS used to be my 1440p personal/ultra style settings average) How much of this is caused by windows security updates etc, I don’t know as I don’t have time to benchmark regularly. But this is despite other benchmarks actually improving over time with small updates.

But thought I should mention it given the discussion above.
We are obviously hugely grateful for all the fixes and cool new features like IR lights but perhaps more help is needed from the community to run things like YAAB for additional feedback?

feral harness
inland dew
restive pilot
#

Well if you tested the builds in that order one after the other maybe the performance loss was due to overheating thonk

inland dew
#

As one can read, people with less powerful builds lost more than just few FPS.
But who cares, right

inland dew
#

I have good cooling and CPU and GPU frequency didn't drop or vary

#

It just is how it is. Don't look for issues in my testing or my system - there are none

burnt turret
#

Hey there! I'm a newbie and I just found out about this branch, I've been reading some stuff but I still feel somewhat bogged down by a bunch of technical jargon, can I have some ELI5 explanation? sorry if it's a dumb question!

maiden sequoia
whole cloud
burnt turret
whole cloud
#

usually yes. There are some performance things that are exclusive to profiling branch until they are sufficiently tested

feral harness
inland dew
feral harness
#

I will tell you what is the difference, I would like to eliminate the possibility that windows shits all over itself the longer it runs. Because the difference in degration is consistent I’d like to be able to make sure it is not due to the OS

inland dew
#

Only for build 373 I upgraded from 2.04 Legacy to 2.06 stable (470) and replaced the .exe by 373

feral harness
#

I dunno what this has to do with what I asked

inland dew
feral harness
#

Ok, makes sense

mellow lark
#

Also why is almost 6% difference considered 'nothing'? That's pretty significant in my eyes

#

If only we had a built-in benchmark 😄

inland dew
# feral harness Ok, makes sense

I was switching the branch, then verifying the integrity, then restarting the PC and only then starting to test, closing all known and unnecessary processes, only Arma and Steam running, no soft to momitor FPS or to take pics, not even Steam overlay enabled + Arma launcher closed, once Arma started.

  • I waited several minutes after restarting so that Windows starts all the processes, before starting to test, so processes that still were starting wouldn't influence FPS
mellow lark
#

Differences will likely be even bigger on lower end systems

inland dew
#

And no CPU/GPU frequency variations

inland dew
mellow lark
#

Mhm maybe my lower than before YAAB results aren't just random then

inland dew
#

And we have several players that complained on our servers, that their FPS is noticably lower than it was before , players that play on our servers on daily basis.
So they know +- the FPS they're getting usually when server full or closer to the end of the round or when it's Kavala or Pyrgos etc.

inland dew
mellow lark
#

Well it could even be magnified if there are regressions on both clientside and serverside processed stuff in MP

#

I could provide some YAAB runs for reference if you'd like

whole cloud
#

Optimizing several millisecond big problems is usually easier than trying to hunt microseconds.

inland dew
whole cloud
#

I can get huge improvements at the low end and with freezes within a few days.
But optimizing at the top end when the game is already running smoother than it needs to be is very hard and takes alot more time

mellow lark
#

Makes sense I guess

whole cloud
#

I don't want to invest months if work to get people up from 80fps to 120fps.
I'd MUCH rather spend the time to get people from 20 to 40fps, and in the meantime also add new features

inland dew
#

Most people play at sub 30 or slightly past 30 FPS in MP, just so you know

whole cloud
mellow lark
#

I mean if you get people from 20 to 40 it's likely that top end systems will see improvements too

#

Maybe not as much, though

whole cloud
whole cloud
#

If I can do something that gives +5fps from 20fps baseline, but -5fps at 80fps baseline, then I will do that.

inland dew
whole cloud
#

And i did quite a few of such optimizations recently.
Increase the base cost, but decrease the scaling alot.

For example ViV cargo, loading a object into empty vehicle is now slower, maybe even +100% slower.

But when you load into a full vehicle, it's like 40+ second game freeze, down to <1 second game freeze.

mellow lark
#

groove's system is like the 0.01% rig, if not less. Would be valuable to see results on an average system

whole cloud
#

Latest profiling also has the attachTo tweak.
It has actually a performance deficit in situations where you already run very high fps and do lots of rendering.
But we measured +10fps in contact campaign at I think 40fps.

inland dew
#

New features is very very nice, especially that useful and at that late state of the game.
And that they don't come for free, but put more load on the CPU, it's to be expected.

I have nothing to say about that.

But when someone is talking exactly/specifically about optimisations and people observe noticable performance loss, that can't be call optimisations.

Hope you understand what I mean.

Don't mix new features with optimisations.
These are completely different things

whole cloud
#

If you run at 80fps, then you are simply not my target group for optimizations.
If you loose performance which doesn't impact your playability, but that makes me improve other players playability then that's perfectly fine for me.

#

I don't know how often you want me to repeat myself.
Yes there might be slight performance deficits at the high end, as long as the low end sees improvements, i don't care about your deficit.

#

Once the low end issues are fixed, and the people who today run 15-20fps can run 60, then I start to care about your high end issues.

#

Your benchmarking is very welcome to see how the tweaks impact the high end, but in the end it's not something we need to act on, it's not a priority.
If you can show that there are significant deficits at the low end, then I'm very interested.

pallid island
#

Which version added the attachTo tweak? 👀

fickle geyser
#

You don't get it, at all.
You don't get it too, 3% in high FPS might not translate to 3% on low fps.

whole cloud
#

But "I get 3-5% lower on very high end, i ASSUME that PROBABLY also impacts the low end" is not very useful for me

fickle geyser
#

That's what Dedmen is explaining in the MS example.

whole cloud
#

Ah no, it was in v5

fickle geyser
#

So yes there's some FPS degradation in high fps scenario, but the question is Does it affect lower end machines and lower fps scenarios?

inland dew
# whole cloud If you run at 80fps, then you are simply not my target group for optimizations. ...

Again, last time.
It's my system and it's singleplayer, 2 minutes run with not that many AI and vehicles, in a mid sized village.

in MP, with a lot of players, AI, vehicles, many many hours of non stop gameplay, with a lot of corpses and wrecks and buildings destructions and syncing stuff between players + their much much slower/older PCs, with 2.06 stable and especially with latest perf build, these players observe more than just few FPS lost, at their sub or above 30 FPS

pallid island
# whole cloud Ah no, it was in v5

Ah, I see it now, thanks. Didn't put together that this was referring to attachTo

 - Tweaked: Potential performance optimization when attaching static objects
inland dew
#

As already said, there are players with much weaker PCs that report more than just few FPS lost, in MP

whole cloud
#

Groove.
You are not understanding me.
Yes, your Singleplayer scenario probably spends the most of it's time in rendering.
The MP scenario that applies to the majority of players spends it's time in simulation and networking and stuff.
They are completely different systems.

It doesn't matter to the low end players if rendering gets 20% slower, if rendering actually only makes up 4% of their total frametime.

But for you at your high end, with few AI and vehicles, you spend maybe 80% of your frame at rendering, and that 20% slower is HUGE for you.

#

It literally is irrelevantly small difference for low end players, but a HUGE difference for high end players.

But.. i don't care! High end players are already high enough

inland dew
#

Nevermind...

#

We're talking past each other

whole cloud
#

Performance degradation in one small (of dozens) subsystem that may impact you alot, may not matter at all to others.

I do see your performance difference, but "it probably also scales for lower fps" is just plain incorrect

inland dew
#

Other people report also FPS degradation, in MP, on weaker PCs and it's not just few FPS, but ok

whole cloud
#

That's also what NeilZar tried to tell you.
There were lots of improvements for AI.
Some even making differences like 3->50fps.

Meanwhile we did changes to pip rendering and stuff, that for you make the difference of 80->76 fps.

#

If you can show low end benchmarks or profiling data in exactly these problematic situations and comparisons there, that would be HUGELY useful.

But your 80fps benchmarks saying "hey 3% lower there" are useless when you're trying to talk about these completely different scenarios.

inland dew
whole cloud
#

You cannot compare your SP YAAB performance with MP performance.
They are vastly different scenarios with the bottlenecks being in completely different places.

inland dew
#

That I understand

#

But just so you know, I'm not an expert.
I was just told by several people that their MP experience was worse lately than it used to be no so long time ago.
And I simply decided to test in YAAB, although it's a completely different scenario.
But even in YAAB, although it's different from MP, I could see lower FPS.

Just to say it.
I understand it's different than MP.
Just my 50 cents

whole cloud
#

Again thank you for your benchmarking.
But stop telling us that your issues should be our top priority.
They are not and they won't be.

If people report lower fps at the low end, that's a priority.
But it's also VERY difficult to compare at that end because there are no standard benchmarks there, basically every run will be different.
Maybe the server was running for longer and there were garbage entities lying around, maybe the player had chrome in the background, maybe a windows update was installed.

Your clean benchmarks are nice for the high end, but they just don't help with he low end

#

Like currently we have reports on noticable fps drop on serverside, that's a big thing and people are helping to narrow it down and we will work on that.

But some people saying "my fps feel lower" and you measuring the high end and telling us we should make it a priority aren't useful.

inland dew
#

Let's move on

silk pewter
#

anyways, these issues need to be tracked down, somehow

before moving forward, one should find the cause of lower performance with already made/implemented changes

I think those made it look like "I lost perf on my side, then it's not a fix"

I agree, let's move on
both want the best for the game, just that the POV & data is different of course

inland dew
#

AI and triggers multi-threading ❤️

#

I remember there were attempts to do something with the sound.
Don't know if it's still in the works, abandoned or already done

whole cloud
#

The sound thing never moved beyond idea stage.
But i think I still have it on the list.

Although...... Maybe it partly exists.
There is a prof branch exclusive tweak.
Normally Arma waits for previous frame rendering to be done, then does sound and AI, then renders new frame.
Or maybe I'm swapping some things, it was something like that.
I changed it to already do the stuff first, before waiting for rendering, so that it renders in background and does other stuff in foreground.
But there were no clear results.
It was the "waitBG" scope in profiling

Instead of waiting, it should do other stuff.

empty goblet
#

i will just chime In, to understand the work DD does in background (with help of kk, me, community)

#

i've got experimental 2.06.148592 server binary but most of the optimizing went into threaded AI and triggers and similar, so if anyone want to try , just say (use mention or DM me, note, it's unsigned executable, only windows 64bit, only profiling type of binary (rpt spammy), not performance)

#

so if someone here run windows 64-bit server with lot of AI or triggers and want to test it ...

inland dew
#

will you use it on WL EU?

empty goblet
#

it's already used there since friday, same on some Zeus serves, so far no oddities

inland dew
#

poor harddrive(s) )))

empty goblet
#

in relation to performance : unfortunately the fully threaded / split from waiting for primary/simulation thread renderer exists only in DayZ (fall 2016, it was still RV engine) , the soundengine multithreading similar, it was started but then moved on Enfusion

#

e.g. now , i just wish to figure / repro and fix those mostly AI/vehicles bugs next year but it will be hard

  • friendly MG randomly execute teammates (including player leader) via FF (still unsure if it's related to crossing LOS&LOF / attempt to lay suppressive fire going wrong)
  • friendly non-heavy AT ignores enemy wheeled/tracked APC/tanks (even while given specific order to fire at it while direct line of sight)
  • AI instantly knowsabout you while firing launcher (often)
  • AI instantly snap on your position (random, its either fine (they search for you, miss some shots) but when NOT then you dead in 1-2 shots, first burst)
  • vehicle bumps/flops/fly away when you replace dead corpse in gunner/driver/commander/passenger with yourself or your AI (the corpse seems become unmovable colliding object for frame or two)
  • flipping vehicles way too often (you will find vehicles literally littered alongside roads)
inland dew
#

It makes me mad...

empty goblet
#

and ofcourse the usual neverending goal of improved performance for larger player numbers in MP ...

#

feel free to add whatever you deem important enough ...

silk pewter
#

say3D FPP vs 3PP 😁

empty goblet
#

now i base my AI observation on 'suffering playthru of whole WL map at Livonia, Malden and Altis in past week (being ill allows me to just watch the horrors)

quaint flame
#

I wanna expand that list by:

  • Prevent tanks from flying into space 😄
restive pilot
#

but that's arma3's best feature meowsweats

quaint flame
#

Okay then I add:

  • AI instantly knows your position when explosives are used.
whole cloud
#

Lol do you know that we had something like that?

#

If youd shoot mortar near enemy, and get out of the mortar before impact, AI would instantly know your exact position

silk pewter
#

oh!

#

I think in ArmA as well there was this "use satchel on tank" and even if you are behind the hill the enemy instantly knows your whereabouts

#

hopefully fixed since 😁

inland dew
silk pewter
#

well it had been fixed at one point (maybe re-broken afterwards)

I did not encounter that in A2 nor A3, I should check again

quaint flame
#

It's definitely there in A3

whole cloud
#

Might be annoying to fix, they don't know how the explosive was triggered.
But I think generally explosive damage shouldn't reveal who caused it, since they cannot know that anyway.
Does that sound safe?

restive pilot
whole cloud
#

Even for a grenade, if you see it thrown you know from where and who.
But if it just explodes next to you, you have no idea

#

Yeah alarmed but not reveal enemy

#

Lol that'd be funny tho blobcat_bongo_a

silk pewter
#

…it hurts

#

evidence that ArmA > Arma 3

whole cloud
fickle geyser
#

OFP > Arma

empty goblet
silk pewter
#

yep 😭
but I swear I saw it fixed in A1

empty goblet
#

ye that one was fixed ages ago ... guess something similar creeps back

maiden sequoia
#

@inland dew i'm having 65 fps in YAAB with a watercolled i9 10900KF (10 cores) / 32 GB DDR4 3600 Mhz / RTX 3080 Ti with 1080p and standart settings. This is bad?

inland dew
feral harness
hexed verge
#

heh, is it because of the un even terrain beneath?

feral harness
#

could be

#

I fixed it but am puzzled by it, the problem might lie deep in the engine

silk pewter
#

rotation speed at the time of action?

hexed verge
#

doubt it, when i tried, i was standing perfectly still. the angle was also always the same per ladder

empty goblet
#

in case someone want to try the server binary with performance improvements (no builds till 2nd week of January), not-signed, experimental!
pw: testbuild https://www.dropbox.com/s/t8tyu4dtvx3fxox/Arma3RetailProfile_Server_x64_windows.7z?dl=0
there are also new entries in RPT, which start with timeLimiter, e.g,

2021/12/05, 3:05:18 TimeLimiter, Category AITraceFireSector exceeded time limit, runtime 15589, limit 15000, denied requests 10
2021/12/05, 3:05:18 Ent ba83aba040, dbg R Charlie 2-6:2/I_LT_01_cannon_F [9215.067383,21692.531250,16.342579], time 933
2021/12/05, 3:05:18 Ent ba841c8080, dbg R Alpha 1-3:3/I_MRAP_03_hmg_F [3820.666016,13778.958984,23.315659], time 769
this means is that unit for listed operation exceeded allocated amount of ms per frame and it will be delayed till next frame
it should be in way that units which failed previous frame gets priority over new units for the next frame to avoid endless cascade
we didn't yet fully investigate why some (usually crew/gunner) causing this, so that's something for next year headache
you should observe uptick in better multi-core utilization with this binary related to AI (dedicated server/HC)
if mission / mods got lot of triggers (both in sqf and fsm), there should be noticeable improvement too
it ain't optimal, some of the AI and triggers optimizations didn't make it in, so that's something to expect in January

tawdry gazelle
autumn timber
whole cloud
#

That timelimiter thing may also be the cause of some server deaths. Where fps drop to close to 0, most players get kicked, and then suddenly the server recovers and runs fine again

empty goblet
whole cloud
#

Well it should prevent that from happening

kindred radish
#

Is that build compatible with stable client ?
If so i would throw it on our server server, can't make our situation worse i guess.

whole cloud
#

Yu

tawdry gazelle
#

holy ****? that server dont even have any log???

maiden sequoia
#

Run server with -limitFPS=10 or 5 is good way to simulate a overloaded server? I wan't to see how a new feature will run on a full & overloaded server.

whole cloud
#

No

maiden sequoia
#

I'm using profilling, what is this?
total/wSimu/perAI/aiAll/aiGrp/aiGCT/tgTrk/tgTrF/tgSee

#

I have many tgSee causing a small freeze.

#

Using mods.

whole cloud
#

Ai targeting

feral harness
whole cloud
#

tgSee is a recurring problem, i don't know if that's capped in the time limiter, i think it's not

maiden sequoia
#

I used:diag_captureSlowFrame ['total',1/10];

#

I'm using profilling from Steam. Not the last one Dwarden released above.

#

I removed all mods but not the custom map and CUP mods (can't remove CUP because there is CUP stuff in database). Same result.

#

Map: Chernarus Redux. I don't have this problem in Altis with no mods.

empty goblet
#

use the latest and you may know more

maiden sequoia
#

My servers are on GTX Gaming, so i can't update server exe 🙁

#

I'm just using client profilling.

kindred radish
#
20:03:08 Ent 23295895880, dbg R Alpha 1-3:1/Exile_Unit_Player [11251.826172,9436.665039,290.549286], time 18207
20:03:08 Ent 2332173da00, dbg B Alpha 3-6:2/RyanZombieC_man_polo_5_Fwalker [1704.375000,8879.375000,143.831253], time 13
20:03:08 Ent 2318cd64100, dbg B Alpha 1-3:2/RyanZombieC_man_polo_4_Fslow [12194.375000,8580.625000,4.676875], time 5
20:03:08 Ent 2331249ccc0, dbg B Alpha 1-3:1/RyanZombie22slow [12124.374023,8805.625977,29.488594], time 4
20:03:08 Ent 23184294780, dbg B Alpha 1-2:1/RyanZombieC_Orestesslow [12213.125000,14114.375000,43.978123], time 3```

Do you guys need logs with these ? I guess it doesn't make sense for non vanilla/close to vanilla scenarios ?
whole cloud
#

Exile_Unit_Player? But that's a AI unit? Why is it named player?

vale shoal
#

Exile_Unit_Player is the playable character of the Exile mod

maiden sequoia
#

Why it have time 18207 while others have time 3, 4, 5 and 13?

maiden sequoia
#

What client i need to connect to lastest Dwarden server Performance Binaries (2.06.148592)?

#

I'm using Steam Profilling branch and can't connect to the 2.06.148592 server.

empty goblet
#

148470 main and any 2.06 profiling/performace client shall be able connect

empty goblet
whole cloud
maiden sequoia
#

Dwarden, GTX put your last EXE in my server and it became "red" on the launcher for me, i tried all branchs.

#

Server version is 2.06.148592.

#

Same happens on my local server.

maiden sequoia
empty goblet
#

that's correct ...

kindred radish
whole cloud
#

Thanks that's very interesting owoyay

feral harness
empty goblet
maiden sequoia
kindred radish
kindred radish
#

Here is another incident of the TimeLimiterlog from the same server period. (These were the only two so far)
https://pastebin.com/KY6XVjFn

Was around the time we usually got a mass kick lately (2h ~45m runtime) while also having low server fps (<15) and loads of stray entities (~15k+ total / 10k just from two clients).
Server didn't stall and didn't kick players tho, iam not 100 % convinced it will stay like that, but one can hope 😆

whole cloud
#

Do you have repro for stray entities yet?

kindred radish
whole cloud
#

we usually got a mass kick lately
Please keep eye on such things, that info is really valuable, if the time limiter kicks in when you would usually get freezes or mass kicks that's very important for me

tawdry gazelle
#

As for the mass kick, my server would have 4-6 players kicked out of 20 total when server is sometimes overloaded. I wonder if there's any way to tweak or remove the time limiter?

tawdry gazelle
tawdry gazelle
#

I have 5 server instances, two on Dwarden's 148592, three on dedmen's 148581, one on stable. 🤣

#

haven't notice that happens on 148592 tho.

empty goblet
tawdry gazelle
#

emmm then the mass kick issue was not caused by time limiter? May be normal network thing? It happens quite often when we play zeus missions... 🤔

maiden sequoia
#

I also just replaced the exe.

empty goblet
#

there could be other causes where TM fails but that's to be seen, from my PoV the servers seems more than less stable/reliable (FPS wise)

whole cloud
empty goblet
#

there is also variant of it, where it affects just BattlEye operations or Steam client ticket processing (most likely timeout on calls/mt)

#

so far, the TimeLimiter introduced in 148592 actually seems to help resolve (to be precise, it's work-around the stall issue) some of the trigger cases

maiden sequoia
#

🦧

edgy comet
empty goblet
#

ye ofc you can get other freezes/stalls due to scripting and some other bugs ... aka there is more than 1 trigger case

random isle
#

optimize your code before you post here

maiden sequoia
#

When i create a mission on-fly i use scheduled code and even periodic uiSleeps between objects spawn just to not cause freeze on players.

#

I'm good at the "art of sleep" lol

tawdry gazelle
maiden sequoia
#

This is why i was having problems with last unofficial server performance exe:requiredBuild = 999999999;

#

🤬

#

There is no client on that version, so NO-ONE was able to connect until i reduced requiredBuild. I set it to zero.

rain moth
#

do you need to set it at all?

maiden sequoia
#

@rain moth not set it is the same as set it to zero, you get:
Required Version 2.06.*
in the Launcher. So no, no need to set it.

autumn timber
#

If requiredBuild is set to a large number, like requiredBuild = 999999999; for example, it will automatically be lowered to the current server version.
Heh, interesting. Didn't know that.
Could it be that the definition of a "large number" has changed? 🙂

random isle
#

this new? Tried to AccessTargetList for non-local AI group while non-local targeting was disabled! Engine will now enable non-local targeting which will hurt clientside performance.

whole cloud
#

Ye

random isle
#

Is that cause of findNearestEnemy and forgetTarget function ?

#

i use that for mortar fire script fire and forget

whole cloud
#

ye, for example.

#

If you run it on remote AI

random isle
#

the loop runs on HC for local HC units though

whole cloud
#

There are also some other reasons that i need to check.
I think if it's script caused it should log which script it was

random isle
#

cant even replicate it, but i do see that error few times in 5-6 hour games

plain trout
#

is it possible to change the default memory allocator to the windows (system) allocator for windows 10? At least on Livionia the performance double or tripples and the weird tree groups popping in and out is gone

empty goblet
#

each major release of OS changes the kernel and memory allocator behavior

#

also, this is first time i hear about N times gains ... not even the SSE4 vs AVX1/2 was able go past 10-20%

tawdry gazelle
#

There might be some bugs related to memory allocator though. Some players in my server have reported terrain objects flickering and I tell them to change memalloc to system, all issues gone... 🤔

#

Although the best solution to the problem is reinstall the OS... but they wouldn't love to. 😅

random isle
#

i re-install server os on every game end 😄

#

windows 2019 core with docker containers managed from gitlab along with code updates to mission, full automation ....

full nova
#

how to revert back from Perf_prof build?

inland dew
empty goblet
verbal mist
#

Hi @empty goblet an @whole cloud thanks a lot for your work!
Since I bought a 12900K and did some benching in YAAB my question: Is it possible to enable AVX512 / are there plans to enable it in the Arma3 memory allocator ? If you disable the E-Cores the P-Cores of 12th Gen. Intel CPUs are capable of AVX512 and most mainboard manufacturers allow it to be enabled, ASUS has this option ; MSI will allow it in the next beta bios.

So any chances of you enabling it in a future memory allocator?

empty goblet
#

AVX512 will give nearly no gains compared to AVX2 except turning your cpu into roasting pan

whole cloud
verbal mist
#

@empty goblet and @whole cloud thx for your very quick and clear answers. 👍
Highly appreciated.

So I will start memory tuning and AVX2 instead of AVX1.

empty goblet
#

ye the difference between avx1 and avx2 is small but still there is ... someone like @inland dew may tell you his findings results

verbal mist
#

I really want to get beyond my last result of 128 fps in YAAB but the suggested memory timings in MSI Dragon Ball 1.0.0.8 produced too much errors. AVX2 might be enough to crush the 130 wall. A project for the holidays.😀

autumn timber
#

128 fps
ONLY 128fps? How can you even hit something with such a slideshow! 🙉

mellow lark
#

Hehe xd

autumn timber
#

I dunno... dude is probably playing only COOP missions because 128 fps is literally unplayable

empty goblet
#

maybe he has 144Hz display and trying to match it in fps 🤣

#

then, at 24th gets 200Hz monitor as present and needs to start tweak again EvilGrin

verbal mist
#

oh no that sounds like too much pain
3440x1440 @100Hz it is.
And Benching is a worthwhile endeavour in itself - I am still a beginner in this art.

elder torrent
tawdry gazelle
empty goblet
#

it works ... you will see other name instead if it was using another allocator and there would be no game if it didn't work 😉

tawdry gazelle
#

Ah, that's good. I've follow the instruction provided in the CMA.zip to compiled 2019_U3 version, it seems work, too.

#

If you are intrested, may I post it here for more people to test?

tawdry gazelle
#

Okay... seems 2019_U3 version does not gain any performance at all... even worse than system alloc...🥲

tawdry gazelle
#

I wonder if the memory allocator really uses AVX512 even though I compile it with the feature enabled in Visual Studio...

restive pilot
#

why would it use AVX512?

#

it should use AVX2

tawdry gazelle
mellow lark
tawdry gazelle
#

I've followed the CMA's source code and made an implementation of the oneTBB 2021.5.0 branch, and run YAAB for test with heavy mod loaded.

tawdry gazelle
#

And the new version seems better handling worst case fps, and has more stable frame interval. (or what do you call time between frames? frame pacing? frame duration? I dont know what it is in English)

#

Though I'm not sure if I implemented the hugePages part right... 😅

empty goblet
#

it's with the source included ?

tawdry gazelle
#

source code is here, just published.

#

Ah, I have to hit the road now... (going home, going home...) 😆

autumn timber
#

I was surprised to see only 19 commits in your branch, but then noticed that you branched out of the onetbb_2021 branch and not master 🙂

tawdry gazelle
autumn timber
#

Yes, I'm on the right link. And onetbb_2021 has 18 commits so it's alright

autumn timber
#

I meant that I saw 19 commits in total in that branch, which made me go "huh?"

tawdry gazelle
#

Ah get your point🤣

autumn timber
#

Especially that master has 191 commits 😄

tawdry gazelle
#

im not native English so... 😅

tawdry gazelle
empty goblet
tawdry gazelle
#

Here are my YAAB test results with no mods loaded, captured by Nvidia FrameView:```
Avg FPS 90th % 95th % 99th % RenderPresentLatency (ms)
Default 62.172 48.512 45.262 40.29 2.202
2021.5 68.658 55.056 51.535 45.554 2.415
Boost 10.43% 13.49% 13.86% 13.07% 9.67%

#

Significant, right? With heavily mods loaded and post-process effects provided by ReShade, it also has stable 5% performance boosts. 🥳

fickle geyser
#

Default as in arma default allocator or the earlier CMA?

tawdry gazelle
#

Compared with CMA, it also has 5% performance gain. (just not shown here.)

#

But it's just YAAB in singleplayer. I haven't test server side and multiplayer performance... I hope someone can help testing this.

#

really interesting finding...

empty goblet
#

i do wonder if you compile just AVX1 one, what will the performance gain would be (e.g. if it's just fixes in the allocator)

tawdry gazelle
empty goblet
#

and ofc compare the result of those vs system allocator

restive pilot
empty goblet
#

it's part of the download, both sources and libs

tawdry gazelle
restive pilot
restive pilot
#

I searched for it but all I saw was AVX thonk
I enabled it anyway but I don't think it'll use them

restive pilot
#

looks like I built it wrong meowsweats

tawdry gazelle
tawdry gazelle
#

(Why cant I post pictures!!! 😭 )

restive pilot
tawdry gazelle
#

Ah, that should be it. 😂

#

I've compiled more version as dwarden suggested, here's the binary link. (Source codes still in my repo)

restive pilot
#

it gives better boost than the one I compiled ... meowsweats

#

gonna try again with /MT

tawdry gazelle
#

I wonder if compiler brings those performance boost.

restive pilot
#

v142 (VS2019)

tawdry gazelle
#

As far as I know, 5% is a massive boost for game performance, even overcloking could hardly give that much. 🤔

restive pilot
restive pilot
#

it was the MT one that was 5% meowsweats

#

so yeah, pretty cool blobcloseenjoy

tawdry gazelle
#

Ded : meowsweats

restive pilot
#

@tawdry gazelle btw if you unset AVX does it make any difference for you?

#

it compiles the exact same lib for me thonk

tawdry gazelle
restive pilot
#

dunno blobdoggoshruggoogly

tawdry gazelle
#

windows dont have something to directly see the dll's instruction set...

#

I'm considering decompiling it and see if it uses any new instruction...

restive pilot
#

I just compared their sizes...and they were exactly the same meowsweats

tawdry gazelle
restive pilot
#

actually nvm

#

it doesn't even care meowsweats

#
#if (defined(__AVX__) || (_MSC_VER >= 1600 && defined(_M_X64))) && !defined(__sun)
#

it enables it automatically if _M_X64(x64 bit) is set and _MSC_VER >= 1600

tawdry gazelle
#

Yes, that's what I said, 64bit default uses AVX. But what about AVX2 and AVX512?

restive pilot
#

I didn't find any reference to AVX2, let alone AVX512

tawdry gazelle
#

me either... notlikemeow

#

the easiest way is to get a PC with AVX support but not AVX2 support to test.

#

if the AVX2 is true avx2, it would crash as cpu dont support it, but avx one would run. 🤣

restive pilot
#

looks like it doesn't use any vectorization at all meowsweats (except maybe some auto vectorizations?)

tawdry gazelle
#

I've wrote a program to detect if compiler would use those instruction set marcos.

#

It shows that in MSVC, x64 would use IA32 (no extension instruction set at all) by default, and x86 would use SSE2 by default.

#

So the compiler paramter should taking effects, we just dont know if TBB actually use them...meowfacepalm

#

The code is simple:```
int main()
{
#ifdef AVX512BW
std::cout << "AVX512BW\n";
#endif

#ifdef AVX512CD
std::cout << "AVX512CD\n";
#endif

#ifdef AVX512DQ
std::cout << "AVX512DQ\n";
#endif

#ifdef AVX512F
std::cout << "AVX512F\n";
#endif

#ifdef AVX512VL
std::cout << "AVX512VL\n";
#endif

#ifdef AVX2
std::cout << "AVX2\n";
#endif

#ifdef AVX
std::cout << "AVX\n";
#endif

#if _M_IX86_FP == 2
std::cout << "_M_IX86_FP == 2, SSE2 Probably\n";
#endif

#if _M_IX86_FP == 1
std::cout << "_M_IX86_FP == 1, SSE Probably\n";
#endif

#if _M_IX86_FP == 0
std::cout << "_M_IX86_FP == 0, IA32 Probably\n";
#endif
}

restive pilot
#

it does use vectorizations (SSE and AVX) in other parts, but not for the malloc

tawdry gazelle
#

okay... that's a pity...😅 so we shouldn't have noticeable performance differences on different instruction set, major performance impact should be caused by different TBB version...

restive pilot
tawdry gazelle
restive pilot
#

also it seems that the new TBB has about 5% more memory usage as well (needs more testing tho)
after the benchmark had ended, new TBB was using ~4.5 GB memory for me, while the default TBB and mi were ~4.2

restive pilot
tawdry gazelle
#

Ah... 🤣

#

As I run a more carefully performance test, I've come to a confusing conclusion...

#

There seems no more gain than CMA this time... meowfacepalm

restive pilot
#

what about this one? meowsweats

#

your PC is better than mine, so maybe you can tell more accurately
P.S: it's broken.

tawdry gazelle
#

Here's another benchmark result of a low end laptop... It gets 10% performance gain.

#

Ah, I know why! All the dll I tested today was compiled by myself, so all of them have the similar performance gain!

#

So the performance gain could be brought by the compiler, not the TBB code...

tawdry gazelle
restive pilot
#

let me see if I can fix it

tawdry gazelle
#

🤣

#
Alias        Avg FPS    Min FPS    Max FPS    90th %    95th %    99th %    Time (ms)
Default        62.575    25.883    106.097    50.265    47.4    42.726    139.136
Gain        0.00%    0.00%    0.00%    0.00%    0.00%    0.00%    0.00%
mimalloc    62.019    23.332    108.136    49.133    45.919    41.86    138.983
Gain        -0.89%    -9.86%    1.92%    -2.25%    -3.12%    -2.03%    0.11%
#

mimalloc seems not that good, at least on my PC.

empty goblet
#

large (huge) pages shall show benefit cause you don't waste your l2/l3 cache on memory tables

#

now that might be where W10/11 system allocator shows some progress, as since certain build of W10 MS enabled LP as always on (system wide)

#

the kernel evolution brings more too , so when doing system allocator tests, always include full OS build

inland dew
empty goblet
inland dew
#

FPS would have been as high as it is, without having to do "lock pages in memory" for my username

silk pewter
#

you may have installed your Windows before LP was enabled by default?

empty goblet
#

unless MS broke something and reverted the change

verbal mist
empty goblet
fickle geyser
#

It always needed special permission on user and running as admin.

#

At least on non server versions.

empty goblet
#

one of reasons they changed it because W10HE had no gpedit, another was that the kernel support was ready (since windows 8.1)

fickle geyser
#

That's why it's funny seeing these performance guides recommending enabling huge pages in launcher.

#

As it does nothing for 99% of the player base.

empty goblet
#

ye seems like MS reverted that change and the blog/docs about it are goner

#

behold OS as service where what was ain't what is

fickle geyser
#

I don't recall anything about this so... are you sure it wasn't only in preview versions or smth?

inland dew
#

@tawdry gazelle @empty goblet tested CMA AVX (2016) vs. (2021) Intel 2021 5 AVX and FPS is exactly same.

Now testing default Intel vs. Intel 2021 5 AVX (no lock pages in memory in Windows)

inland dew
#

@tawdry gazelle @empty goblet tested default Intel vs. Intel 2021 5 AVC (no lock pages in memory in Windows) and FPS is exactly the same

#

So, to conclude, Intel 2021 5 AVX gives exactly same FPS as default Intel.
And Intel 2021 5 AVX (with lock pages in memory in Windows) gives exactly same FPS boost as CMA AVX (with lock pages in memory in Windows).

kindred radish
#

So iam still working on the stray entities problem. And i managed to write a hacky script to delete these entities.
Just had a period with 15.000+ of these and server was running at ~15 FPS with 30 players.
Managed to delete ~12.000 and the server FPS went up to ~50 FPS again even after almost 3 hours runtime.
Big downside is you can only delete these if the clientOwner is still online 4_

#logEntities https://gyazo.com/b25e35f833fe6185df9b719340bf8e8c
Perf Metrics https://gyazo.com/685d5d1e33d18ddcd4bc0ca3c086346f

empty goblet
#

erm, if the owner disconnects the entities shall transfer to server locality (also always erase first in the local owner locality not remote (so what's owned by server, on server, what's owned by client, on that client))

#

and if you have 12000 rogue entities you don't need , i think you have serious problem of cleaning stuff over the time ... why wait for the bloat treshold

#

get rid of stuff far away from players (out of sight out of memory), too old based on timers (FIFO) and then limit thresholds cause always some genius figure how spawn too much at once

kindred radish
#

The thing is iam pretty sure its also the cause for other servers bad perf. Got a entities log from another server with just 4 players and 30 minutes runtime and 3 players caused around 90 each of these with the exact same pattern as on our server. Iam gonna get some more logs from other servers after new year and iam pretty sure it will be the same there.

#
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:3, Pos: [0.000000][0.000000][0.000000], N:Supply30
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:4, Pos: [0.000000][0.000000][0.000000], N:Supply80
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:5, Pos: [0.000000][0.000000][0.000000], N:Supply0
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:6, Pos: [0.000000][0.000000][0.000000], N:Supply20
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:7, Pos: [0.000000][0.000000][0.000000], N:Supply40
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:8, Pos: [0.000000][0.000000][0.000000], N:Supply40
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:9, Pos: [0.000000][0.000000][0.000000], N:Supply0
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:10, Pos: [0.000000][0.000000][0.000000], N:B_Parachute
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:11, Pos: [0.000000][0.000000][0.000000], N:Supply40
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:12, Pos: [0.000000][0.000000][0.000000], N:Supply60
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:13, Pos: [0.000000][0.000000][0.000000], N:Supply20
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:14, Pos: [0.000000][0.000000][0.000000], N:Supply60
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:15, Pos: [0.000000][0.000000][0.000000], N:Supply40
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:16, Pos: [0.000000][0.000000][0.000000], N:Supply100
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:17, Pos: [0.000000][0.000000][0.000000], N:Supply40
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:18, Pos: [0.000000][0.000000][0.000000], N:Supply0
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:19, Pos: [0.000000][0.000000][0.000000], N:B_Parachute
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:20, Pos: [0.000000][0.000000][0.000000], N:Supply20
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:21, Pos: [0.000000][0.000000][0.000000], N:Supply60
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:22, Pos: [0.000000][0.000000][0.000000], N:Supply120
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:23, Pos: [0.000000][0.000000][0.000000], N:CUP_B_GER_Pack_Flecktarn
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:24, Pos: [0.000000][0.000000][0.000000], N:Supply40
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:25, Pos: [0.000000][0.000000][0.000000], N:Supply120
> Loc:0, ForDel:0, Dstr:0, DmgDstr:0, DmgDead:0, Sim:1, Inv: 0, AnyPl:0, Out: 0, NetID:8:26, Pos: [0.000000][0.000000][0.000000], N:CUP_B_US_IIID_OCP

Full #logEntities for this other server -> https://drive.google.com/file/d/1WMxA_szHwrva4LJkSq7CAywPFzKuLEUs/view?usp=sharing

Full #logEntities for our server before i deleted -> https://drive.google.com/file/d/1mUN4meDhHFcepSfaKajnNNg97_D-PwZm/view?usp=sharing
Full #logEntities for our server after i deleted -> https://drive.google.com/file/d/1rjQFGGN5ZkcK8_6_0_HCMg64qaHEUJxq/view?usp=sharing

That's what i used to delete the entities (executed on the server)
https://sqfbin.com/zabacimusayugididile

whole cloud
#

A couple entities that don't do anything at the edge of the map shouldn't totally kill performance, maybe i can do something about that

#

But i need (optimally) a vTune hotspots capture to see what's wrong

silk pewter
#

oh btw I remember a text saying somewhere "don't place stuff @ [0,0,0]"

I assumed it was because many many many scripts use this position, but is there a performance/engine reason to this?

whole cloud
#

There is a RPT warning for when you move stuff to 0,0,0 in diag binary.
That's because when that happens, it's usually a mistake.
Like if some script fails and passed nil or something like that, it may silently fall back to 0,0,0, and that warning is there for you to know that something may be wrong

#

Would make sense if that warning would print script calltrace.... I think it doesn't. Someone put that on my to-do list or I'll forget

silk pewter
#

diag only, not retail?

whole cloud
#

Dunno

#

I think diag

whole cloud
#

Yes

#

Hotspots capture, software, attach to process paused, wait a few seconds, start recording, wait about 2 minutes, stop recording.

crisp wagon
whole cloud
#

I'll only look at it in a couple weeks though

kindred radish
whole cloud
#

But would he good to have it ready then, and maybe repro too so I can dive right into it

whole cloud
#

In first Screenshot, midle Panel, you can select native only (not managed) that gets rid of that warning on second shot.
Besides that all good, also that CPU utilization is pretty good..........
Oof, i might know where the bottleneck is notlikemeow

kindred radish
#

It was just a test run, right now the server is running fine.
Low amount of stray entities (< 500) 20 players online and server running around 65 - 90 FPS (90 FPS is the limit)

Will do it again if we have a high amount of stray entities and low server FPS

whole cloud
#

If all threads are loaded down when the fps is that low, it's the entity error calculation.
I'd have to do some big brain stuff to get that much better BlobFearSweat

kindred radish
crisp wagon
#

I'd have to do some big brain stuff to get that much better :BlobFearSweat:

We're rooting for you dedmen.

tawdry gazelle
tawdry gazelle
tawdry gazelle
whole cloud
kindred radish
#

VTune Version: 2022.0.0
Arma Build: 148592

tawdry gazelle
#

@empty gobletSo we come to an conclusion about the memory allocator. The performance gain was not caused by different tbbmalloc version, it was caused by the compiler or compiling parameters. All those dlls compiled by me has the same performance gain over both old CMA and default. When large pages is not enabled, all my dlls have no performance gain than default, that means default might not support large pages at all. Besides, the huge pages might give more performance gain on low-end pc (10%+) than high-end (6%+), I assume on high-end pc, memory allocation should not be the bottleneck. 🤯

whole cloud
#

Whether OS even gives you huge pages can also depend on how long PC has been running
But that's probably irrelevant for your testing

empty goblet
#

ye huge pages need all the bells, enabled in OS (restart of OS needed), lotsa of memory (i can't help you there, i don't know what's less than 32GB for last 15 years or so) and ofc allocator/its interface capable to use it

#

the compiler's switches make sense, that's what they for

#

the performance effect for weaker CPUs could be linked to the L2(L3) cache as those are usually smaller so freeing it helps more than at high end

#

but generally 3 to 10 % free performance is better than nothing

#

and for the newer(newest) allocators ... less old bugs (plus some new ones 🤣 )

autumn timber
tawdry gazelle
tawdry gazelle
#

I've installed a new cleanly OS to do a compare. The final result is 6%-8% performance gain on the new OS. When I switched back to a daily use OS (with many background processes), performance gain is at about 10%... So I may assume newly compiled version may do better allocation on a more fragmented memory?

tawdry gazelle
#

Please notice that different options on EnableEnhancedInstructionSet does not gives any difference, and the most noticeable different is caused by <RuntimeLibrary>MultiThreaded</RuntimeLibrary> (default is MultiThreadedDll), may be 3% more on my pc.

#

Leopard20 should have replicated the same performance gain with the same parameters, but a different compiler, MSVC v142 (VS2019).

#

I'm still wondering if someone know how to use g++ for a test. (I'm interested in the /O5 optimization, currently MSVC's default max is /O2.)

inland dew
inland dew
#

So lock pages in memory is the only thing that boosts FPS

#

No matter the version/age of Intel mallocs

tawdry gazelle
tawdry gazelle
inland dew
tawdry gazelle
#

Arma launcher's huge page is totally useless.

#

No matter what, you always need to manually set the lock page privilege.

tawdry gazelle
inland dew
inland dew
tawdry gazelle
#

As for a certain process, the process itself need to acquire a special privilege token from the OS, which requires the program to run as an Administrator account and assgined lock page privilege at the same time.

#

arma_x64.exe wont lift their privilege to Administrator by default. So even the account is an Administrator, you need to configure it in Properties of the exe file to force it run as Admin. Once it runs as Admin, a UAC window would pop up.

inland dew
#

But I don't use CMA to play - only for benchmarking.
Since after many hours of uninterrupted gameplay, textures/objects start to flicker heavily and unplayable FPS.
And if you continue playing, the game will simply crash.
And that's with 8 GB vRAM, 32 GB RAM and unlilited paging file.

People with less vRAM, only 8 or 16 GB RAM and manually set paging file to only few GB or just slightly more, will experience textures/objects flickering and unplayable FPS much sooner.

With default Intel malloc it starts to happen much later

tawdry gazelle
inland dew
tawdry gazelle
#

I can use script to change my camera among players from time to time and record when it crashed. 😎

mellow lark
empty goblet
#

low 1% fps shall be concern next to avg fps and frametimes ... if you have too many low spikes/ hitchup then it means stuttering

#

too high frametime is problem too e.g. i was showcasing someone, i can run Arma 3 DX11 via dxvlk into Vulkan ... the fps in Vulkan end is higher than DX11 but the frametime is 2-3 times higher

empty goblet
restive pilot
empty goblet
#

processing time vs render and buffers (vulkan pipeline is way better than DX11 (threaded, better caching, less operations)

#

the FPS wasn't that much higher it was like 3 to 10% max but it wasn't lower and it was on cost of the frametimes

#

now mind me, that was on Windows, on Linux the loss of frametimes was way lower

#

also , the Windows driver for DX11 is way slower than Vulkan driver (raw performance)

#

toVulkan translation layer is mature, i checked the visual output (lossless video compare of same camera scenes) and pixel wise it's 1:1 so no visual degradation

inland dew
tawdry gazelle
inland dew
mellow lark
#

When I tested DXVK, it provided substantial gains

empty goblet
#

it's been long time before recent major gains ... but i bet the frametime is still worse than direct

tawdry gazelle
#

I haven't notice any gains using DXVK... how did you managed to do that?

kindred radish
#

Found another weird thing with the help of #logentities
Looks like the "Can't change owner from 0 to 2" error happens if a client accesses the inventory of a container spawned by the server and then something is trying to change the ownership of the supplyXXX entities inside (backpack,vest,uniform).
"AeoG_B_CargoNet_01_ammo_F" is a crate we only use for a "heli loot drop & crash script" 🤔

 3:34:51 Server: Object info 11:11 not found.
 3:34:51 Can't change owner from 0 to 2
 3:34:51 Server: Object info 11:12 not found.
 3:34:51 Can't change owner from 0 to 2
 3:34:51 Server: Object info 11:13 not found.
> Loc: 1, ForDel: 1, Dstr: 0, DmgDstr: 0, DmgDead: 0, Sim: 1, Inv: 0, AnyPl: 0, Out: 0, NetID: 11:11, Pos: [0.000000][0.000000][0.000000], N: Supply120, SupplyInfo: (W: 0, M: 0, I: 0, B: 0), OwnerN: AeoG_B_CargoNet_01_ammo_F, OwnerSupplyInfo: (W: 0, M: 0, I: 4, B: 2)
> Loc: 1, ForDel: 1, Dstr: 0, DmgDstr: 0, DmgDead: 0, Sim: 1, Inv: 0, AnyPl: 0, Out: 0, NetID: 11:12, Pos: [0.000000][0.000000][0.000000], N: Supply140, SupplyInfo: (W: 0, M: 0, I: 0, B: 0), OwnerN: AeoG_B_CargoNet_01_ammo_F, OwnerSupplyInfo: (W: 0, M: 0, I: 4, B: 2)
> Loc: 1, ForDel: 1, Dstr: 0, DmgDstr: 0, DmgDead: 0, Sim: 1, Inv: 0, AnyPl: 0, Out: 0, NetID: 11:13, Pos: [0.000000][0.000000][0.000000], N: Supply40, SupplyInfo: (W: 0, M: 0, I: 0, B: 0), OwnerN: AeoG_B_CargoNet_01_ammo_F, OwnerSupplyInfo: (W: 0, M: 0, I: 4, B: 2)
tawdry gazelle
#

Hi Dwarden, I got some question about the your CMA implement. I see MemFlushCache(size_t size) directly returns size without flushing any cache, would this be an issue? For example, game would get wrong info about those flushed memory cache at a long run, and may cause the flikering issue said by Groove_C? I would like to know in what situation would arma call this API? Would it be a better solution if I return 0 instead of size?

tawdry gazelle
#

And I have noticed most malloc (tbbmalloc, mi-malloc) dont have API to get total commited/reserved memory, which is required by CMA API MemTotalCommitted and MemTotalReserved. Though we can implement them by ourselves, I'm still not sure if I might miss something... When and how are these two API actually used in Arma? Can they be ommited?

empty goblet
tawdry gazelle
#

Ah that's sad... 🥲

inland dew
#

if we could have Intel 2021 5 as default malloc of the game...
so it probably would eliminate textures flickering and unplayable FPS that the default Intel causes now, after many hours of uninterrupted gameplay, although it gives you some more time before it starts to happen vs. CMA.
and also inside this Intel 2021 5 everything configured so, that you only need to "lock pages in memory" in Windows, with PC restart, and start Arma as admin, it wouldn't required any .ini, like CMA.
And it would give expected FPS boost and no need to look for places where to get outdated CMA malloc.

tawdry gazelle
#

Yes, that's the case. But making a change on a published product is not that easy, especially it goes to some underlying codes like a memory allocator...

tawdry gazelle
#

I've managed to implement Microsoft's mi-malloc (https://github.com/microsoft/mimalloc), and got a huuuuugely startup time increases (15 minutes passed and it's still a black screen)... meowfacepalm Though I expect performance degrade, but not like this one. notlikemeowcry Any senior programmers here? I really need help... 😭

restive pilot
#

after I finally "fixed" mimalloc it was giving me out of memory errors 🤣 I just gave up... meowsweats
I really don't think any "magic" can be done with mallocs

tawdry gazelle
#

Good news is, I've just done with mimalloc and am about to post it 🤣

#

I think mimalloc is more documented than tbbmalloc, I've managed to utilize mimalloc's reserved large pages feature, though havent tested it yet.

#

Here's the file, both tbbmalloc and mimalloc, if you would like to test it.

tawdry gazelle
restive pilot
#

you said it didn't work meowsweats

tawdry gazelle
restive pilot
#

the source code is pretty much identical to what I had tho

tawdry gazelle
#

it just works for no more than 1 hour meowthis

restive pilot
#

it didn't work for me thonk

restive pilot
tawdry gazelle
restive pilot
#

ok. what about tbb?

tawdry gazelle
#

And I've tried putting OutputDebugString in those CMA API, it works.

#

mimalloc seems to give another ~= 3% performance gain than tbb...

tawdry gazelle
restive pilot
#

I know. I meant the performance

tawdry gazelle
#
             Avg FPS   90th %    95th %    99th %    RenderPresentLatency (ms)
tbbmalloc    65.207    52.586    49.441    45.021    2.512
mimalloc     68.146    54.858    51.613    45.695    2.694
Gain         4.51%     4.32%     4.39%     1.50%    -7.25%
#

yeah! another 3% performance gain lol I merry you a Christmas~ 🤪

restive pilot
#

it's worse than tbb (1-2%) for me meowsweats

tawdry gazelle
restive pilot
#

available was around 9

#

total 16

tawdry gazelle
verbal mist
#

Is the Mimalloc file available?

verbal mist
#

THX
How about a new record for Christmas 🙂

hearty haven
#

@inland dew you can contact https://www.battleye.com/contact/ about malloc dll's whitelist for arma 3
provide open code if possible(i linked armaholic archive where code was included)
, i just wrote back then about avx2 malloc mentioned there and they seems allowed it
dunno it was my request or someone else
https://i.imgur.com/iuPp8hO.png

#

@tawdry gazelle also

tawdry gazelle
#

Got that! Thanks~ Will do.

inland dew
# tawdry gazelle Got that! Thanks~ Will do.

not before you implement lock pages in memory check, when/if active in windows, then use it (Arma launched as admin), without having to have .ini to make it work.
And submit them only AVX version. no AVX2/FMA3 or AVX512

#

I will happily abandon default Intel, since it gives lower FPS and will abadon CMA, since textures flickering and very low FPS, same as default Intel, but much sooner

tawdry gazelle
tawdry gazelle
inland dew
tawdry gazelle
#

My server dont use BE, and I have many servers with many different mods and modes and with many players, I am capable of checking it~ blobcloseenjoy

inland dew
#

before submitting it to BE, make sure lock pages in memory check and use of it works, without .ini

hearty haven
#

@inland dew could you give intel 2021 avx's link?

inland dew
#

should give more FPS. if not, then lock pages in memory check and its utilization doesn't work

tawdry gazelle
night mulch
tawdry gazelle
#

Hi, I've finally come to a final version of the memory allocators, posted on both BI's forum and Github. You should download it and replace your previous downloaded version.

#

If there are any further updates, I will post them directly on Github.

inland dew
restive pilot
#

I doubt it uses vectorization thonk

#

neither does oneTBB

#

not sure about the old intel TBB. didn't look at its code

tawdry gazelle
inland dew
restive pilot
#

it just enables it by default, and there's no way to disable it

restive pilot
#

also @verbal mist tested it yesterday and said it was worse than TBB version

inland dew
#

now need only to submit it to BattlEye, so we can finally thoroughly test in online, in long game sessions, with a lot of garbage, players, AI , armor/air and destruction

restive pilot
#

120 vs 130 FPS

inland dew
#

tested it and exactly same FPS

restive pilot
#

I mean the xtbb one, not default

#

is that what you mean too?

inland dew
#

Intel 2021 5, without lock pages in memory, performs like default Intel and with lock pages in memory, like CMA

tawdry gazelle
#

Yes, there shouldn't be noticeable differences.

tawdry gazelle
#

What about the mimalloc? Does it gives similar performance boost as legacy CMA and 2021.5?

inland dew
tawdry gazelle
tawdry gazelle
inland dew
#

hope textures flickering and unplayable FPS will be things of the past with Intel 2021 5

tawdry gazelle
#

though I recommend mimalloc more than tbb... 🤣

verbal mist
#

Yeah will test again in a few days - I did the recommended settings in BIOS to RAM of all the settings that are not being covered by MSI Canon Ball. After that, lots of stability issues.
Both MALLOC atm at 119-121 instead of 130.

tawdry gazelle
#

wired... thonk

verbal mist
#

yeah after a bios reset to auto to those 3-4 RAM values and the old config can test again.

#

I

verbal mist
#

Since my PC is unstable here some findings of a great member of my Community :
I5-11600K: 2021_avx 96,5fps, Mimalloc 97,4fps, TBBmalloc 97,8fps.

inland dew
empty goblet
#

and system allocator results?

verbal mist
#

by system allocator results you mean no Malloc active - by windows?

empty goblet
#

yes, no allocator dll, wrong allocator (failing to load, no interface etc.) or forced via -malloc=system

#

you can verify if afterward by looking at the .rpt on the allocator report line

verbal mist
verbal mist
#

Final results:
I5-11600K: 2021_avx 96,5fps, Mimalloc 97,4fps, TBBmalloc 97,8fps. Intel TBB Default 85,8fps, Windows system allocator 80,7fps.
All tests with cma.ini with uselargepages=1 in the arma folder.

empty goblet
#

what version of OS?

#

was -hugepages used as the A3 startup param ?

inland dew
empty goblet
#

not even on the system allocator ?

inland dew
#

no

empty goblet
#

weird ... seems like it got broken at some point then

inland dew
#

as if it simply doesn't work or do anything

restive pilot
#

it does work

inland dew
empty goblet
#

it's supposed to do something, if the allocator interface and function(s) operate with it

restive pilot
#

it calls EnableHugePages() of the malloc

inland dew
#

I've reported it many years ago and many times

empty goblet
#

ofc CMA enables is it via ini. so it doesn't matter

inland dew
restive pilot
#

they don't implement that function

#

they use the ini as Dwarden said

#

I literally just tested it and it gets called when you launch with -hugePages

inland dew
#

with mallocs part of Arma itself, -hugePages brings nothing, not even 1 or less than 1 FPS boost

#

no matter Intel or Windows

#

so it's just a meme

#

useless

#

for many years

empty goblet
#

the real question is if the 2017u5 (the last official TBBv4 in A3) was compiled with EnableHugePages() at all

inland dew
empty goblet
#

let's leave this q to dedmen for january ...

inland dew
#

I told this many many times during many years, but no reaction to this not working...

empty goblet
whole cloud
#

Arma has multiple internal allocators.
The pool allocator used for all of Scripting, doesn't respect large pages flag

#

But these don't allocate that often

whole cloud
inland dew
#

same "response" as all the previous times...

tawdry gazelle
#

Yes, I am pretty sure default arma
allocator does not utilize huge pages at all, but it does gives 10% more fps then system allocator

hearty haven
#

if i remember correctly there was some allocator which was totally not compatible with battleye because it wasn't defragmenting or encrypting memory,
but gave best fps
(back in time when only x32 bit arma was available)

empty goblet
#

probably that was fred41's one ... afaik he never released the source (tho some claimed they got it) ... also he had some quite detailed debug variant on (de)allocation operations (again, no sources)

#

there were some private variants of allocators for servers, where the authors claimed 20 to 100% improvements but w/o sources / way to validate it ... nobody except them can tell if it was true

tawdry gazelle
#

I guess my malloc would give better performance on server too, but I dont know how to test it...meowfacepalm

#

especially mimalloc's reserved huge pages feature, but it's strange and seems not behave the same as on client... thonk

whole cloud
#

Unlock fps, place down 100 AI in vehicles.
Check fps counter. Bam easy benchmark :D

rain moth
#

All, move to that.. house 12 o clock

tawdry gazelle
#

Shall I make them fight? or just idle?

#

I cannot come up with an idea to reproduce a similar fight...🥲

whole cloud
#

Just idle will put enough load on the server, unit simulation, AI thinking, vehicle simulation,...

rain moth
#

Could do path traversal with ai agent?

hushed seal
tawdry gazelle
#

Good idea, I will give a try.

verbal mist
agile cove
#

Regarding the -hugepage option,
What is the difference between HugePages and LargePages?
The optional cma.ini file contains „UseLargePages = 1“ which is reported in cma.txt by „Using large pages“
If you choose cma.ini with „UseLargePages = 0“ then cma.txt reports „Using normal pages“
On the other hand the launcher option „-HugePages“ is reported only in .rpt file.
As an non programmer both sounds similar by the name, but I doubt they do the same.

restive pilot
#

cma only uses the ini

#

it doesn't care about launcher option

#

the launcher option doesn't seem to work with vanilla mallocs either

gritty wasp
#

Would be nice to have line in RPT that will show if arma use(permissions granted) HugePages or not.

whole cloud
#

There is, or atleast its supposed to be

feral harness
#

but it shows Page size already:

PhysMem: 16 GiB, VirtMem : 8192 GiB, AvailPhys : 10 GiB, AvailVirt : 8192 GiB, AvailPage : 24 GiB, PageSize : 4.0 KiB/2.0 MiB/HasLockMemory

whole cloud
#

the last one is if it has the lock memory priviledge

gritty wasp
#

oh. my bad.

verbal mist
restive pilot
#

CMA.ini does always work, right
only with cma malloc

restive pilot
#

no malloc uses it as of now (except maybe the newer ones that Gold John King made)

verbal mist
restive pilot
#

I made a malloc for myself that does, but it's just based on mimalloc

verbal mist
tawdry gazelle
#

strange... on my pc mimalloc is always much better than tbb... 🤔

#

and AVX wont get any more performance on my machine, even worse than IA32……meowfacepalm

restive pilot
#

just because you enable it doesn't mean it'll be used

tawdry gazelle
#

however mimalloc seems uses avx at some part, compiled dll is different in size.

#

I have totally dropped tbb.

agile cove
rain moth
#

included bitcoin miner, trojan, virus?

hushed seal
golden wedge
#

Does the profiling branch has anything to do with nearestBuilding? I have an script that works with profiling version but not with the stable. (the script gets the closest building to a position and disables all doors, using the bis_disabled_Door_X variable, and adds the options to open that door with a code inserted using a dialog) Did not see it on the pach notes.
EDIT: The scripts gets executed on module init, if it matters.

whole cloud
#

What does not work on stable mean?
Doesn't find building while it should?

golden wedge
#

is not blocking the doors

whole cloud
#

Profiling might do stuff with nearestBuilding yeah.
But your door blocking is a completely separate thing.

golden wedge
#
// _logic is the module
_building = nearestBuilding _logic;
//Lock all doors of the building
_class = configFile >> "CfgVehicles" >> typeOf _building;
_num = getNumber (_class >> "numberofdoors");
for "_i" from 1 to _num do {
    _var = format ["bis_disabled_Door_%1", _i];
    _anim = format ["Door_%1_rot", _i];
    _building animate[_anim, 0];
    _building setVariable[_var,1,true];
};
whole cloud
#

Is nearestBuilding functioning differently, returning different output?

golden wedge
#

nearestBuilding in the profiling version is taking into account editor placed objects (something that I like :P) and the stable version not. will try do more testing.

whole cloud
#

Oh that's bad notlikemeow

rain moth
restive pilot
golden wedge
#

Yep thats the fix im using with ["Building"] filter

restive pilot
#

The scripts gets executed on module init
yeah, I guess something's different about when it executes then

rain moth
golden wedge
# restive pilot are you calling this in init?

to be honest here on the module definition, not sure if its the init.

class GVAR(mod_doorBlock): Module_F
    {
        scope = 2;
        displayName = "Door Lock with Code";
        category = "fsg_eden_module_category";
        function = "fsg_eden_fnc_mod_doorBlock";
        functionPriority = 1;
        isGlobal = 1;
        isTriggerActivated = 0;
        isDisposable = 0;
        is3DEN = 0;
restive pilot
#

it is

golden wedge
#

"fsg_eden_fnc_mod_doorBlock" is the script that gets executed with nearestbuilding

tawdry gazelle
#

I have deleted that link to avoid any future confusions... 😅

verbal mist
restive pilot
#

The problem with Gold John's mimalloc is that it doesn't return amount of reserved and commited memory to the game (I noticed that the game calls them frequently, so it definitely needs them)
The free cache request doesn't work either
I guess issues at long run is not a surprise

vagrant zodiac
verbal mist
vagrant zodiac
#

Sorry - one more - is that the 'tbb4malloc_bi_x64' that (I think) is also packaged with the CMA?

restive pilot
#

That's BI's default malloc

tawdry gazelle
# restive pilot The problem with Gold John's mimalloc is that it doesn't return amount of reserv...

Nope. If you run some tests, you can find out MemTotalCommitted() and MemFlushCache(size_t size) does not affect game behavior at all. Always return a large value, or always return a small value, or return a random value each time, Arma 3 behaves all the same. And if you know how to do memory analysis, you may also find out it has similar memory layout as BI's default memory allocator (ofc we should use the same tbb version as BI). Besides, the original CMA (old tbb) does not do MemFlushCache(size_t size) either. You can see in it's source code, it just return the incoming size. And once we add actual flush action in MemFlushCache(size_t size), performance degrade would be quite noticeable for both tbb and mimalloc.

#

The only problem of mimalloc might be the MemFlushCacheAll() is not taking effect. This API is called when a new scenario starts/ends. For example, it will execute once when you start a scenario, and execute once more after scenario has finished initialization and is about to start. This issue has been fixed in 2021-12-30 version, you can find it on my Github Release page. Besides, mimalloc v2.0.3 has a runtime memory optimization thread, which might cause some performance degrade. You may also try v1.7.3 to see if it runs better.

tawdry gazelle
# verbal mist preliminary findings: -the old TBB file performs very well and stable, highest m...

The earlier version of mimalloc would: ```

  1. Lock huge pages by default, which may cause memory consumption issue and would produce flickering of textures if you do not have enough free memory during gameplay. >16GB free memory is recommended if you use "LockPages" version.
  2. Use AVX instruction set, which may cause performance overhead.
  3. Does not flush memory when MemFlushCacheAll() is called, which may gives worse fps during gameplay.
These issues should be fixed in the most recent released version, you can find it here: https://github.com/GoldJohnKing/mimalloc/releases.
tawdry gazelle
#

Hi Dwarden, just though since the memory allocator topic does not have anything to do with perf prof branch, do I need to move to Hardware vs Arma channel? 😅

restive pilot
#

Also CMA is not perfect either. Its performance degrades more noticeably than BI TBB after some time

tawdry gazelle
#

but you remind me... I may create a thread and flush the memory once in a while...

empty goblet
# restive pilot That's BI's default malloc

the sources for the last TBBv4 isn't in the CMA, they got the 2017u3, BI last on BIKI is 2017u2
our last published with game is 2017u5 , and intel published more v4, (listing last each year) 2017u6 > 2018u6 > 2019u9 > 2020u3 (that's last of the legacy, intelone is different branch)

restive pilot
stark falcon
#

32-bit exe profiling crashes when loading any map in editor (no mods)

Exception code: C0000005 ACCESS_VIOLATION at 00C40B18

whole cloud
inland seal
#

downloaded and zipped it. Comes with 204perf and 206perf, which one should i use?

#

204 have up to v17, and 206 to v06

restive pilot
#

the newest ofc

inland seal
#

and that is v17?

restive pilot
#

no, latest one in v2.06

#

v06

inland seal
#

oh!

inland seal
#

aah now i see. 2.06

autumn timber
#

...instead of downloading it manually

inland seal
#

didnt know what 206 stood for

autumn timber
#

@inland seal just remember that Dedmen said:

I'm not sure if they are on there already, if not then in next two weeks

whole cloud
#

Its in

  • Tweaked: Potential performance optimization when attaching static objects
inland seal
#

are you allowed to play online and using this?

rain moth
#

yes, with the performance binary

inland seal
#

so they working on a updated engine?

whole cloud
#

The game is constantly being updated and improved

inland seal
#

cool

mellow lark
inland seal
#

cool!

tawdry gazelle
#

I still cannot reproduce any instability on my PC at a 8 hours long run on my heavily modded server with 8-16 players and about 250 AI with both 12000 terrain & object view distance + 3.125 terrain grid. I can only reproduce a crash when all Physical + Virtual memory are all allocated by programs on my PC. For example, Arma 3 allocates 20GB pages in total but only 8GB active in physical memory, then I run a memory page allocating program to allocate about 25GB pages to drain all my Physical + Virtual memory, then Arma 3 finally crashed with a heap corruption. However if I increase my virtual memory (pagefile.sys), I will need to allocate more pages to make Arma crash. This happens when I use BI default tbb, too. And the memory consumption are same between mimalloc and BI default.

plain trout
tawdry gazelle
plain trout
#

I have 32GB, and did the tests after restarting. When I am MCC (heavily modded) I only get the game not to crash with the system allocator

nocturne obsidian
#

@tawdry gazelle nice work. Unfortunately I am late to the party. Could you give me a link for an AVX2 malloc? I can test it on a 5800x

inland dew
plain trout
#

were can I download that allocator? Found it. Doesn't help with Ryzen 🙂

fickle geyser
#

Is this "normal"? Never seen such logs.

hushed seal
autumn timber
#

Servers can always use any dll they want and BattlEye will not prevent them from doing so.
Only clients have that restriction

hushed seal
whole cloud
tawdry gazelle
tawdry gazelle
hushed seal
#

Was looking for it anyway, thanks 😄

thin wyvern
tawdry gazelle
night mulch
#

so the mods "winter 2035" and "autumn livonia" that modify the existing terrain, seems to work fine on main branch, but doesnt work as intended on perf and dev branch, trees do not show up and when game starts it throws an error: addon 'a3_data_f_loadorder' requires addon a3_plants_F_bush.

#

does perf branch make changes to load order or something?

#

iirc the problem started happening to winter 2035 mod after this update

whole cloud
#

You tell me now about a problem that appeared 7 months ago? 🙃

whole cloud
night mulch
night mulch
whole cloud
#

do these mods try to replace these pbo's?

#

or rather, the bush one?

night mulch
#

I'm looking at the configs rn but still havent figured all of it out what it does,, but i know at least it replaces A3_Map_Data

whole cloud
#

does it have a CfgPatches a3_plants_F_bush entry?

night mulch
#

it has a new cfgpatches entry for plants but doesnt seem to replace them A3_Plants_Winter

#

that's the mod's plants pbo's cfgpatches entry

whole cloud
#

Okey then I know what's wrong.
I didn't consider the possibility of the "same" pbo loading twice in the pbo lookup improvements.
Luckily I kept that profiling branch exclusive for 7 months 😁

Next time when an issue appears please tell me right away. Even if its mods, profiling branch shouldn't break anything, including mods

night mulch
whole cloud
#

yeah, maybe in two weeks

#

I won't get that done till next weeks planned update

fickle geyser
#

Are the improvements disabled with filepatching on?

night mulch
#

@queen owl tagging you since it's related to your mod :D

fickle geyser
#

As I'm kinda using similar workflow for my dev stuff and it works fine.

#

Maybe I'm misunderstanding.

#

I'm having 2 pbos with same prefix and the one loaded last "wins".

whole cloud
#

are you loading a pbo that replaces a existing pbo by using same CfgPatches name? 😄
I'm pretty sure the issue happens at pbo load at game start

#

thats a different thing

fickle geyser
#

Same prefix and same CfgPatches

#

The issue is with different prefix but same CfgPatches?

whole cloud
#

I assume thonk

fickle geyser
#

👍

whole cloud
#

Its been 7 months since I wrote that stuff, I'll find out what it is when I get to it

fickle geyser
#

So patching of CfgPatches blobsweats

whole cloud
#

could also be same pbo prefix but with different case, my "is same" checks might be case sensitive when they shouldn't be.
Its been too long and I don't want to investigate that now

night mulch
#

does pbos with same prefix get loaded together? as in this case A3_Plants_Winter gets loaded together with A3_Plants_F?

fickle geyser
#

That's not a (pbo) prefix

#

And no.

night mulch
#

ah ok im wondering the mod works since it added new cfgpatches entry instead of replacing the vanilla's A3_Plants_F

rain moth
#

AFAIK the winter version replaces the prefix for map textures and objects?

night mulch
spiral pond
#

be careful here

#

same prefix = only first pbo loaded gets read by the engine. if same prefix is encountered, the pbo is skipped thereafter

#

cfgPatches load order = "last/later" loaded overwrites previous parameter values

#

load order

  1. -mod=last;middle;first
  2. A3 launcher: top = last, bottom = first
#

what both these mods do: they are repacks of A3 pbos with modified textures

#

as the base game data is loaded after modfolders, these are active as the A3 prefix is encountered in these modfolders and the A3 pbos are skipped

#

(can be seen easily in rpt log in the pbo loading section or via procmon)

night mulch
night mulch
spiral pond
#

a config is not required by the engine AFAIK

#

its only a convention by tools to expect one in the root folder

#

for data replacement only the prefix matters [unless its done via replacement config like usually for infantry/weapons/vehicles]

#

Conflicting addon
only says a cfgPatches name is used/found more than once - which is not ideal as it can confuse the load order [which isnt relevant for model/texture/rvmat containers - only for configs]

#

one can do partial prefix replacement/composition - BI did this in A2 due to pbo size limitation but having too much data in a folder

#

like
XXX
XXX\YYY

fickle geyser
#

Ah well, you're thinking about it in the opposite way, -mod=first;to;last

#

At least for me explaining it that way is more logical.

night mulch
rain moth
#

no, it's a flag inside the PBO header

#

which virtual filesystem directory the pbo represents

autumn timber
#

I always thought the order with the same CfgPatches was random because when I was listing open .pbo files to find loaded mods, I could swear that (at the time) sometimes it would pick one file and sometimes the other. That was a long time ago, though

spiral pond
spiral pond
fickle geyser
#

You read -mod param left to right, what you read last is the one with highest priority.

#

Correct me if I am wrong.

spiral pond
#

The distinction is important as prefix behaves the opposite to config overwriting.

#

Prefix: only 1st is loaded
Config: last loaded is overwrites

whole cloud
#

Well if that mod uses prefix to overwrite, then prefix would be "only last is loaded" ?

violet elbow
#

If two mods have pbos with the same prefix, the pbo from the mod that's further down the line in -mod is the one that applies.

jagged minnow
#

I wonder how much optimisation is still possible for the current version of the arma 3 engine regarding the AI ? Since a rewrite is too complex and cost inefficient

whole cloud
#

performance yes, but we won't change behaviour

jagged minnow
#

kk nice!

spiral pond
silk summit
#

Guys, would it be worth it to make a request ticket for a new scripted command akin to setObjectTexture but for markers? SetMarkerTexture

#

There are very few mods on the workshop that add new markers and it seems that most content creators don't want to go trough all the trouble of mod making just for modifying the texture of the markers. It would be therefore great to be able to have these custom marker textures on the mission folder, specially considering how small they are, and setting them via this proposed "setMarkerTexture" command.

fickle geyser
#

IMHO it would make more sense to have description.ext support for CfgMarkers akin to CfgSFX

gritty wasp
silk summit
gritty wasp
#
  1. this is wrong channel
  2. say no to direct access to file system
  3. that is obvious that implementation behind command would be same as for description.ext. Except config parsing. So would not be implemented. A3 EOL.
fickle geyser
#

A3 EOL
that does not matter as we're still getting new commands/features.

But yes this is not a channel for this.

gritty wasp
#

Maybe there are other limitations. Actually ticket was not totally rejected but “unlikely”. You can find it and ask there why.

whole cloud
#

Its technically possible but I don't think its worth the effort. But yes wrong channel 🙃

patent hazel
#
  • Fixed: Possible game freeze when running inside Proton
    Do you think this is the freeze that people are talking about in protondb all the time? (https://www.protondb.com/app/107410) Apparently a workaround is to disable esync. If it's fixed, does this mean I could now turn esync on without freezes? It improves wine/proton performance quite a bit.
whole cloud
#

what is esync

patent hazel
whole cloud
#

Well best way is probably to just try it out

hearty haven
#

@whole cloud could you make some quick fix to allow more than 255 playercount?

whole cloud
#

no

hearty haven
#

poke dwarden or who?

#

we would love to test something like 340 players on some crazy single server(like 12900k or ultraCoreCountAMDEpyc and RamDrive) and provide you game data as you wish..

whole cloud
#

poke noone

hearty haven
#

im not getting why u being kinda rude honestly