Hi, nice, thanks for the hints! Would you like to contribute via GitHub? - This way your name would appear in the MITK commit history. Otherwise we would create a task at phabricator.mitk.org and place it up for grabs.
Best, Stefan ________________________________________ Von: Jose Manuel Cuadra Troncoso <jmcua...@dia.uned.es> Gesendet: Montag, 15. Mai 2017 20:42 An: mitk-users@lists.sourceforge.net Betreff: [mitk-users] MitkWorkbench memory usage discrepancies Hi, I have observed discrepancies in memory usage reported by MitkWorkbench on different operating systems. You can read memory usage at bottom right corner of MitkWorkbench window. When I just launch MitkWorkbench in Linux, using MITK-2016.03.0 compiled in release mode, an usage of about 1.80 GB is reported. In Windows, using MITK-2016.03.0 compiled in release mode, 150 MB are reported. In Mac, using MITK-2016.03.0 compiled in debug mode, 4.70 GB are reported. Apps for system monitoring report a MitkWorkbench memory usage of about 240 MB in Linux, 150 MB in Windows and 90 MB in Mac. Therefore, I think that memory usage is well reported on Windows but it is incorrectly reported on the other systems. MitkWorkbench memory usage is reported using the function GetProcessMemoryUsage() located at Modules/Core/src/DataManagement/mitkMemoryUtilities.cpp. In Windows it invokes GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) and pmc.WorkingSetSize is used to read current working set size. This is ok, see https://msdn.microsoft.com/es-es/library/windows/ desktop/ms684877(v=vs.85).aspx. In Linux it reads /proc/self/statm file and it gets the first number (named size in GetProcessMemoryUsage) in that file. That number corresponds to total program size. I think the second number (named res in GetProcessMemoryUsage) should be used instead, it is the resident set size and it corresponds to the memory usage shown in monitoring apps. See /proc/[pid]/statm in http://man7.org/linux/man-pages/man5/pro c.5.html. In Mac the virtual_size field of the task_basic_info structure is used. I think the field resident_size should be used instead. See task_info() in http://nadeausoftware.com/articles/2012/07/c_c_tip_how_get_process_ resident_set_size_physical_memory_use#taskinfoforcurrentresidentsetsize . Regards, Jose Manuel -- ,.....................................,................................, : Jose Manuel Cuadra Troncoso : Email: jmcua...@dia.uned.es : : Dpto. de Inteligencia Artificial : Tel: (+34) 91-398-7144 : : Univ. Nac. de Educacion a Distancia : Fax: (+34) 91-398-9382 : : Juan del Rosal, 16 - 3ยช : : : E-28040 Madrid SPAIN : http://www.ia.uned.es/~jmcuadra: '.....................................:................................' ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ mitk-users mailing list mitk-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mitk-users ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ mitk-users mailing list mitk-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mitk-users