[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28567] branches/render25: added a peak memory statistic
Joseph Eagar
joeedh at gmail.com
Tue May 4 12:35:36 CEST 2010
Revision: 28567
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28567
Author: joeedh
Date: 2010-05-04 12:35:36 +0200 (Tue, 04 May 2010)
Log Message:
-----------
added a peak memory statistic
Modified Paths:
--------------
branches/render25/intern/guardedalloc/MEM_guardedalloc.h
branches/render25/intern/guardedalloc/intern/mallocn.c
branches/render25/source/blender/editors/render/render_internal.c
branches/render25/source/blender/render/intern/source/pipeline.c
Modified: branches/render25/intern/guardedalloc/MEM_guardedalloc.h
===================================================================
--- branches/render25/intern/guardedalloc/MEM_guardedalloc.h 2010-05-04 10:16:32 UTC (rev 28566)
+++ branches/render25/intern/guardedalloc/MEM_guardedalloc.h 2010-05-04 10:35:36 UTC (rev 28567)
@@ -144,6 +144,12 @@
uintptr_t MEM_get_mapped_memory_in_use(void);
int MEM_get_memory_blocks_in_use(void);
+ /*reset the peak memory statistic to zero*/
+ void MEM_reset_peak_memory(void);
+
+ /*get the peak memory usage in bytes, including mmap allocations*/
+ uintptr_t MEM_get_peak_memory(void);
+
#ifdef __cplusplus
}
#endif
Modified: branches/render25/intern/guardedalloc/intern/mallocn.c
===================================================================
--- branches/render25/intern/guardedalloc/intern/mallocn.c 2010-05-04 10:16:32 UTC (rev 28566)
+++ branches/render25/intern/guardedalloc/intern/mallocn.c 2010-05-04 10:35:36 UTC (rev 28567)
@@ -138,7 +138,7 @@
static volatile int totblock= 0;
-static volatile uintptr_t mem_in_use= 0, mmap_in_use= 0;
+static volatile uintptr_t mem_in_use= 0, mmap_in_use= 0, peak_mem = 0;
static volatile struct localListBase _membase;
static volatile struct localListBase *membase = &_membase;
@@ -293,6 +293,8 @@
totblock++;
mem_in_use += len;
+
+ peak_mem = mem_in_use > peak_mem ? mem_in_use : peak_mem;
}
void *MEM_mallocN(size_t len, const char *str)
@@ -377,6 +379,7 @@
make_memhead_header(memh, len, str);
memh->mmap= 1;
mmap_in_use += len;
+ peak_mem = mmap_in_use > peak_mem ? mmap_in_use : peak_mem;
mem_unlock_thread();
#ifdef DEBUG_MEMCOUNTER
if(_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL)
@@ -802,6 +805,24 @@
return(name);
}
+uintptr_t MEM_get_peak_memory(void)
+{
+ uintptr_t _peak_mem;
+
+ mem_lock_thread();
+ _peak_mem = peak_mem;
+ mem_unlock_thread();
+
+ return _peak_mem;
+}
+
+void MEM_reset_peak_memory(void)
+{
+ mem_lock_thread();
+ peak_mem = 0;
+ mem_unlock_thread();
+}
+
uintptr_t MEM_get_memory_in_use(void)
{
uintptr_t _mem_in_use;
Modified: branches/render25/source/blender/editors/render/render_internal.c
===================================================================
--- branches/render25/source/blender/editors/render/render_internal.c 2010-05-04 10:16:32 UTC (rev 28566)
+++ branches/render25/source/blender/editors/render/render_internal.c 2010-05-04 10:35:36 UTC (rev 28567)
@@ -455,15 +455,17 @@
static void make_renderinfo_string(RenderStats *rs, Scene *scene, char *str)
{
char info_time_str[32]; // used to be extern to header_info.c
- uintptr_t mem_in_use, mmap_in_use;
- float megs_used_memory, mmap_used_memory;
+ uintptr_t mem_in_use, mmap_in_use, peak_memory;
+ float megs_used_memory, mmap_used_memory, megs_peak_memory;
char *spos= str;
mem_in_use= MEM_get_memory_in_use();
mmap_in_use= MEM_get_mapped_memory_in_use();
+ peak_memory = MEM_get_peak_memory();
megs_used_memory= (mem_in_use-mmap_in_use)/(1024.0*1024.0);
mmap_used_memory= (mmap_in_use)/(1024.0*1024.0);
+ megs_peak_memory = (peak_memory)/(1024.0*1024.0);
if(scene->lay & 0xFF000000)
spos+= sprintf(spos, "Localview | ");
@@ -477,7 +479,7 @@
spos+= sprintf(spos, "Fra:%d Ve:%d Fa:%d ", (scene->r.cfra), rs->totvert, rs->totface);
if(rs->tothalo) spos+= sprintf(spos, "Ha:%d ", rs->tothalo);
if(rs->totstrand) spos+= sprintf(spos, "St:%d ", rs->totstrand);
- spos+= sprintf(spos, "La:%d Mem:%.2fM (%.2fM) ", rs->totlamp, megs_used_memory, mmap_used_memory);
+ spos+= sprintf(spos, "La:%d Mem:%.2fM (%.2fM, combined peak %.2fM) ", rs->totlamp, megs_used_memory, mmap_used_memory, megs_peak_memory);
if(rs->curfield)
spos+= sprintf(spos, "Field %d ", rs->curfield);
Modified: branches/render25/source/blender/render/intern/source/pipeline.c
===================================================================
--- branches/render25/source/blender/render/intern/source/pipeline.c 2010-05-04 10:16:32 UTC (rev 28566)
+++ branches/render25/source/blender/render/intern/source/pipeline.c 2010-05-04 10:35:36 UTC (rev 28567)
@@ -137,12 +137,21 @@
static void stats_background(void *unused, RenderStats *rs)
{
- uintptr_t mem_in_use= MEM_get_memory_in_use();
- float megs_used_memory= mem_in_use/(1024.0*1024.0);
char str[400], *spos= str;
+ uintptr_t mem_in_use, mmap_in_use, peak_memory;
+ float megs_used_memory, mmap_used_memory, megs_peak_memory;
+
+ mem_in_use= MEM_get_memory_in_use();
+ mmap_in_use= MEM_get_mapped_memory_in_use();
+ peak_memory = MEM_get_peak_memory();
+
+ megs_used_memory= (mem_in_use-mmap_in_use)/(1024.0*1024.0);
+ mmap_used_memory= (mmap_in_use)/(1024.0*1024.0);
+ megs_peak_memory = (peak_memory)/(1024.0*1024.0);
+
+ spos+= sprintf(spos, "Fra:%d Mem:%.2fM (%.2fM, combined peak %.2fM) ", rs->cfra,
+ megs_used_memory, mmap_used_memory, megs_peak_memory);
- spos+= sprintf(spos, "Fra:%d Mem:%.2fM ", rs->cfra, megs_used_memory);
-
if(rs->curfield)
spos+= sprintf(spos, "Field %d ", rs->curfield);
if(rs->curblur)
@@ -1521,6 +1530,7 @@
scene->r.cfra= frame;
if(render_initialize_from_scene(re, scene, srl, lay, 0, 0)) {
+ MEM_reset_peak_memory();
do_render_all_options(re);
}
More information about the Bf-blender-cvs
mailing list