From 62c08c838c8d824b37b908bbed67b996aaaa31ac Mon Sep 17 00:00:00 2001 From: dsarrut Date: Tue, 15 Feb 2011 10:38:29 +0000 Subject: [PATCH 1/1] add option to display memory usage if statgrab is installed --- common/CMakeLists.txt | 17 +++++++++++++ common/clitkConfiguration.h.in | 3 +-- common/clitkMemoryUsage.cxx | 45 ++++++++++++++++++++++++++++++++++ common/clitkMemoryUsage.h | 39 +++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 common/clitkMemoryUsage.cxx create mode 100644 common/clitkMemoryUsage.h diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 6f602cd..a4b2614 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -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 diff --git a/common/clitkConfiguration.h.in b/common/clitkConfiguration.h.in index b4b89a9..f040914 100644 --- a/common/clitkConfiguration.h.in +++ b/common/clitkConfiguration.h.in @@ -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 index 0000000..295ac29 --- /dev/null +++ b/common/clitkMemoryUsage.cxx @@ -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 index 0000000..d514aff --- /dev/null +++ b/common/clitkMemoryUsage.h @@ -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 +#endif + +//-------------------------------------------------------------------- +namespace clitk { + + void PrintMemory(bool verbose=true, std::string s="") ; + +} // end namespace +//-------------------------------------------------------------------- + +#endif /* end #define CLITKMEMORYUSAGE_H */ + -- 2.45.1