Changeset 2425
- Timestamp:
- 11/21/22 11:48:46 (2 years ago)
- Location:
- XIOS3/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS3/trunk/scripts/plotly_memory.js
r2420 r2425 37 37 time: +d.time, 38 38 event: d.event, 39 memory: +d.memory 39 vsize: +d.vsize, 40 rss: +d.rss, 41 VmHWM: +d.VmHWM 40 42 }; 41 43 }, function(xios_mem_obj) { … … 48 50 // transpose data to use it more easily 49 51 var transData = []; 50 for(var i = 0; i < 3; i++){52 for(var i = 0; i < 5 ; i++){ 51 53 transData.push([]); 52 54 }; … … 54 56 //console.log( xios_mem_data[i] ); 55 57 transData[0].push( xios_mem_data[i].time ) // x axis 56 transData[1].push( xios_mem_data[i]. memory) // y axis58 transData[1].push( xios_mem_data[i].vsize ) // y axis 57 59 transData[2].push( xios_mem_data[i].event ) // labels 60 transData[3].push( xios_mem_data[i].rss ) // y axis 61 transData[4].push( xios_mem_data[i].VmHWM ) // y axis 58 62 }; 59 63 //console.log(transData[0]); … … 66 70 mode: 'markers', 67 71 text: transData[2], 72 name:'vsize', 68 73 }; 69 74 data.push(result); 75 76 var result2 = { 77 x: transData[0], 78 y: transData[3], 79 type: 'scatter', 80 mode: 'markers', 81 text: transData[2], 82 name:'RSS', 83 }; 84 data.push(result2); 85 86 var result3 = { 87 x: transData[0], 88 y: transData[4], 89 type: 'scatter', 90 mode: 'markers', 91 text: transData[2], 92 name:'VmHWM', 93 }; 94 data.push(result3); 70 95 71 96 var layout = { -
XIOS3/trunk/src/mem_checker.cpp
r2420 r2425 19 19 bool CMemChecker::first_=true; 20 20 double CMemChecker::vsize_init_=0; 21 double CMemChecker::rss_init_=0; 22 double CMemChecker::vmhwm_init_=0; 21 23 double CMemChecker::time_init_=0; 22 24 std::ofstream CMemChecker::fout_; … … 64 66 return vsize ; 65 67 } 68 69 // Return vector of memories amount : 70 // - vector[0] : virtual memory (vsize) from /proc/self/stat 71 // - vector[1] : resident set size (rss) from /proc/self/stat 72 // - vector[2] : Peak resident set size (VmHWM) from /proc/self/status 73 std::vector<double> CMemChecker::getMemories(void) 74 { 75 std::vector<double> memories; 76 77 if (first_) check() ; 78 if (!enabled_) return memories; 79 std::ifstream statStream("/proc/self/stat",std::ios_base::in); 80 std::string dummy ; 81 for(int i=1;i<=22;i++) statStream>>dummy ; 82 83 // 1 - Virtual 84 double vsize; 85 statStream>>vsize ; 86 if (vsize_init_==0) { 87 vsize_init_ = vsize; 88 time_init_=MPI_Wtime(); 89 } 90 vsize -= vsize_init_; 91 memories.push_back(vsize); 92 93 // 2 - RSS 94 double rss; 95 statStream>>rss ; 96 if (rss_init_==0) { 97 rss_init_ = rss; 98 } 99 rss -= rss_init_; 100 rss *= 4096; //getconf("PAGE_SIZE"); 101 memories.push_back(rss); 102 103 // 3 - Peak 104 char sbuf[1024]; 105 std::ifstream file( "/proc/self/status" ); 106 if( file.fail() ) { 107 return memories; 108 } 109 int fd = open( "/proc/self/status", O_RDONLY, 0 ); 110 int num_read=read( fd, sbuf, ( sizeof sbuf )-1 ); 111 close( fd ); 112 if( !num_read ) { 113 return memories; 114 } 115 // Peak resident set size 116 char *S=strstr( sbuf, "VmHWM:" )+6; 117 double vmhwm = ( int )atoi( S ); 118 if (vmhwm_init_==0) { 119 vmhwm_init_ = vmhwm; 120 } 121 vmhwm -= vmhwm_init_; 122 memories.push_back(vmhwm); 123 124 return memories; 125 } 126 66 127 void CMemChecker::logMem( std::string id, bool finalizeLog ) 67 128 { … … 71 132 MPI_Comm_rank( MPI_COMM_WORLD, &rk ); 72 133 std::string logName("xios_memory_"+std::to_string(rk)+".csv"); 73 double mem = getMemRSS();74 if (!mem ) {134 vector<double> mem = getMemories(); 135 if (!mem[0]) { 75 136 fout_.open( logName ); 76 fout_ << "time,event, memory" << std::endl;137 fout_ << "time,event,vsize,rss,VmHWM" << std::endl; 77 138 } 78 139 79 140 fout_.precision(4); 80 141 // Time format : YYYY-MM-DD HH:MM:SS.XXX -> seconds * 1000. 81 fout_ << (MPI_Wtime()-time_init_) << "," << id << "," << mem/1000000. << std::endl; 142 fout_ << (MPI_Wtime()-time_init_) << "," << id 143 << "," << mem[0]/1024./1024. 144 << "," << mem[1]/1024./1024. 145 << "," << mem[2]/1024. 146 << std::endl; 82 147 83 148 if ((MPI_Wtime()-time_init_)>flush_counter_*600.) -
XIOS3/trunk/src/mem_checker.hpp
r2420 r2425 5 5 #include <map> 6 6 #include <fstream> 7 #include <vector> 7 8 8 9 namespace xios … … 20 21 static double getMem(void); 21 22 static double getMemRSS(void); 23 static std::vector<double> getMemories(void); 22 24 static void logMem( std::string id, bool finalizeLog = false ); 23 25 static CMemChecker& get(std::string name); … … 39 41 40 42 static double vsize_init_; 43 static double rss_init_; 44 static double vmhwm_init_; 41 45 static double time_init_; 42 46 static std::ofstream fout_;
Note: See TracChangeset
for help on using the changeset viewer.