X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMDS%2FSMDS_MemoryLimit.cxx;h=99bb9b0f95ee4b07eff784ca9a3a969b71f16e90;hb=9ea74d43718652425f0e9fd0d0b366469c3d8d08;hp=e31a9a4987602922b7811877a1a3111d7cce0841;hpb=79b1ac2b6df9117f16f11d444b1f165d477a1813;p=modules%2Fsmesh.git diff --git a/src/SMDS/SMDS_MemoryLimit.cxx b/src/SMDS/SMDS_MemoryLimit.cxx index e31a9a498..99bb9b0f9 100644 --- a/src/SMDS/SMDS_MemoryLimit.cxx +++ b/src/SMDS/SMDS_MemoryLimit.cxx @@ -5,7 +5,7 @@ // Executable to find out a lower RAM limit (MB), i.e. at what size of freeRAM // reported by sysinfo, no more memory can be allocated. // This is not done inside a function of SALOME because allocated memory is not returned -// to the system +// to the system. (PAL16631) #ifndef WIN32 #include @@ -15,7 +15,9 @@ #include #endif -int main (int argc, char ** argv) { +int main (int argc, char ** argv) +{ + // To better understand what is going on here, consult bug [SALOME platform 0019911] #ifndef WIN32 struct sysinfo si; int err = sysinfo( &si ); @@ -23,8 +25,11 @@ int main (int argc, char ** argv) { return -1; unsigned long freeRamKb = ( si.freeram * si.mem_unit ) / 1024; - const unsigned long stepKb = 8; // less nb leads to hung up on Mandriva2006 without swap - // (other platforms not tested w/o swap) + // totat RAM size in Gb, float is in order not to have 1 instead of 1.9 + float totalramGb = float( si.totalram * si.mem_unit ) / 1024 / 1024 / 1024; + + // nb Kbites to allocate at one step. Small nb leads to hung up + const int stepKb = int( 5 * totalramGb ); unsigned long nbSteps = freeRamKb / stepKb * 2; try {