0
0

We’re currently having issues with PS3 main memory usage, it’s currently peaking at over 15Mb, which seems a lot for what we’re doing (since data is in RSX). We can locate packages/projects that are main offenders but can’t really break down what it is inside them that causes the problem, I know there’s been all the talk of max playbacks etc. causing a lot of problems in the past but has there been any progress towards being able to break down what’s using memory within projects so that we can get a clearer view of it instead of just stabbing in the dark at playback amounts and using certain dsps etc.?

I guess even a list of top memory eaters would be useful, as we’re back on 4.08.10 and not intending to upgrade, so we wouldn’t be able to use any new memory tracking features that may exist.

  • You must to post comments
0
0

I assume you are using the Event/Designer API? If so, the biggest things we’ve seen in main memory are stream buffers and projects with tons of events (like if you have a unique event per voice line). The solution to the former is to call freeEventData() on the streaming event when it completes, which will deallocate the stream buffer. The solution to the latter is to use programmer sounds instead of one event per line.

Here’s how we track major categories of memory:

[code:1i4fu8n5]
FMOD_EVENT_SYSTEMINFO systemInfo;
memset( &systemInfo, 0, sizeof( FMOD_EVENT_SYSTEMINFO ) );
s_pFMODEventSystem->getInfo( &systemInfo );

profileData.m_eventMem = systemInfo.eventmemory + systemInfo.instancememory;
profileData.m_dspMem = systemInfo.dspmemory;

for( int i = 0; i < systemInfo.numwavebanks; ++i )
{
profileData.m_streamMem += systemInfo.wavebankinfo[i].streammemory;
profileData.m_sampleMem += systemInfo.wavebankinfo[i].samplememory;
profileData.m_nStreams += systemInfo.wavebankinfo[i].streamsinuse;
}

FMOD::Memory_GetStats(&profileData.m_totalMem, NULL);

profileData.m_systemMem = profileData.m_totalMem – ( profileData.m_streamMem +
profileData.m_sampleMem +
profileData.m_eventMem +
systemInfo.dspmemory );
[/code:1i4fu8n5]

And here’s how we track what wavs are loaded:

[code:1i4fu8n5]

FMOD::SoundGroup* pSoundGroup = NULL;
pSystem->getMasterSoundGroup(&pSoundGroup);
int nSounds = 0;
pSoundGroup->getNumSounds(&nSounds);
for( int i = 0; i < nSounds; ++i )
{
FMOD::Sound* pSound = NULL;
pSoundGroup->getSound( i, &pSound );
pSound->getName( szName, nameLen );
profileData.m_aWavs.AddData( szName );
}
[/code:1i4fu8n5]

  • You must to post comments
0
0

Oh, also, if you are not running in NAMELESS mode that can eat quite a bit of memory in string allocations.

  • You must to post comments
Showing 2 results
Your Answer

Please first to submit.