[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55217] trunk/blender/source/blender/ compositor/intern: Print compositor execution statistics when in background mode

Sergey Sharybin sergey.vfx at gmail.com
Tue Mar 12 15:28:52 CET 2013


Revision: 55217
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55217
Author:   nazgul
Date:     2013-03-12 14:28:52 +0000 (Tue, 12 Mar 2013)
Log Message:
-----------
Print compositor execution statistics when in background mode

This will print memory usage, mapped memory usage, memory peak,
compositing tree name and number of finished tiles to stdout
when blender is rendering in background mode.

This makes compositor a less blackbox and should help trouble
shooting issues happening during 4K ToS project.

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.h

Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp	2013-03-12 14:06:18 UTC (rev 55216)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp	2013-03-12 14:28:52 UTC (rev 55217)
@@ -40,6 +40,7 @@
 
 #include "MEM_guardedalloc.h"
 #include "BLI_math.h"
+#include "BKE_global.h"
 #include "PIL_time.h"
 #include "WM_api.h"
 #include "WM_types.h"
@@ -410,6 +411,29 @@
 	return result;
 }
 
+void ExecutionGroup::printBackgroundStats(void)
+{
+	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);
+
+	fprintf(stdout, "Mem:%.2fM (%.2fM, Peak %.2fM) ",
+	        megs_used_memory, mmap_used_memory, megs_peak_memory);
+
+	printf("| Tree %s, Tile %d-%d ", this->m_bTree->id.name + 2,
+	       this->m_chunksFinished, this->m_numberOfChunks);
+
+	fputc('\n', stdout);
+	fflush(stdout);
+}
+
 void ExecutionGroup::finalizeChunkExecution(int chunkNumber, MemoryBuffer **memoryBuffers)
 {
 	if (this->m_chunkExecutionStates[chunkNumber] == COM_ES_SCHEDULED)
@@ -433,6 +457,9 @@
 		float progress = this->m_chunksFinished;
 		progress /= this->m_numberOfChunks;
 		this->m_bTree->progress(this->m_bTree->prh, progress);
+
+		if (G.background)
+			printBackgroundStats();
 	}
 }
 

Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.h	2013-03-12 14:06:18 UTC (rev 55216)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.h	2013-03-12 14:28:52 UTC (rev 55217)
@@ -341,6 +341,11 @@
 	 * @see determineChunkRect
 	 */
 	MemoryBuffer *allocateOutputBuffer(int chunkNumber, rcti *rect);
+
+	/**
+	 * @brief print execution statistics to stdout when running in a background mode
+	 */
+	void printBackgroundStats(void);
 	
 	/**
 	 * @brief after a chunk is executed the needed resources can be freed or unlocked.




More information about the Bf-blender-cvs mailing list