Jump to content



Recommended Posts



View File





This is an experimental replacement for armas default custom memory allocator ...


This custom memory allocator is based on intel tbb malloc 4.2, updt. 2 and should work with Arma server and client.


You can find the source code of intels tbb 4.2, updt. 2 here:




and some general infos about custom memory allocator for arma and the BIS interface description can be found here:




This project is covered by the same license as provided with the source code from intel (GPL 2.0).


Some small optimizations in the interface, a little workaround, adaption of some internal parameters and the fact,

that this allocator allocates memory regions in large pages (2048kB), instead of small pages (4kB) results in better performance, compared with the default allocator tbb4malloc_bi.dll.


This allocator works best/only on 64 bit OS, with at least 8GB RAM.




Copy tbbmalloc.dll in your arma3/dll directory.


append -malloc=tbbmalloc to your arma 3 start line.


tbbmalloc prefers to use RAM in large pages (2048kB instead of 4kB).


The use of large pages requires the lock pages in memory privilege for the arma user.


Make sure your arma user account has this privilege set in your local security policies settings (secpol.msc, restart required).

If your useraccount, which you use to start arma, is member of the administrator group, you have to start arma as administrator!


On client, i measured between 6-9% higher framerates with "Helos A3-bench". I noticed significant smoother gameplay (higher and more stable framerates). On server i have no benchmark, but it will accelerate here too, dependend on mission and server load.


This allocator logs some timing data to malloc_PIDX.log. The tbbmalloc logfile looks like in this example:


WindowsVersion: 6.1 ServicePack: 1.0 Typ: Desktop


process virt. address available: 3840


system physical RAM total: 16351


system physical RAM available: 12746


system committed limit: 40875


system committed peak: 6720


system committed current: 3612


system cache current: 2907


system handles: 9592 system processes: 43


system threads: 503 system uptime minutes: 50


SeLockMemoryPrivilege: granted, huge pages enabled


0.015s: 0.18ms 2048k at:0xffc00000 Alloc LP ( 2M)


0.015s: 0.00ms 128k at:0x00230000 Alloc SP ( 2M)


0.031s: 0.43ms 8192k at:0xff400000 Alloc LP ( 10M)


0.686s: 0.25ms 4096k at:0xff000000 Alloc LP ( 14M)


0.686s: 0.22ms 4096k at:0xfec00000 Alloc LP ( 18M)


0.686s: 0.21ms 4096k at:0xfe800000 Alloc LP ( 22M)


0.686s: 0.25ms 4096k at:0xfe400000 Alloc LP ( 26M)


0.967s: 0.32ms 4096k at:0xfe000000 Alloc LP ( 30M)


0.967s: 0.30ms 4096k at:0xfdc00000 Alloc LP ( 34M)


0.967s: 0.26ms 4096k at:0xfd800000 Alloc LP ( 38M) .....


The line with SeLockMemoryPrivilege for example tells you, that the required privileg is set correctly.

(Alloc LP means large pages are allocated, SP means small pages)


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...