]> Creatis software - clitk.git/commitdiff
add option to display memory usage if statgrab is installed
authordsarrut <dsarrut>
Tue, 15 Feb 2011 10:38:29 +0000 (10:38 +0000)
committerdsarrut <dsarrut>
Tue, 15 Feb 2011 10:38:29 +0000 (10:38 +0000)
common/CMakeLists.txt
common/clitkConfiguration.h.in
common/clitkMemoryUsage.cxx [new file with mode: 0644]
common/clitkMemoryUsage.h [new file with mode: 0644]

index 6f602cd295cb8e64bf7be2f60c8879fda65fc370..a4b26142178a03624a610e44498a6b4646148348 100644 (file)
@@ -33,7 +33,24 @@ SET(clitkCommon_SRC
   clitkFilterBase.cxx
 )  
 
+### if LIBSTATGRAB is installed, add clitkMemoryUsage.cxx in the library
+IF(CLITK_MEMORY_INFO)
+  FIND_PROGRAM(LIBSTATGRAB NAMES statgrab PATHS)
+  IF (${LIBSTATGRAB} MATCHES "LIBSTATGRAB-NOTFOUND")
+    MESSAGE( FATAL_ERROR "libstatgrab NOT FOUND -> please install http://www.i-scream.org/libstatgrab/")
+  ELSE (${LIBSTATGRAB} MATCHES "LIBSTATGRAB-NOTFOUND")
+    SET(clitkCommon_SRC ${clitkCommon_SRC} clitkMemoryUsage.cxx)
+  ENDIF (${LIBSTATGRAB} MATCHES "LIBSTATGRAB-NOTFOUND")  
+ENDIF(CLITK_MEMORY_INFO)
+
+### Declare clitkCommon library
 ADD_LIBRARY(clitkCommon STATIC ${clitkCommon_SRC})
+
+### Add libstatgrab if needed
+IF(CLITK_MEMORY_INFO)
+    TARGET_LINK_LIBRARIES(clitkCommon statgrab)
+ENDIF(CLITK_MEMORY_INFO)
+
 TARGET_LINK_LIBRARIES(clitkCommon vtkCommon vtkImaging vtkHybrid ITKBasicFilters)
 
 ADD_LIBRARY(clitkDicomRTStruct STATIC
index b4b89a9879c4b27b5ddc07b61139f54be1105675..f040914a05aa1ea53e1e4b00fb911a9257fd118f 100644 (file)
@@ -3,8 +3,7 @@
 //This file is interpreted by cmake, to define macros based on the cmake configuration options
 //
 
-
 #cmakedefine01 CLITK_EXPERIMENTAL
-
+#cmakedefine01 CLITK_MEMORY_INFO
 
 #endif
diff --git a/common/clitkMemoryUsage.cxx b/common/clitkMemoryUsage.cxx
new file mode 100644 (file)
index 0000000..295ac29
--- /dev/null
@@ -0,0 +1,45 @@
+/*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
+
+  Authors belong to: 
+  - University of LYON              http://www.universite-lyon.fr/
+  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
+
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the copyright notices for more information.
+
+  It is distributed under dual licence
+
+  - BSD        See included LICENSE.txt file
+  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+  ======================================================================-====*/
+
+// clitk include
+#include "clitkCommon.h"
+#include "clitkMemoryUsage.h"
+
+void clitk::PrintMemory(bool verbose, std::string s) 
+{
+#if CLITK_MEMORY_INFO == 1
+  if (verbose) {
+      //sleep(1); // wait to refresh memory ? need to let the system refresh the mem
+      int * entries = new int;
+      sg_process_stats * stat = new sg_process_stats;
+      int i=0; 
+      stat = sg_get_process_stats(entries);
+      // Search the current pid in the list of processes
+      while (stat[i].pid != getpid()) i++;
+      // Display total memory size 
+      if (s != "") std::cout << "==> " << s << ": ";
+      static int previous=0;
+      int mem = stat[i].proc_size/1000/1000; // in Mb
+      std::cout << mem << "Mb (" << mem-previous << "Mb)" << std::endl;
+      previous = mem;
+      //DD(stat[i].proc_resident/1000/1000);
+      //DD(stat[i].pid);
+    }
+#endif
+  }
+
diff --git a/common/clitkMemoryUsage.h b/common/clitkMemoryUsage.h
new file mode 100644 (file)
index 0000000..d514aff
--- /dev/null
@@ -0,0 +1,39 @@
+/*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
+
+  Authors belong to: 
+  - University of LYON              http://www.universite-lyon.fr/
+  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
+
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the copyright notices for more information.
+
+  It is distributed under dual licence
+
+  - BSD        See included LICENSE.txt file
+  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+  ======================================================================-====*/
+
+#ifndef CLITKMEMORYUSAGE_H
+#define CLITKMEMORYUSAGE_H
+
+// clitk include
+#include "clitkConfiguration.h"
+
+// statgrab include
+#if CLITK_MEMORY_INFO == 1
+#include <statgrab.h>
+#endif
+
+//--------------------------------------------------------------------
+namespace clitk {
+
+  void PrintMemory(bool verbose=true, std::string s="") ;
+
+}  // end namespace
+//--------------------------------------------------------------------
+
+#endif /* end #define CLITKMEMORYUSAGE_H */
+