Jump to content
Sign in to follow this  
Dwarden

Custom Memory Allocator for engine since b85869

Recommended Posts

It was changed recently:

[87645] Changed: Default memory allocator is now tbb4malloc_bi instead of tbb3malloc_bi

Share this post


Link to post
Share on other sites

Tried to run the PvP MemAlloc Suite with 89025, but with the default settings of that test it seems that Vsync is on...I was getting capped at 60 FPS for most of the tests. Is there a command to disable that? Also, is it possible to get more than just the average FPS, because that alone is not always the best indicator of performance. Be nice to have min and max as well.

Share this post


Link to post
Share on other sites

So now that tbb4malloc_bi is the default allocator, there is no more need to specify it into the shortcut target right? The allocator command should only be used if I want to use a different allocator than tbb4malloc_bi?

Share this post


Link to post
Share on other sites

Yes,but only with a beta patch (use latest one to be sure)

tbb4malloc_bi is not the default allocator in 1.60 vanilla

Share this post


Link to post
Share on other sites

I had a crash while playing a long game on Warfare BE the other night on the latest beta. The .rpt indicates its something to do with tbb4malloc_bi:

https://docs.google.com/open?id=0B4XTZr1qNsoDZTViZjI4YTYtOGNiNy00ZGMwLWE5N2YtODMyMDhjNDJkNDU2

I am also trying to diagnose a separate issue which may be linked but need to test further. I think the client may be degrading over time performance wise in the latest betas, as I don't seem to get it on official 1.60 patch. It is time consuming to reproduce consistently though. I have reverted the beta to use tbb3malloc_bi, so will see how that goes.

Specs are:

Specs:

i7 920 Bloomfield C0/C1 @ 3.8Ghz

12GB Corsair Vengeance @ 16000Mhz

Gigabyte GA-EX58-UD3R Rev 1.0

Geforce GTX 580 1.5gb

Windows 7 x64 Ultimate Edition

Arma 2 is installed on an OCZ Vertex Turbo SSD.

Share this post


Link to post
Share on other sites

Results for the last few betas

" AVG FPS	AVG MIN		HIGHEST		LOWEST"

// 1.60.89025

### With FXAA

tbb3malloc_bi	"31		25		51		8"
tbb4malloc_bi	"32		26		46		8"
jemalloc_bi	"31		25		48		6"
nedmalloc_bi	"30		25		43		8"
tcmalloc_bi	"31		25		51		8"
system		"28		20		42		2"



// 1.60.89025

### Without FXAA

tbb3malloc_bi	"32		26		50		8"
tbb4malloc_bi	"31		24		51		6"
jemalloc_bi	"32		25		46		7"
nedmalloc_bi	"29		24		40		8"
tcmalloc_bi	"33		26		53		8"
system		"27		18		42		3"

// 1.60.89096

tbb3malloc_bi	"35		28		61		6"
tbb4malloc_bi	"32		26		51		7"
jemalloc_bi	"31		25		48		8"
nedmalloc_bi	"30		24		54		2"
tcmalloc_bi	"31		26		48		8"
system		"28		20		44		2"

// 1.60.89162

tbb3malloc_bi	"32		26		50		7"
tbb4malloc_bi	"34		27		60		8"
jemalloc_bi	"33		26		54		3"
nedmalloc_bi	"29		25		38		6"
tcmalloc_bi	"31		26		43		8"
system		"28		20		40		2"

// 1.60.89223

tbb3malloc_bi	"33		26		50		8"
tbb4malloc_bi	"37		30		51		6"
jemalloc_bi	"31		25		48		7"
nedmalloc_bi	"29		24		42		8"
tcmalloc_bi	"35		28		60		4"
system		"28		20		42		2"

Basically no change as far as I can tell.

The latest beta has some better FPS with tbb4 and tc.

Share this post


Link to post
Share on other sites

Which memory allocator does last official patch use?

Should I install latest beta with the tbb4 mem alloc?

I think I am going to start tightening my ram timings.

Share this post


Link to post
Share on other sites

It uses tbb4. It will AUTOMATICALLY use tbb4 ... so not needed in commandline.

Share this post


Link to post
Share on other sites

//93415

"AVG FPS	AVG MIN		HIGHEST		LOWEST"
tbb3malloc_bi
"33		26		57		8"
tbb4malloc_bi
"33		26		57		8"
jemalloc_bi
"33		26		54		2"
nedmalloc_bi
"31		25		48		2"
tcmalloc_bi
"33		27		56		5"
system
"29		20		46		2"

//93586

"AVG FPS	AVG MIN		HIGHEST		LOWEST"
tbb3malloc_bi
"34		27		60		8"
tbb4malloc_bi
"36		28		60		8"
jemalloc_bi
"31		25		43		8"
nedmalloc_bi
"32		26		50		8"
tcmalloc_bi
"34		27		57		8"
system
"29		21		46		2"

//93616

"AVG FPS	AVG MIN		HIGHEST		LOWEST"
tbb3malloc_bi
"32		26		48		6"
tbb4malloc_bi
"33		26		50		8"
jemalloc_bi
"32		26		50		3"
nedmalloc_bi
"31		24		45		3"
tcmalloc_bi
"35		27		54		2"
system
"29		20		50		2"

//93825

"AVG FPS	AVG MIN		HIGHEST		LOWEST"
tbb3malloc_bi
"35		27		57		8"
tbb4malloc_bi
"41		32		60		8"
jemalloc_bi
"33		26		57		8"
nedmalloc_bi
"33		26		52		8"
tcmalloc_bi
"34		26		54		6"
system
"31		22		48		2"

Q6600 @ 2.4 GHZ (XP32b) to i7 920 @ 4 GHZ (Win7 64b)

//93825

"AVG FPS	AVG MIN		HIGHEST		LOWEST"
tbb3malloc_bi
"57		47		62		17"
tbb4malloc_bi
"57		48		62		1"
jemalloc_bi
"57		47		61		13"
nedmalloc_bi
"56		46		62		13"
tcmalloc_bi
"57		47		62		14"
system
"57		48		62		2"

With V-Sync disabled and no longer window mode

//94103

"AVG FPS	AVG MIN		HIGHEST		LOWEST"
tbb3malloc_bi
"77		63		109		11"
tbb4malloc_bi
"75		62		110		9"
jemalloc_bi
"74		61		120		1"
nedmalloc_bi
"70		59		105		8"
tcmalloc_bi
"73		62		109		1"
system
"71		60		106		1"

//1.62.95248

"AVG FPS	AVG MIN		HIGHEST		LOWEST"
tbb3malloc_bi
"77		65		119		15"
tbb4malloc_bi
"75		63		110		9"
jemalloc_bi
"76		64		109		1"
nedmalloc_bi
"75		63		109		1"
tcmalloc_bi
"76		64		110		1"
system
"74		63		107		1"

Edited by .kju [PvPscene]

Share this post


Link to post
Share on other sites

Is using -malloc=tcmalloc_bi likely to help on my Phenom II X4 955 system? I've been having a lot of problems with stuttering, particularly at the start of missions and I've already done the usual settings tweaks, so I'm looking for anything else that might help.

Share this post


Link to post
Share on other sites

loading up a mission will almost always have some stutter and chop. The game will use tb4 by default. I do believe you can remove the dlls from the DLL folder and test each one, by only putting in one at a time or use the command line like you posted.

Share this post


Link to post
Share on other sites

Well no, tcmalloc didn't help, in fact it crashed with this in the RPT

Virtual memory total 4095 MB (4294836224 B)
Virtual memory free 2876 MB (3016142848 B)
Physical memory free 4156 MB (4358868992 B)
Page file free 9118 MB (9561620480 B)
Process working set 851 MB (892538880 B)
Process page file used 874 MB (916856832 B)
Longest free VM region: 2146988032 B
VM busy 1295843328 B (reserved 244908032 B, committed 1050935296 B, mapped 89448448 B), free 2998992896 B
Small mapped regions: 15, size 77824 B
ErrorMessage: Out of memory (requested 0 KB).
 footprint 465108992 KB.
 pages 32768 KB.

I get severe freezing between 4-12 seconds at the start of a mission with CBA enabled although I think it's OK after that. I was getting major stuttering half-way into a mission I was playing on the LAN the other day (on both PCs), such that we had to quit it. The Battlefield mission also lags severely at the start for quite a while (not like the CBA freezing, it's more that every few seconds it hangs for a second or two) although it seems to settle down after 10-20 seconds. Still quite annoying though.

Share this post


Link to post
Share on other sites

On my system TCMALLOC provide 1/3 more MINIMAL framerate and 10%[or less]less average framerate, which i consider considerably attractive difference :-)

generally non-blocking/concurent-dataflow-related allocators[such as Lockless MPI] would be next according by https://en.wikipedia.org/wiki/Joe_Armstrong_%28programming%29 http://archive.org/details/ErlangTheMovie, but some developers unready/lazy/old yet to use it aswell as to switching from bottlenecking languages/paradigm.

few shortcuts/highlight

Edited by BasileyOne

Share this post


Link to post
Share on other sites

TCmalloc, NEDmalloc, JCmalloc are extremely outdated (the code base is old or maybe even older than the announce of Custom Allocators)

if You aim to use them i suggest to fully rebuild them using latest sources from respective project

take in mind the Intel TBBv3 is obsolete and outdated (Intel is not updating v3 branch anymore)

Intel TBBv4 is up2date as it's our default allocator

note BasileyOne quite interesting but i assume You using these old TCmalloc libraries ?

btw. that lockless memory allocator is interesting one

http://locklessinc.com/technical_allocator.shtml

http://locklessinc.com/benchmarks_allocator.shtml

Edited by Dwarden

Share this post


Link to post
Share on other sites

I tested with -malloc=tbb4malloc_bi yesterday and had a major crash in Soldier of Valor campaign

Virtual memory total 4095 MB (4294836224 B)
Virtual memory free 2876 MB (3016142848 B)
Physical memory free 4156 MB (4358868992 B)
Page file free 9118 MB (9561620480 B)
Process working set 851 MB (892538880 B)
Process page file used 874 MB (916856832 B)
Longest free VM region: 2146988032 B
VM busy 1295843328 B (reserved 244908032 B, committed 1050935296 B, mapped 89448448 B), free 2998992896 B
Small mapped regions: 15, size 77824 B
ErrorMessage: Out of memory (requested 0 KB).
 footprint 465108992 KB.
 pages 32768 KB.

which seems strange if that's the default. I don't seem to get these crashes if I don't specify an allocator (at least the only two times I've had them is when trying this or tcmalloc).

Share this post


Link to post
Share on other sites

it would be nice to fill complete CIT ticket report and include bidmp, mdmp and rpt file from the crash

Share this post


Link to post
Share on other sites

I'll try but it only happened after playing the campaign for about an hour so I'm not sure I want to purposely set it up to crash and lose my progress again ;) I did a few saves so I probably didn't lose all my progress anyway.

It doesn't look like any bidmp or mdmp was made anyway, just the rpt. I can certainly upload that if you think it would be helpful on it's own?

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
Sign in to follow this  

×