m.vroonhoven at erasmusmc.nl
2006-May-15 13:09 UTC
[Rd] Memory allocation fails in R 2.2.1 and R 2.3.0 on SGI Irix, while plenty of memory available (PR#8861)
Dear R developers, We have a big SGI Origin computation server with 32 cpu's and 64 Gb of RAM. In R 2.0.0 we could run large jobs, allocating 8 Gb of RAM was not a problem, for example by running: > v1 <- seq(1,2^29) > v2 <- seq(1,2^29) > v3 <- seq(1,2^29) > v4 <- seq(1,2^29) This yields an R process, consuming about 8 Gb of RAM: PID PGRP USERNAME PRI SIZE RES STATE TIME WCPU% CPU% COMMAND 177484 177484 mirjam 20 8225M 8217M sleep 1:18 29.3 0.00 R After upgrading from R 2.0.0 to R 2.2.1, we cannot allocate more than about 1300 M of memory, as shown below: > v1 <- seq(1,2^29) Error: cannot allocate vector of size 2097152 Kb > v1 <- seq(1,2^28) > v2 <- seq(1,2^27) Error: cannot allocate vector of size 524288 Kb > v2 <- seq(1,2^25) > v3 <- seq(1,2^24) > v4 <- seq(1,2^23) > v5 <- seq(1,2^22) Error: cannot allocate vector of size 16384 Kb > v5 <- seq(1,2^21) > v6 <- seq(1,2^20) > v7 <- seq(1,2^19) > v8 <- seq(1,2^18) > q() Save workspace image? [y/n/c]: n Upgrading to R 2.3.0 yields the same results. This yields an R executable taking 1284M of RAM, refusing to allocate more RAM, with about 30Gb free on the machine. Is there any special configuration option I should turn on to make it possible to use more memory? The OS memory limits (ulimit -a) are set appropriately: data seg size (kbytes, -d) unlimited max memory size (kbytes, -m) 63385824 stack size (kbytes, -s) 65536 virtual memory (kbytes, -v) unlimited If it is not some special (compile time) option that I should have set, I think this is a bug..... With kind regards, Mirjam van Vroonhoven -- Dr. Mirjam van Vroonhoven system administrator/programmer, dept. of Bioinformatics Erasmus Medical Center, Rotterdam, The Netherlands Room Number Ee 15.32, phone +31-10-463 81 11 Web: http://www.erasmusmc.nl/bioinformatics/ E-mail: m.vroonhoven at erasmusmc.nl
Thomas Lumley
2006-May-15 14:48 UTC
[Rd] Memory allocation fails in R 2.2.1 and R 2.3.0 on SGI Irix, while plenty of memory available (PR#8861)
On Mon, 15 May 2006, m.vroonhoven at erasmusmc.nl wrote:> Dear R developers, > > We have a big SGI Origin computation server with 32 cpu's and 64 Gb of > RAM. In R 2.0.0 we could run large jobs, allocating 8 Gb of RAM was not > a problem, for example by running: > > v1 <- seq(1,2^29) > > v2 <- seq(1,2^29) > > v3 <- seq(1,2^29) > > v4 <- seq(1,2^29) > This yields an R process, consuming about 8 Gb of RAM: > PID PGRP USERNAME PRI SIZE RES STATE TIME WCPU% CPU% COMMAND > 177484 177484 mirjam 20 8225M 8217M sleep 1:18 29.3 0.00 R > > After upgrading from R 2.0.0 to R 2.2.1, we cannot allocate more than > about 1300 M of memory, as shown below: > > v1 <- seq(1,2^29) > Error: cannot allocate vector of size 2097152 Kb > > v1 <- seq(1,2^28) > > v2 <- seq(1,2^27) > Error: cannot allocate vector of size 524288 Kb > > v2 <- seq(1,2^25) > > v3 <- seq(1,2^24) > > v4 <- seq(1,2^23) > > v5 <- seq(1,2^22) > Error: cannot allocate vector of size 16384 Kb > > v5 <- seq(1,2^21) > > v6 <- seq(1,2^20) > > v7 <- seq(1,2^19) > > v8 <- seq(1,2^18) > > q() > Save workspace image? [y/n/c]: n > Upgrading to R 2.3.0 yields the same results. > This yields an R executable taking 1284M of RAM, refusing to allocate > more RAM, with about 30Gb free on the machine.You can tell if you have a 64bit build of R by looking at .Machine$sizeof.pointer in R, which should be 8. If not, then you need to set whatever C and Fortran compilation flags give a 64bit system. It doesn't look to me as if R's configure script has any special handling for C compiler flags on SGI. If you have a 64bit build then something strange is happening. The message you quote happens only when malloc() returns NULL, so it is hard to see how R could be causing it, though. -thomas Thomas Lumley Assoc. Professor, Biostatistics tlumley at u.washington.edu University of Washington, Seattle