Jump to content
fred41

using large page memory mapping, for increased performance

Recommended Posts

I have some (very individual) numbers, if this increase your guys motivation to test it.

i5/2500k/4GHz

16GB/1600Mhz/9-9-9-24

win7/64bit

Viewdistance 1600, textures high, e.t.c.

'Helos A3 Benchmark' (modified to get 0.1FPS resolution, loaded and saved in editor for each new arma build)

each test with 3 averaged runs/results, arma fully restarted for each test

results:avg/max

73.5/74.2 vanilla

78.1/79.3 GMF

82.1/84.1 GMF + tbbmalloc (LP)

Don't blame me if you get other numbers, this can have many reasons.

Greets,

Fred41

Share this post


Link to post
Share on other sites

Helo´s Altis-Benchmark (3000object distance/3000view distance):

before: 44fps

after: 46fps

many thanks fred41!! How can I cancel the tweak? I want to repeat the test.

system in my signature, win7-64bit, 8GB ram

Edited by JumpingHubert

Share this post


Link to post
Share on other sites

Hi Fred,

Away from my PC so I can't give numbers but here's what I found doing some general testing last night.

  1. No real increase in framerate (expected)
  2. Game does not slow down as much when vehicle explodes in front of me (more free memory to handle particles maybe)
  3. Game is noticably smoother when panning about with the camera/flying
  4. Lots of AI in the scene still slow the game (I never expected a memory tweak to make this better though).

Thanks for your work on this :)

Share this post


Link to post
Share on other sites

^ What he said.

I had 1fps increase in Altis Benchmark, ran 5 times with and without.

Generally those hiccups that occur when something demanding is happening are smoother with this, thanks Fred

Share this post


Link to post
Share on other sites
How can I cancel the tweak? I want to repeat the test.

... this is a very good question ...

I think the easiest way is to make 2 .reg files and merge it on demand.

GMFOn.reg :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\arma3.exe]

"UseLargePages"=dword:00000001

GMFOff.reg :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\arma3.exe]

"UseLargePages"=dword:00000000

@Das Attorney, your results are interesting, but i am not shure if they are expected.

You will only see a speedup, if enough large pages are available on your system to map the arma3.exe imagefile in a large page region.

You have only 6GB RAM and if your system is not very clean your memory will go fragmented fast.

Try a restart before you run your bench.

The more experienced user could use a tool like VMMAP (sysinternals) to verify, that the arma3.exe imagefile is really mapped to a large page region.

Greets,

Fred41

Share this post


Link to post
Share on other sites

Will try this out later with System 1 and 2.

Thank you Fred for this possible performance increase. will let you know the results.

Share this post


Link to post
Share on other sites

Hi Fred64, is it related to your malloc-thing or the gimmemore...registry-tweak?

"The only problem is that this patch is overwritten with each steam update (needs to be fixed by BIS for a permanent solution)."

http://forums.bistudio.com/showthread.php?163640-Arma3-and-the-LARGEADDRESSAWARE-flag-%28memory-allocation-gt-2GB%29&p=2686398&viewfull=1#post2686398

Share this post


Link to post
Share on other sites
@Brainbug & RuairiAU, i basically share your concerns

Whilst I really want more frames etc, I think that you shouldn't post stuff up when your share others worries about the possibilities of untoward results, especially when you don't know how to undo what your suggesting for people to do without more messing around that could potentially cause more problems.

Share this post


Link to post
Share on other sites

Should we expect more RAM usage? Any launch parameters that should be used? Bit confusing. I don't see any memory increase anywhere (/edit. unless there maybe was ~300MB increase which doesn't sound much to be the thing). Haven't checked any fps increase closely but I really didn't see much difference when playing alone in the editor. Does SSD have anything that need to do differently?

Edited by St. Jimmy

Share this post


Link to post
Share on other sites

sorry to shatter the trick with the CFF explorer but 8100 and 8140 makes no difference on Windows 2012 R2 Server

I can run one instance with it enabled

second instance refuses to run until I disable the LP image loading ...

the only difference between these instances is what cores are used (first twenty, last twenty)

Share this post


Link to post
Share on other sites
Whilst I really want more frames etc, I think that you shouldn't post stuff up when your share others worries about the possibilities of untoward results, especially when you don't know how to undo what your suggesting for people to do without more messing around that could potentially cause more problems.

Garbage. He shared the concerns that people might have using an exe, and so told them how to do it manually.

what gives you the impression that no-one knows how to undo the change? It would be as simple as removing the registry entry. This isn't "messing around" if you know anything about how your PC's OS works. If you don't, you probably shouldn't be reading - or commenting on - this thread.

Edited by jiltedjock

Share this post


Link to post
Share on other sites
Did you know, that mapping a3 image file to large page memory region, notificable accelerate execution performance?

Look for 'GimmeMoreFrames' in my github repository, for a very simple, but powerful registry tweak.

https://github.com/fred41/GimmeMoarFrames

For simplest usage, i added a little command line tool, 'GimmeMoarFrames.exe'.

This tool sets the required privileg and two registry entrys automatically.

Usage:

- download GimmeMoarFrames.exe from my repository (use the 'RAW' button for binary download)

- open a console (cmd.exe) as administrator

- navigate to the directory where the tool is

- type gimmemoarframes useraccountname (replace useraccountname, with the name of related windows useraccount, used to start arma)

- restart your system

- enjoy

(recommended for 64bit OS and 8GB RAM)

(Please use it currently for arma client only, arma3server.exe seems not to work with that tweak, see hardliner section)

For the more experienced users, you can do the required changes manuallly too, by:

1. use secpol.msc to set the 'Lock pages in memory' privileg for the windows useraccount, used to run arma (restart required)

2. use regedit to create/set DWORD value 'UseLargePages' = 1, for key [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\arma3.exe]

Additional hint for real hardliners:

This tweak normally don't work with arma3server.exe (crashes at start).

If you want to make it work here too, currently the only way is to patch a value in arma3server.exe image file header.

Install 'Explorer Suite', open CFF explorer with arma3server.exe (right click on binary, 'open with CFF').

Navigate to 'NT Headers'->'Optional Header'->'DllCharacteristics' and change the value from 8140 to 8100 (or uncheck 'DLL can move').

Bar in mind, you have to repeat this step with each update, except BIS will fix it in future.

(obviously, you have to set the related registry value for arma3server.exe too)

I've had some of my players saying they cannot do this so I thought I'd simplify this some more, I'm sure you could say if they don't have basic command line skills they shouldn't be doing this at all. Hehe.

I suggested after downloading they open up their downloads folder (assuming they didnt change the default downloads destination).

Press and hold Shift then right click select 'open command window here'

Then some of them didnt know their usernames (windows 8 users entering their email addresses :S)

To find out your username enter 'set username' without the quotes. It'll return a value as USERNAME=Inch for example; the name after the = is your username

Then Type: GimmeMoarFrames Inch

Obviously change 'Inch' given thats not your username... :P Enter the one you were shown.

Share this post


Link to post
Share on other sites

I have 14 dedi's running Arma 3 servers.

Out of those 14 dedi's 4 had the issue running arma3server.exe w/ the reg tweak

Those 4 dedi's are windows 2008 r2 and after changing the .exe with CFF the arma3server.exe's worked.

All 14 dedi's running 45 arma3 servers are now running the registry tweak.

Thanks Fred!

Share this post


Link to post
Share on other sites

Fred is coolest :) Fred is life :)

Share this post


Link to post
Share on other sites

I do not have arma3.exe in that place of registry

Share this post


Link to post
Share on other sites
I do not have arma3.exe in that place of registry

You need to add it as a new key, then add the 'UseLargePages' value under it.

Share this post


Link to post
Share on other sites
Should we expect more RAM usage? Any launch parameters that should be used? Bit confusing. I don't see any memory increase anywhere (/edit. unless there maybe was ~300MB increase which doesn't sound much to be the thing). Haven't checked any fps increase closely but I really didn't see much difference when playing alone in the editor. Does SSD have anything that need to do differently?

The only thing that is changed by this tweak is, that arma3.exe is 'mapped' in a, so called, large page memory region.

The result is, that the CPU has less to wait to load code and data from memory that is not in caches.

Thats all. I hope i could answer your question.

---------- Post added at 20:08 ---------- Previous post was at 20:03 ----------

sorry to shatter the trick with the CFF explorer but 8100 and 8140 makes no difference on Windows 2012 R2 Server

I can run one instance with it enabled

second instance refuses to run until I disable the LP image loading ...

the only difference between these instances is what cores are used (first twenty, last twenty)

... hmmm, i don't have access to a 2012R2 system (nor that much cores :)),

but i really don't see a reason for such strange behavoir.

When i have an idea later, i will let you know.

---------- Post added at 20:11 ---------- Previous post was at 20:08 ----------

Garbage. He shared the concerns that people might have using an exe, and so told them how to do it manually.

what gives you the impression that no-one knows how to undo the change? It would be as simple as removing the registry entry. This isn't "messing around" if you know anything about how your PC's OS works. If you don't, you probably shouldn't be reading - or commenting on - this thread.

... thanks, but i wouldn't say this that harsh ;)

Share this post


Link to post
Share on other sites

to combine greenfists comment and fred´s tweak-style: GIMMEMORE BENCHRESULTS!! :p

Share this post


Link to post
Share on other sites
I've had some of my players saying they cannot do this so I thought I'd simplify this some more, I'm sure you could say if they don't have basic command line skills they shouldn't be doing this at all. Hehe.

I suggested after downloading they open up their downloads folder (assuming they didnt change the default downloads destination).

Press and hold Shift then right click select 'open command window here'

Then some of them didnt know their usernames (windows 8 users entering their email addresses :S)

To find out your username enter 'set username' without the quotes. It'll return a value as USERNAME=Inch for example; the name after the = is your username

Then Type: GimmeMoarFrames Inch

Obviously change 'Inch' given thats not your username... :P Enter the one you were shown.

Inch, many thanks, very good explained, and really a big help for me :)

---------- Post added at 20:25 ---------- Previous post was at 20:22 ----------

I have 14 dedi's running Arma 3 servers.

Out of those 14 dedi's 4 had the issue running arma3server.exe w/ the reg tweak

Those 4 dedi's are windows 2008 r2 and after changing the .exe with CFF the arma3server.exe's worked.

All 14 dedi's running 45 arma3 servers are now running the registry tweak.

Thanks Fred!

@nohrt, thanks. Good news are always welcome :)

---------- Post added at 20:29 ---------- Previous post was at 20:25 ----------

You need to add it as a new key, then add the 'UseLargePages' value under it.

Correct.

(Or just merge 'GimmeMoarFrames.reg' from github repository :p

---------- Post added at 20:37 ---------- Previous post was at 20:29 ----------

to combine greenfists comment and fred´s tweak-style: GIMMEMORE BENCHRESULTS!! :p

... pah, benchmarks and numbers ...

What counts is the experience to master it :p

Edited by Fred41

Share this post


Link to post
Share on other sites

I ran Altis benchmark multiple times with and without:

Before avg 58fps

After 61fps

Video Settings

Not much of an increase but it's still something :p

Anyone has terrain only benchmark to share? Curious to see some results without AI. I also noticed that the fps was really 2-3 fps better when there was smoke coming out of the burning wrecks so particle effect benchmark could be a nice thing to see also.

Edited by St. Jimmy

Share this post


Link to post
Share on other sites

from 58fps to 61fps is a lot because its cpu-dependent and its only one tweak without bad side effects like overclocking.

My result with this simple tweak is: from 44fps to 46fps. To get this result with overclocking I have to go from 4.8Ghz to 5Ghz.

Share this post


Link to post
Share on other sites

Even if fps hasn't gone up much that's not the whole story because it definitely FEELS smoother when panning(turning).

There's certainly a benefit here and hopefully BIS can use this info...

Share this post


Link to post
Share on other sites

Yeah have to agree even small increase is awesome thing. Need to test that how much smoother the camera view or circling around feels tomorrow.

I didn't log any performance but I watched my fps with MSI Afterburner and the fps increase was pretty much evenly around the benchmark and in the particle part I really noticed that there was an increase.

Edited by St. Jimmy

Share this post


Link to post
Share on other sites

Hello,

ok here my results.

System 1 and System 2 got an increase of exactly 1 FPS in Altis Benchmark (Test was run 5 times)

But the main feeling and handling is "smoother" i can agree with that. but no FPS gain.

Regards

Michael

Share this post


Link to post
Share on other sites

I haven't had a chance to run any benchmarks yet but I noticed while playing that FPS seems 2-5 FPS better on average. The most important thing to me is that FPS seems to be more stable with this.

When things get crazy and there is a lot going on FPS seems to stay high instead of fluctuating up and down. It may not increase the total FPS but it certainly stabilizes things on my system.

Thanks again Fred!

i7 4770k @ 4.6

GTX 780Ti @+100/+200

8gb Corsair D@1800

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×