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);
        }
        


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to