Changeset 1137
- Timestamp:
- 05/18/17 17:26:56 (6 years ago)
- Location:
- XIOS/trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/make_xios
r984 r1137 47 47 "--job") job=$2 ; shift ; shift ;; 48 48 "--netcdf_lib") netcdf_lib=$2 ; shift ; shift ;; 49 "--memtrack") use_memtrack="true"; shift ;;49 "--memtrack") use_memtrack="true" memtrack=$2 ; shift ; shift ;; 50 50 *) code="$1" ; shift ;; 51 51 esac … … 172 172 if [[ "$use_memtrack" == "true" ]] 173 173 then 174 XIOS_LIB="$ADDR2LINE_LIBDIR $ADDR2LINE_LIB $XIOS_LIB"175 174 XIOS_CPPKEY="$XIOS_CPPKEY XIOS_MEMTRACK" 175 176 if [[ "$memtrack" == "light" ]] 177 then 178 XIOS_CPPKEY="$XIOS_CPPKEY XIOS_MEMTRACK_LIGHT" 179 elif [[ "$memtrack" == "FULL" ]] 180 then 181 XIOS_LIB="$ADDR2LINE_LIBDIR $ADDR2LINE_LIB $XIOS_LIB" 182 XIOS_CPPKEY="$XIOS_CPPKEY XIOS_MEMTRACK_FULL" 183 else 184 echo "Bad choice for --memtrack argument : choose between 'light','full'" 185 exit 186 fi 176 187 fi 177 188 -
XIOS/trunk/src/cxios.cpp
r1029 r1137 111 111 delete globalRegistry ; 112 112 } 113 CClient::closeInfoStream();114 115 113 116 114 #ifdef XIOS_MEMTRACK 115 116 #ifdef XIOS_MEMTRACK_LIGHT 117 report(10) << " Memory report : current memory used by XIOS : "<< MemTrack::getCurrentMemorySize()*1.0/(1024*1024)<<" Mbyte" << endl ; 118 report(10) << " Memory report : maximum memory used by XIOS : "<< MemTrack::getMaxMemorySize()*1.0/(1024*1024)<<" Mbyte" << endl ; 119 #endif 120 121 #ifdef XIOS_MEMTRACK_FULL 117 122 MemTrack::TrackListMemoryUsage() ; 118 123 MemTrack::TrackDumpBlocks(); 124 #endif 125 126 CClient::closeInfoStream(); 127 119 128 #endif 120 129 } … … 163 172 } 164 173 CServer::finalize(); 174 175 #ifdef XIOS_MEMTRACK 176 177 #ifdef XIOS_MEMTRACK_LIGHT 178 report(10) << " Memory report : current memory used by XIOS : "<< MemTrack::getCurrentMemorySize()*1.0/(1024*1024)<<" Mbyte" << endl ; 179 report(10) << " Memory report : maximum memory used by XIOS : "<< MemTrack::getMaxMemorySize()*1.0/(1024*1024)<<" Mbyte" << endl ; 180 #endif 181 182 #ifdef XIOS_MEMTRACK_FULL 183 MemTrack::TrackListMemoryUsage() ; 184 MemTrack::TrackDumpBlocks(); 185 #endif 186 #endif 165 187 CServer::closeInfoStream(); 166 188 } -
XIOS/trunk/src/memtrack.cpp
r501 r1137 44 44 #include <sstream> 45 45 #include <string> 46 46 47 #include <execinfo.h> 47 48 … … 52 53 { 53 54 void addr2line(const char *file_name, char** addr, int naddr) ; 55 #ifdef XIOS_MEMTRACK_LIGHT 56 void addr2line(const char *file_name, char** addr, int naddr) {} 57 #endif 54 58 } 55 59 /* ------------------------------------------------------------ */ … … 59 63 namespace MemTrack 60 64 { 65 size_t currentMemorySize=0 ; 66 size_t maxMemorySize=0 ; 67 68 size_t getCurrentMemorySize(void) {return currentMemorySize; } 69 size_t getMaxMemorySize(void) {return maxMemorySize ; } 61 70 62 71 /* ------------------------------------------------------------ */ … … 375 384 // Get the offset to the user chunk and return it. 376 385 UserChunk *pUser = GetUserAddress(pProlog); 386 387 currentMemorySize += size ; 388 if (currentMemorySize>maxMemorySize) maxMemorySize=currentMemorySize ; 377 389 378 390 return pUser; … … 400 412 // Unlink the block header from the list and destroy it. 401 413 BlockHeader *pBlockHeader = GetHeaderAddress(pProlog); 414 currentMemorySize-=pBlockHeader->GetRequestedSize(); 402 415 BlockHeader::RemoveNode(pBlockHeader); 403 416 pBlockHeader->~BlockHeader(); -
XIOS/trunk/src/memtrack.hpp
r501 r1137 61 61 void TrackDumpBlocks(); 62 62 void TrackListMemoryUsage(); 63 63 size_t getCurrentMemorySize(void) ; 64 size_t getMaxMemorySize(void) ; 64 65 /* ---------------------------------------- operator * (MemStamp, ptr) */ 65 66 -
XIOS/trunk/src/node/context.cpp
r1135 r1137 15 15 #include "xios_spl.hpp" 16 16 #include "timer.hpp" 17 #include "memtrack.hpp" 17 18 18 19 … … 1197 1198 calendar->update(step); 1198 1199 info(50) << "updateCalendar : after : " << calendar->getCurrentDate() << endl; 1199 1200 #ifdef XIOS_MEMTRACK_LIGHT 1201 info(50) << " Current memory used by XIOS : "<< MemTrack::getCurrentMemorySize()*1.0/(1024*1024)<<" Mbyte, at timestep "<<step<<" of context "<<this->getId()<<endl ; 1202 #endif 1200 1203 if (hasClient) 1201 1204 {
Note: See TracChangeset
for help on using the changeset viewer.