Changeset 2426
- Timestamp:
- 11/21/22 16:38:46 (2 years ago)
- Location:
- XIOS3/trunk/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS3/trunk/src/interface/c/iccalendar.cpp
r2406 r2426 4 4 #include "exception.hpp" 5 5 #include "timer.hpp" 6 #include "mem_checker.hpp" 6 7 #include "context.hpp" 7 8 #include "context_client.hpp" … … 12 13 TRY 13 14 { 15 CMemChecker::get("XIOS update calendar").resume(); 14 16 CTimer::get("XIOS").resume(); 15 17 CTimer::get("XIOS update calendar").resume(); … … 23 25 CTimer::get("XIOS update calendar").suspend(); 24 26 CTimer::get("XIOS").suspend(); 27 CMemChecker::get("XIOS update calendar").suspend(); 25 28 } 26 29 CATCH_DUMP_STACK -
XIOS3/trunk/src/interface/c/icdata.cpp
r2406 r2426 25 25 #include "mpi.hpp" 26 26 #include "timer.hpp" 27 #include "mem_checker.hpp" 27 28 #include "array_new.hpp" 28 29 … … 119 120 TRY 120 121 { 122 CMemChecker::get("XIOS close definition").resume(); 123 121 124 CTimer::get("XIOS").resume(); 122 125 CTimer::get("XIOS close definition").resume(); … … 125 128 CTimer::get("XIOS close definition").suspend(); 126 129 CTimer::get("XIOS").suspend(); 130 131 CMemChecker::get("XIOS close definition").suspend(); 127 132 } 128 133 CATCH_DUMP_STACK … … 419 424 TRY 420 425 { 426 CMemChecker::get("XIOS send field").resume(); 421 427 CTimer::get("XIOS").resume(); 422 428 CTimer::get("XIOS send field").resume(); … … 428 434 CTimer::get("XIOS send field").suspend(); 429 435 CTimer::get("XIOS").suspend(); 436 CMemChecker::get("XIOS send field").suspend(); 430 437 } 431 438 CATCH_DUMP_STACK … … 446 453 TRY 447 454 { 455 CMemChecker::get("XIOS send field").resume(); 448 456 CTimer::get("XIOS").resume(); 449 457 CTimer::get("XIOS send field").resume(); … … 458 466 CTimer::get("XIOS send field").suspend(); 459 467 CTimer::get("XIOS").suspend(); 468 CMemChecker::get("XIOS send field").suspend(); 460 469 } 461 470 CATCH_DUMP_STACK … … 476 485 TRY 477 486 { 487 CMemChecker::get("XIOS send field").resume(); 478 488 CTimer::get("XIOS").resume(); 479 489 CTimer::get("XIOS send field").resume(); … … 488 498 CTimer::get("XIOS send field").suspend(); 489 499 CTimer::get("XIOS").suspend(); 500 CMemChecker::get("XIOS send field").suspend(); 490 501 } 491 502 CATCH_DUMP_STACK … … 508 519 TRY 509 520 { 521 CMemChecker::get("XIOS send field").resume(); 510 522 CTimer::get("XIOS").resume(); 511 523 CTimer::get("XIOS send field").resume(); … … 520 532 CTimer::get("XIOS send field").suspend(); 521 533 CTimer::get("XIOS").suspend(); 534 CMemChecker::get("XIOS send field").suspend(); 522 535 } 523 536 CATCH_DUMP_STACK … … 542 555 TRY 543 556 { 557 CMemChecker::get("XIOS send field").resume(); 544 558 CTimer::get("XIOS").resume(); 545 559 CTimer::get("XIOS send field").resume(); … … 554 568 CTimer::get("XIOS send field").suspend(); 555 569 CTimer::get("XIOS").suspend(); 570 CMemChecker::get("XIOS send field").suspend(); 556 571 } 557 572 CATCH_DUMP_STACK … … 578 593 TRY 579 594 { 595 CMemChecker::get("XIOS send field").resume(); 580 596 CTimer::get("XIOS").resume(); 581 597 CTimer::get("XIOS send field").resume(); … … 590 606 CTimer::get("XIOS send field").suspend(); 591 607 CTimer::get("XIOS").suspend(); 608 CMemChecker::get("XIOS send field").suspend(); 592 609 } 593 610 CATCH_DUMP_STACK … … 613 630 { 614 631 632 CMemChecker::get("XIOS send field").resume(); 615 633 CTimer::get("XIOS").resume(); 616 634 CTimer::get("XIOS send field").resume(); … … 625 643 CTimer::get("XIOS send field").suspend(); 626 644 CTimer::get("XIOS").suspend(); 645 CMemChecker::get("XIOS send field").suspend(); 627 646 } 628 647 CATCH_DUMP_STACK … … 649 668 TRY 650 669 { 670 CMemChecker::get("XIOS send field").resume(); 651 671 CTimer::get("XIOS").resume(); 652 672 CTimer::get("XIOS send field").resume(); … … 661 681 CTimer::get("XIOS send field").suspend(); 662 682 CTimer::get("XIOS").suspend(); 683 CMemChecker::get("XIOS send field").suspend(); 663 684 } 664 685 CATCH_DUMP_STACK … … 683 704 TRY 684 705 { 706 CMemChecker::get("XIOS send field").resume(); 685 707 CTimer::get("XIOS").resume(); 686 708 CTimer::get("XIOS send field").resume(); … … 695 717 CTimer::get("XIOS send field").suspend(); 696 718 CTimer::get("XIOS").suspend(); 719 CMemChecker::get("XIOS send field").suspend(); 697 720 } 698 721 CATCH_DUMP_STACK … … 712 735 TRY 713 736 { 737 CMemChecker::get("XIOS send field").resume(); 714 738 CTimer::get("XIOS").resume(); 715 739 CTimer::get("XIOS send field").resume(); … … 726 750 CTimer::get("XIOS send field").suspend(); 727 751 CTimer::get("XIOS").suspend(); 752 CMemChecker::get("XIOS send field").suspend(); 728 753 } 729 754 CATCH_DUMP_STACK … … 742 767 TRY 743 768 { 769 CMemChecker::get("XIOS send field").resume(); 744 770 CTimer::get("XIOS").resume(); 745 771 CTimer::get("XIOS send field").resume(); … … 756 782 CTimer::get("XIOS send field").suspend(); 757 783 CTimer::get("XIOS").suspend(); 784 CMemChecker::get("XIOS send field").suspend(); 758 785 } 759 786 CATCH_DUMP_STACK … … 774 801 TRY 775 802 { 803 CMemChecker::get("XIOS send field").resume(); 776 804 CTimer::get("XIOS").resume(); 777 805 CTimer::get("XIOS send field").resume(); … … 788 816 CTimer::get("XIOS send field").suspend(); 789 817 CTimer::get("XIOS").suspend(); 818 CMemChecker::get("XIOS send field").suspend(); 790 819 } 791 820 CATCH_DUMP_STACK … … 807 836 TRY 808 837 { 838 CMemChecker::get("XIOS send field").resume(); 809 839 CTimer::get("XIOS").resume(); 810 840 CTimer::get("XIOS send field").resume(); … … 821 851 CTimer::get("XIOS send field").suspend(); 822 852 CTimer::get("XIOS").suspend(); 853 CMemChecker::get("XIOS send field").suspend(); 823 854 } 824 855 CATCH_DUMP_STACK … … 843 874 TRY 844 875 { 876 CMemChecker::get("XIOS send field").resume(); 845 877 CTimer::get("XIOS").resume(); 846 878 CTimer::get("XIOS send field").resume(); … … 857 889 CTimer::get("XIOS send field").suspend(); 858 890 CTimer::get("XIOS").suspend(); 891 CMemChecker::get("XIOS send field").suspend(); 859 892 } 860 893 CATCH_DUMP_STACK … … 878 911 TRY 879 912 { 913 CMemChecker::get("XIOS send field").resume(); 880 914 CTimer::get("XIOS").resume(); 881 915 CTimer::get("XIOS send field").resume(); … … 892 926 CTimer::get("XIOS send field").suspend(); 893 927 CTimer::get("XIOS").suspend(); 928 CMemChecker::get("XIOS send field").suspend(); 894 929 } 895 930 CATCH_DUMP_STACK … … 913 948 TRY 914 949 { 950 CMemChecker::get("XIOS send field").resume(); 915 951 CTimer::get("XIOS").resume(); 916 952 CTimer::get("XIOS send field").resume(); … … 927 963 CTimer::get("XIOS send field").suspend(); 928 964 CTimer::get("XIOS").suspend(); 965 CMemChecker::get("XIOS send field").suspend(); 929 966 } 930 967 CATCH_DUMP_STACK … … 948 985 TRY 949 986 { 987 CMemChecker::get("XIOS send field").resume(); 950 988 CTimer::get("XIOS").resume(); 951 989 CTimer::get("XIOS recv field").resume(); … … 960 998 CTimer::get("XIOS recv field").suspend(); 961 999 CTimer::get("XIOS").suspend(); 1000 CMemChecker::get("XIOS send field").suspend(); 962 1001 } 963 1002 CATCH_DUMP_STACK … … 976 1015 TRY 977 1016 { 1017 CMemChecker::get("XIOS send field").resume(); 978 1018 CTimer::get("XIOS").resume(); 979 1019 CTimer::get("XIOS recv field").resume(); … … 988 1028 CTimer::get("XIOS recv field").suspend(); 989 1029 CTimer::get("XIOS").suspend(); 1030 CMemChecker::get("XIOS send field").suspend(); 990 1031 } 991 1032 CATCH_DUMP_STACK … … 1003 1044 TRY 1004 1045 { 1046 CMemChecker::get("XIOS send field").resume(); 1005 1047 CTimer::get("XIOS").resume(); 1006 1048 CTimer::get("XIOS recv field").resume(); … … 1015 1057 CTimer::get("XIOS recv field").suspend(); 1016 1058 CTimer::get("XIOS").suspend(); 1059 CMemChecker::get("XIOS send field").suspend(); 1017 1060 } 1018 1061 CATCH_DUMP_STACK … … 1031 1074 TRY 1032 1075 { 1076 CMemChecker::get("XIOS send field").resume(); 1033 1077 CTimer::get("XIOS").resume(); 1034 1078 CTimer::get("XIOS recv field").resume(); … … 1043 1087 CTimer::get("XIOS recv field").suspend(); 1044 1088 CTimer::get("XIOS").suspend(); 1089 CMemChecker::get("XIOS send field").suspend(); 1045 1090 } 1046 1091 CATCH_DUMP_STACK … … 1061 1106 TRY 1062 1107 { 1108 CMemChecker::get("XIOS send field").resume(); 1063 1109 CTimer::get("XIOS").resume(); 1064 1110 CTimer::get("XIOS recv field").resume(); … … 1073 1119 CTimer::get("XIOS recv field").suspend(); 1074 1120 CTimer::get("XIOS").suspend(); 1121 CMemChecker::get("XIOS send field").suspend(); 1075 1122 } 1076 1123 CATCH_DUMP_STACK … … 1092 1139 TRY 1093 1140 { 1141 CMemChecker::get("XIOS send field").resume(); 1094 1142 CTimer::get("XIOS").resume(); 1095 1143 CTimer::get("XIOS recv field").resume(); … … 1104 1152 CTimer::get("XIOS recv field").suspend(); 1105 1153 CTimer::get("XIOS").suspend(); 1154 CMemChecker::get("XIOS send field").suspend(); 1106 1155 } 1107 1156 CATCH_DUMP_STACK … … 1123 1172 TRY 1124 1173 { 1174 CMemChecker::get("XIOS send field").resume(); 1125 1175 CTimer::get("XIOS").resume(); 1126 1176 CTimer::get("XIOS recv field").resume(); … … 1135 1185 CTimer::get("XIOS recv field").suspend(); 1136 1186 CTimer::get("XIOS").suspend(); 1187 CMemChecker::get("XIOS send field").suspend(); 1137 1188 } 1138 1189 CATCH_DUMP_STACK … … 1155 1206 TRY 1156 1207 { 1208 CMemChecker::get("XIOS send field").resume(); 1157 1209 CTimer::get("XIOS").resume(); 1158 1210 CTimer::get("XIOS recv field").resume(); … … 1167 1219 CTimer::get("XIOS recv field").suspend(); 1168 1220 CTimer::get("XIOS").suspend(); 1221 CMemChecker::get("XIOS send field").suspend(); 1169 1222 } 1170 1223 CATCH_DUMP_STACK … … 1190 1243 TRY 1191 1244 { 1245 CMemChecker::get("XIOS send field").resume(); 1192 1246 CTimer::get("XIOS").resume(); 1193 1247 CTimer::get("XIOS recv field").resume(); … … 1204 1258 CTimer::get("XIOS recv field").suspend(); 1205 1259 CTimer::get("XIOS").suspend(); 1260 CMemChecker::get("XIOS send field").suspend(); 1206 1261 } 1207 1262 CATCH_DUMP_STACK … … 1221 1276 TRY 1222 1277 { 1278 CMemChecker::get("XIOS send field").resume(); 1223 1279 CTimer::get("XIOS").resume(); 1224 1280 CTimer::get("XIOS recv field").resume(); … … 1235 1291 CTimer::get("XIOS recv field").suspend(); 1236 1292 CTimer::get("XIOS").suspend(); 1293 CMemChecker::get("XIOS send field").suspend(); 1237 1294 } 1238 1295 CATCH_DUMP_STACK … … 1253 1310 TRY 1254 1311 { 1312 CMemChecker::get("XIOS send field").resume(); 1255 1313 CTimer::get("XIOS").resume(); 1256 1314 CTimer::get("XIOS recv field").resume(); … … 1267 1325 CTimer::get("XIOS recv field").suspend(); 1268 1326 CTimer::get("XIOS").suspend(); 1327 CMemChecker::get("XIOS send field").suspend(); 1269 1328 } 1270 1329 CATCH_DUMP_STACK … … 1284 1343 TRY 1285 1344 { 1345 CMemChecker::get("XIOS send field").resume(); 1286 1346 CTimer::get("XIOS").resume(); 1287 1347 CTimer::get("XIOS recv field").resume(); … … 1298 1358 CTimer::get("XIOS recv field").suspend(); 1299 1359 CTimer::get("XIOS").suspend(); 1360 CMemChecker::get("XIOS send field").suspend(); 1300 1361 } 1301 1362 CATCH_DUMP_STACK … … 1316 1377 TRY 1317 1378 { 1379 CMemChecker::get("XIOS send field").resume(); 1318 1380 CTimer::get("XIOS").resume(); 1319 1381 CTimer::get("XIOS recv field").resume(); … … 1330 1392 CTimer::get("XIOS recv field").suspend(); 1331 1393 CTimer::get("XIOS").suspend(); 1394 CMemChecker::get("XIOS send field").suspend(); 1332 1395 } 1333 1396 CATCH_DUMP_STACK … … 1351 1414 TRY 1352 1415 { 1416 CMemChecker::get("XIOS send field").resume(); 1353 1417 CTimer::get("XIOS").resume(); 1354 1418 CTimer::get("XIOS recv field").resume(); … … 1365 1429 CTimer::get("XIOS recv field").suspend(); 1366 1430 CTimer::get("XIOS").suspend(); 1431 CMemChecker::get("XIOS send field").suspend(); 1367 1432 } 1368 1433 CATCH_DUMP_STACK … … 1385 1450 TRY 1386 1451 { 1452 CMemChecker::get("XIOS send field").resume(); 1387 1453 CTimer::get("XIOS").resume(); 1388 1454 CTimer::get("XIOS recv field").resume(); … … 1399 1465 CTimer::get("XIOS recv field").suspend(); 1400 1466 CTimer::get("XIOS").suspend(); 1467 CMemChecker::get("XIOS send field").suspend(); 1401 1468 } 1402 1469 CATCH_DUMP_STACK … … 1421 1488 TRY 1422 1489 { 1490 CMemChecker::get("XIOS send field").resume(); 1423 1491 CTimer::get("XIOS").resume(); 1424 1492 CTimer::get("XIOS recv field").resume(); … … 1435 1503 CTimer::get("XIOS recv field").suspend(); 1436 1504 CTimer::get("XIOS").suspend(); 1505 CMemChecker::get("XIOS send field").suspend(); 1437 1506 } 1438 1507 CATCH_DUMP_STACK -
XIOS3/trunk/src/interface/c/icmem_checker.cpp
r2418 r2426 11 11 void cxios_mem_checker_get(double* mem) 12 12 { 13 *mem=CMemChecker::getMemRSS(); 13 std::vector<double> memories = CMemChecker::getMem(); 14 if (memories.size()>1) 15 { 16 *mem=memories[1]; //rss 17 } 18 else 19 { 20 *mem = 0.; 21 } 14 22 } 15 23 -
XIOS3/trunk/src/io/netCdfInterface.cpp
r1957 r2426 10 10 #include "netCdfInterface.hpp" 11 11 #include "netCdfException.hpp" 12 #include "mem_checker.hpp" 12 13 13 14 namespace xios … … 22 23 int CNetCdfInterface::create(const StdString& fileName, int cMode, int& ncId) 23 24 { 25 CMemChecker::get("NetCDF create").resume(); 24 26 int status = nc_create(fileName.c_str(), cMode, &ncId); 25 27 if (NC_NOERR != status) … … 34 36 throw CNetCdfException(e); 35 37 } 38 CMemChecker::get("NetCDF create").suspend(); 36 39 37 40 return status; … … 49 52 int CNetCdfInterface::createPar(const StdString& fileName, int cMode, MPI_Comm comm, MPI_Info info, int& ncId) 50 53 { 54 CMemChecker::get("NetCDF create").resume(); 51 55 int status = xios::nc_create_par(fileName.c_str(), cMode, comm, info, &ncId); 52 56 if (NC_NOERR != status) … … 61 65 throw CNetCdfException(e); 62 66 } 67 CMemChecker::get("NetCDF create").suspend(); 63 68 64 69 return status; … … 74 79 int CNetCdfInterface::open(const StdString& fileName, int oMode, int& ncId) 75 80 { 81 CMemChecker::get("NetCDF open").resume(); 76 82 int status = nc_open(fileName.c_str(), oMode, &ncId); 77 83 if (NC_NOERR != status) … … 86 92 throw CNetCdfException(e); 87 93 } 94 CMemChecker::get("NetCDF open").suspend(); 88 95 89 96 return status; … … 102 109 int CNetCdfInterface::openPar(const StdString& fileName, int oMode, MPI_Comm comm, MPI_Info info, int& ncId) 103 110 { 111 CMemChecker::get("NetCDF open").resume(); 104 112 int status = xios::nc_open_par(fileName.c_str(), oMode, comm, info, &ncId); 105 113 if (NC_NOERR != status) … … 114 122 throw CNetCdfException(e); 115 123 } 124 CMemChecker::get("NetCDF open").suspend(); 116 125 117 126 return status; … … 125 134 int CNetCdfInterface::close(int ncId) 126 135 { 136 CMemChecker::get("NetCDF close").resume(); 127 137 int status = nc_close(ncId); 128 138 if (NC_NOERR != status) … … 136 146 throw CNetCdfException(e); 137 147 } 148 CMemChecker::get("NetCDF close").suspend(); 138 149 139 150 return status; … … 147 158 int CNetCdfInterface::reDef(int ncId) 148 159 { 160 CMemChecker::get("NetCDF other").resume(); 149 161 int status = nc_redef(ncId); 150 162 if (NC_NOERR != status) … … 158 170 throw CNetCdfException(e); 159 171 } 172 CMemChecker::get("NetCDF other").suspend(); 160 173 161 174 return status; … … 169 182 int CNetCdfInterface::endDef(int ncId) 170 183 { 184 CMemChecker::get("NetCDF other").resume(); 171 185 int status = nc_enddef(ncId); 172 186 if (NC_NOERR != status) … … 181 195 throw CNetCdfException(e); 182 196 } 197 CMemChecker::get("NetCDF other").suspend(); 183 198 184 199 return status; … … 773 788 int CNetCdfInterface::setFill(int ncid, bool fill) 774 789 { 790 CMemChecker::get("NetCDF other").resume(); 775 791 int old_fill_mode; 776 792 int status = nc_set_fill(ncid, fill ? NC_FILL: NC_NOFILL, &old_fill_mode); … … 786 802 throw CNetCdfException(e); 787 803 } 804 CMemChecker::get("NetCDF other").suspend(); 788 805 789 806 return status; … … 801 818 int CNetCdfInterface::defVarFill(int ncid, int varId, int noFill, void* fillValue) 802 819 { 820 CMemChecker::get("NetCDF other").resume(); 803 821 int status = nc_def_var_fill(ncid, varId, noFill, fillValue); 804 822 if (NC_NOERR != status) … … 814 832 throw CNetCdfException(e); 815 833 } 834 CMemChecker::get("NetCDF other").suspend(); 816 835 817 836 return status; … … 829 848 int CNetCdfInterface::varParAccess(int ncid, int varId, int access) 830 849 { 850 CMemChecker::get("NetCDF other").resume(); 831 851 int status = nc_var_par_access(ncid, varId, access); 832 852 if (NC_NOERR != status) … … 841 861 throw CNetCdfException(e); 842 862 } 863 CMemChecker::get("NetCDF other").suspend(); 843 864 844 865 return status; … … 852 873 int CNetCdfInterface::sync(int ncid) 853 874 { 875 CMemChecker::get("NetCDF other").resume(); 854 876 int status = nc_sync(ncid); 855 877 if (NC_NOERR != status) … … 864 886 throw CNetCdfException(e); 865 887 } 888 CMemChecker::get("NetCDF other").suspend(); 866 889 867 890 return status; -
XIOS3/trunk/src/io/netCdfInterface_impl.hpp
r1158 r2426 13 13 #include "netCdfInterface.hpp" 14 14 #include "netCdfException.hpp" 15 #include "mem_checker.hpp" 15 16 16 17 namespace xios … … 28 29 int CNetCdfInterface::getAttType(int ncid, int varId, const StdString& attrName, T* data) 29 30 { 31 CMemChecker::get("NetCDF get/put").resume(); 30 32 int status = ncGetAttType(ncid, varId, attrName.c_str(), data); 31 33 if (NC_NOERR != status) … … 39 41 throw CNetCdfException(sstr.str()); 40 42 } 43 CMemChecker::get("NetCDF get/put").suspend(); 41 44 42 45 return status; … … 57 60 StdSize numVal, const T* data) 58 61 { 62 CMemChecker::get("NetCDF get/put").resume(); 59 63 int status = ncPutAttType(ncid, varId, attrName.c_str(), numVal, data); 60 64 if (NC_NOERR != status) … … 69 73 throw CNetCdfException(sstr.str()); 70 74 } 75 CMemChecker::get("NetCDF get/put").suspend(); 71 76 72 77 return status; … … 85 90 int CNetCdfInterface::getVaraType(int ncid, int varId, const StdSize* start, const StdSize* count, T* data) 86 91 { 92 CMemChecker::get("NetCDF get/put").resume(); 87 93 int status = ncGetVaraType(ncid, varId, start, count, data); 88 94 if (NC_NOERR != status) … … 96 102 throw CNetCdfException(sstr.str()); 97 103 } 104 CMemChecker::get("NetCDF get/put").suspend(); 98 105 99 106 return status; … … 112 119 int CNetCdfInterface::putVaraType(int ncid, int varId, const StdSize* start, const StdSize* count, const T* data) 113 120 { 121 CMemChecker::get("NetCDF get/put").resume(); 114 122 int status = ncPutVaraType(ncid, varId, start, count, data); 115 123 if (NC_NOERR != status) … … 123 131 throw CNetCdfException(sstr.str()); 124 132 } 133 CMemChecker::get("NetCDF get/put").suspend(); 125 134 126 135 return status; -
XIOS3/trunk/src/mem_checker.cpp
r2425 r2426 25 25 int CMemChecker::flush_counter_=1; 26 26 27 CMemChecker::CMemChecker(const std::string& name) : name_(name) 27 CMemChecker::CMemChecker(const std::string& name) : name_(name) 28 28 { 29 29 if (first_) check() ; … … 37 37 first_=false ; 38 38 } 39 double CMemChecker::getMem(void) 40 { 41 if (first_) check() ; 42 if (!enabled_) return 0; 39 40 // Return vector of memories amount : 41 // - vector[0] : virtual memory (vsize) from /proc/self/stat 42 // - vector[1] : resident set size (rss) from /proc/self/stat 43 std::vector<double> CMemChecker::getMem(void) 44 { 45 std::vector<double> memories(0); 46 memories.clear(); 47 48 if (first_) check() ; 49 if (!enabled_) return memories; 43 50 std::ifstream statStream("/proc/self/stat",std::ios_base::in); 44 51 std::string dummy ; … … 46 53 unsigned long vsize; 47 54 statStream>>vsize ; 48 return vsize ; 49 } 50 double CMemChecker::getMemRSS(void) 51 { 52 //sleep( 1 ) ; 53 if (first_) check() ; 54 if (!enabled_) return 0; 55 memories.push_back(vsize); 56 unsigned long rss; 57 statStream>>rss ; 58 memories.push_back(rss*4096); 59 return memories ; 60 } 61 62 // Return vector of memories amount, register values (see _init) as first call as reference : 63 // - vector[0] : virtual memory (vsize) from /proc/self/stat 64 // - vector[1] : resident set size (rss) from /proc/self/stat 65 // - vector[2] : Peak resident set size (VmHWM) from /proc/self/status 66 std::vector<double> CMemChecker::getMemories(void) 67 { 68 std::vector<double> memories; 69 70 if (first_) check() ; 71 if (!enabled_) return memories; 55 72 std::ifstream statStream("/proc/self/stat",std::ios_base::in); 56 73 std::string dummy ; 57 for(int i=1;i<=23;i++) statStream>>dummy ; 58 double vsize; 74 for(int i=1;i<=22;i++) statStream>>dummy ; 75 76 // 1 - Virtual 77 unsigned long vsize; 59 78 statStream>>vsize ; 60 79 if (vsize_init_==0) { … … 63 82 } 64 83 vsize -= vsize_init_; 65 vsize *= 4096; //getconf("PAGE_SIZE");66 return vsize ;67 }68 69 // Return vector of memories amount :70 // - vector[0] : virtual memory (vsize) from /proc/self/stat71 // - vector[1] : resident set size (rss) from /proc/self/stat72 // - vector[2] : Peak resident set size (VmHWM) from /proc/self/status73 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 - Virtual84 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 84 memories.push_back(vsize); 92 85 93 86 // 2 - RSS 94 doublerss;87 unsigned long rss; 95 88 statStream>>rss ; 96 89 if (rss_init_==0) { … … 163 156 if (first_) check() ; 164 157 if (!enabled_) return ; 165 if (!suspended_) cumulatedMem_ += getMem() - lastMem_; 158 if (!suspended_) 159 { 160 vector<double> mem = getMem(); 161 cumulatedMem_.resize( mem.size() ); 162 for (int i=0;i<mem.size() ; i++) 163 { 164 cumulatedMem_[i] += mem[i] - lastMem_[i]; 165 } 166 } 166 167 suspended_ = true; 167 168 } … … 171 172 if (first_) check() ; 172 173 if (!enabled_) return ; 173 if (suspended_) lastMem_ = getMem(); 174 if (suspended_) 175 { 176 vector<double> mem = getMem(); 177 lastMem_.resize( mem.size() ); 178 for (int i=0;i<mem.size() ; i++) 179 { 180 lastMem_[i] = mem[i]; 181 } 182 } 174 183 suspended_ = false; 175 184 } 176 185 177 void CMemChecker:: suspendRSS(void)186 void CMemChecker::reset(void) 178 187 { 179 188 if (first_) check() ; 180 189 if (!enabled_) return ; 181 if (!suspended_) cumulatedMem_ += getMemRSS() - lastMem_;190 cumulatedMem_.clear(); 182 191 suspended_ = true; 183 192 } 184 193 185 void CMemChecker::resumeRSS(void) 186 { 187 if (first_) check() ; 188 if (!enabled_) return ; 189 if (suspended_) lastMem_ = getMemRSS(); 190 suspended_ = false; 191 } 192 193 194 void CMemChecker::reset(void) 195 { 196 if (first_) check() ; 197 if (!enabled_) return ; 198 cumulatedMem_ = 0.; 199 suspended_ = true; 200 } 201 202 double CMemChecker::getCumulatedMem(void) 203 { 204 if (first_) check() ; 205 if (!enabled_) return 0; 194 std::vector<double> CMemChecker::getCumulatedMem(void) 195 { 196 std::vector<double> memories; 197 memories.clear(); 198 if (first_) check() ; 199 if (!enabled_) return memories; 206 200 return cumulatedMem_; 207 201 } … … 231 225 for(std::map<std::string,CMemChecker>::iterator it=allMemChecker_.begin();it!=allMemChecker_.end();++it) 232 226 { 233 strOut<<"MemChecker : "<<it->first<<" --> consumed memory : " ; 234 double mem=it->second.getCumulatedMem() ; 235 if (mem>=Tb) strOut<< mem / Tb<<" Tb"<<std::endl ; 236 else if (mem>=Gb) strOut<< mem / Gb<<" Gb"<<std::endl ; 237 else if (mem>=Mb) strOut<< mem / Mb<<" Mb"<<std::endl ; 238 else if (mem>=Kb) strOut<< mem / Kb<<" Kb"<<std::endl ; 239 else strOut<< mem <<" bytes"<<std::endl ; 227 vector<double> mem=it->second.getCumulatedMem() ; 228 if (mem.size()>0) 229 { 230 strOut<<"MemChecker : "<<it->first<<" --> consumed memory : " ; 231 if ((fabs(mem[0])>=Tb)||(fabs(mem[1])>=Tb)) strOut<< mem[0] / Tb<<" Tb - "<<mem[1] / Tb<<" Tb"<<std::endl ; 232 else if ((fabs(mem[0])>=Gb)||(fabs(mem[1])>=Gb)) strOut<< mem[0] / Gb<<" Gb - "<<mem[1] / Gb<<" Gb"<<std::endl ; 233 else if ((fabs(mem[0])>=Mb)||(fabs(mem[1])>=Mb)) strOut<< mem[0] / Mb<<" Mb - "<<mem[1] / Mb<<" Mb"<<std::endl ; 234 else if ((fabs(mem[0])>=Kb)||(fabs(mem[1])>=Kb)) strOut<< mem[0] / Kb<<" Kb - "<<mem[1] / Kb<<" Kb"<<std::endl ; 235 else strOut<< mem[0] <<" bytes - "<<mem[1] <<" bytes"<<std::endl ; 236 } 240 237 } 241 238 return strOut.str() ; -
XIOS3/trunk/src/mem_checker.hpp
r2425 r2426 15 15 void suspend(void); 16 16 void resume(void); 17 void suspendRSS(void);18 void resumeRSS(void);19 17 void reset(void); 20 double getCumulatedMem(void); 21 static double getMem(void); 22 static double getMemRSS(void); 18 std::vector<double> getCumulatedMem(void); 19 static std::vector<double> getMem(void); 23 20 static std::vector<double> getMemories(void); 24 21 static void logMem( std::string id, bool finalizeLog = false ); … … 30 27 private: 31 28 static void check(void) ; 32 doublecumulatedMem_;33 doublelastMem_;29 std::vector<double> cumulatedMem_; 30 std::vector<double> lastMem_; 34 31 bool suspended_; 35 32 std::string name_; -
XIOS3/trunk/src/node/context.cpp
r2419 r2426 2025 2025 if (prevStep < step) 2026 2026 { 2027 CMemChecker::logMem( "CContext::updateCalendar_"+std::to_string(step) );2028 2027 if (serviceType_==CServicesManager::CLIENT) // For now we only use server level 1 to read data 2029 2028 { … … 2043 2042 garbageCollector.invalidate(calendar->getCurrentDate()); 2044 2043 } 2044 CMemChecker::logMem( "CContext::updateCalendar_"+std::to_string(step) ); 2045 2045 } 2046 2046 else if (prevStep == step)
Note: See TracChangeset
for help on using the changeset viewer.