[Archive] Task Size limit in Win 32

Message by David Parrott:
This is more of a JVM-related question but of interest to some SPIS users I hope … is there any way to run a simulation greater than 1.6GB in size within the 32-bit Windows environment?
Win 32 imposes a per-task limit of 2GB, regardless of physical RAM. The Sun JVM does not seem able to utilise all of this. Set a JVM stack size larger than 1638MB, and the SPIS-UI doesn’t display properly.
I understand that switching to Linux or Win 64 will remove this barrier, but would prefer to do this only if there is no other option.

Message by wang ji:
some informations I had searched months ago:

\http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx

2 JRockit 5.0 R26 (SP3) "/3GB" in Windows 2003/XP (32bit) 1.85 GB - JRockit 5.0 R25.2 (SP2) 2.85 GB - JRockit 5.0 R26 (SP3) 32-bit JVM in Windows 2003/XP x64 (64bit) 2.05 GB - JRockit 5.0 R25.2 (SP2) 3.85 GB - JRockit 5.0 R26 (SP3) Physical RAM Virtual Address Space windows NT 4.0 WorkStation 4GB 2GB windows NT 4.0 Server 4GB 2GB windows NT 4.0 Enterprise Edition 4GB 3GB\*\* windows 2000 Professional 4GB 2GB windows 2000 Server 4GB 2GB windows 2000 Advanced Server 8GB\* 3GB\*\* windows 2000 DataCenter Edition 32GB\* 3GB\*\* windows XP Professional 4GB 3GB\*\* windows 2003 4GB 3GB\*\* windows 2003 Enterprise Edition 32GB\* 3GB\*\*
  • "/3GB" is needed in BOOT.INI,
invalid link : boot loader(Illegal character in path at index 4: boot loader)timeout=30default=multi(0)disk(0)rdisk(0)partition(2)\WINNTinvalid link : operating systems(Illegal character in path at index 9: operating systems)multi(0)disk(0)rdisk(0)partition(2)\WINNT="????"/3GB
    • "/PAE" is needed in BOOT.INI ,
invalid link : boot loader(Illegal character in path at index 4: boot loader)timeout=30default=multi(0)disk(0)rdisk(0)partition(2)\WINNTinvalid link : operating systems(Illegal character in path at index 9: operating systems)multi(0)disk(0)rdisk(0)partition(2)\WINNT="????"! color=red ! /PAE! color !

Memory Support and Windows Operating Systems
Updated: February 9, 2005
Operating systems based on Microsoft Windows NT technologies have always provided applications with a flat 32-bit
virtual address space that describes 4 gigabytes (GB) of virtual memory. The address space is usually split so that 2
GB of address space is directly accessible to the application and the other 2 GB is only accessible to the Windows
executive software.
The 32-bit versions of the Windows 2000 Advanced Server and Windows NT Server 4.0, Enterprise Edition, operating
systems were the first versions of Windows to provide applications with a 3-GB flat virtual address space, with the
kernel and executive components using only 1 GB. In response to customer requests, Microsoft has expanded the
availability of this support to the 32-bit version of Windows XP Professional and all 32-bit versions of Windows Server
2003.
Windows 2000 Memory Support. With Windows 2000 Professional and Server, the maximum amount of memory that can be
supported is 4 GB (identical to Windows NT 4.0, as described later in this section). However, Windows 2000 Advanced
Server supports 8 GB of physical RAM and Windows 2000 Datacenter Server supports 32 GB of physical RAM using the PAE
feature of the IA-32 processor family, beginning with Intel Pentium Pro and later.
Windows XP Professional and Windows Server 2003 Memory Support. The maximum amount of memory that can be supported on
Windows XP Professional and Windows Server 2003 is also 4 GB. However, Windows Server 2003, Enterprise Edition supports
32 GB of physical RAM and Windows Server 2003, Datacenter Edition supports 64 GB of physical RAM using the PAE feature.
The virtual address space of processes and applications is still limited to 2 GB unless the /3GB switch is used in the
Boot.ini file. When the physical RAM in the system exceeds 16 GB and the /3GB switch is used, the operating system will
ignore the additional RAM until the /3GB switch is removed. This is because of the increased size of the kernel
required to support more Page Table Entries. The assumption is made that the administrator would rather not lose the
/3GB functionality silently and automatically
therefore, this requires the administrator to explicitly change this
setting.
The /3GB switch allocates 3 GB of virtual address space to an application that uses IMAGE_FILE_LARGE_ADDRESS_AWARE in
the process header. This switch allows applications to address 1 GB of additional virtual address space above 2 GB.
The virtual address space of processes and applications is still limited to 2 GB, unless the /3GB switch is used in the
Boot.ini file. The following example shows how to add the /3GB parameter in the Boot.ini file to enable application
memory tuning:
invalid link : boot loader(Illegal character in path at index 4: boot loader)
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
invalid link : operating systems(Illegal character in path at index 9: operating systems)
multi(0)disk(0)rdisk(0)partition(2)\WINNT="???" /3GB
Note: “???” in the previous example can be the programmatic name of any of the following operating system versions:
Windows XP Professional
Windows Server 2003
Windows Server 2003, Enterprise Edition
Windows Server 2003, Datacenter Edition
Windows 2000 Advanced Server
Windows 2000 Datacenter Server
Windows NT Server 4.0, Enterprise Edition
Windows NT 4.0 Memory Support. With Microsoft Windows NT 4.0 Workstation and Server operating systems, the maximum
amount of physical memory supported is 4 GB. The maximum amount of virtual memory is 2 GB.
With Windows NT 4.0 Server, Enterprise Edition, the /3GB switch was first added to Boot.ini.
Application Memory Tuning. This capability allows memory-intensive applications to utilize up to 50 percent more
virtual memory on Intel-based computers. Application memory tuning provides more of the computer’s virtual memory to
applications by providing less virtual memory to the operating system.
Application Changes. No APIs are required to support application memory tuning. However, it would be ineffective to
automatically provide every application with a 3-GB address space.
Executables that can use the 3-GB address space are required to have the bit IMAGE_FILE_LARGE_ADDRESS_AWARE set in
their image header. If you are the developer of the executable, you can specify a linker flag (/LARGEADDRESSAWARE).
To set this bit, you must use Microsoft Visual Studio Version 6.0 or later and the Editbin.exe utility, which has the
ability to modify the image header (/LARGEADDRESSAWARE) flag. For more information on setting this flag, see the
Microsoft Visual Studio documentation.
Some manufacturers preconfigure their applications to use application memory tuning, making it unnecessary for you to
make this change. For more information, see your application documentation and contact your application vendor to
determine whether they support Large Address Awareness or whether you can enable it in their application.
Physical Address Extension. PAE is an Intel-provided memory address extension that enables support of up to 64 GB of
physical memory for applications running on most 32-bit (IA-32) Intel Pentium Pro and later platforms. Support for PAE
is provided under Windows 2000 and 32-bit versions of Windows XP and Windows Server 2003. 64-bit versions of Windows do
not support PAE.
PAE allows the most recent IA-32 processors to expand the number of bits that can be used to address physical memory
from 32 bits to 36 bits through support in the host operating system for applications using the Address Windowing
Extensions (AWE) application programming interface (API). More information about the AWE API can be found at the MSDN
Library.

Message by Swadesh SWADESH PATRA:
I am using suse 10.2,linux with 2GB RAM.Earlier I had 1 GB RAM hence I had set the swap space to 1.4GB, after upgrading I haven’t changed the swap space.But my SPIS crashes frequently complaining about swap space.The exact error displayed is “out of swap space”.Can anyone suggest a work around.I am still in the early stages and haven’t used any complicated geometry yet.

Message by Jean-Francois Roussel:
I know no other option and I am currently working under Windows XP with an -Xmx1400m option, since problems sometimes appear already with -Xmx1500m on my machine (window refreshing).
Julien, is there any hope?
Would Vista improve things?
JFR

Message by David Parrott:
The usable JVM stack size seems to scale with available RAM until a limit is reached, so that for example on my 1.5GB machine I can’t exceed 1122MB (73%), whereas on an otherwise-similar 3.25GB machine the limit becomes 1638MB (49%).
My model currently operates within this limit, but it is for an “inert” spacecraft and I’d like to add a number of plasma sources (ideally up to 15!). I think this will require an increase to the mesh density near those sources for good results, which will break the limit.
I’ve heard that the development version 3.7 of SPIS is capable of handling a particular mesh with lower RAM requirements than version 3.6. Can you tell me more?
Thanks,
David

Message by Swadesh SWADESH PATRA:
Where can we set the jvm size?Is it necessary to resize it before starting a simulation.I am using linux and I have also upgraded my jave version.But still haven’t been able to work around the out of memory error.Has anyone faced similar problems before whiole using spis.The error reported is:
Exception in thread “CompilerThread0” java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?
Any ideas!!

Message by julien:
Sorry to answer so late.
Your problem of memory limit has two different reasons:

  • On windows, all execution threads are limited to 1.5Gb in RAM. There is no solution excepted if you use a server version of Windows. So for this reason, I recommand strongly to run SPIS on Linux or Mac OS-X, where there is no such limitation (at least up to 4Gb of RAM, after what the kernel should be compiled with the Big Mem option). Another good reason is that Windwos does not support very well the multithreading of Java as implemented in SPIS. Actually, SPIS is much more "fluid" on Linux, which better supports the multi-tasking.
  • Up to JAVA 1.5 most of the standard JVM, the memrory stack was limited to 1.9Gb. This is not any longer the case with the 1.6 version of the JVM. Tests with an updated version of SPIS have been successfully done up to 4Gb on Suse 10. 64bits with the JVM SUN 1.6. To increase the memorey stack, you should edit the relevant Jython scritp in the SPIS\_ROOT/ThirdPart/Jython/jython-2.1 dirctory and put the -Xmx flag as follow: -Xmx3900m
A new version of SPIS (3.7 RC09) is available as realese candidate is available at this address, with a complet migration to JAVA 1.6 and VTK 5.0. Regards, Julien For the Artenum team.

Message by Enrico Sain:
Hello,
I’m using SPIS 3.7 RC_09 and I’ve just switched from Windows to Linux (Ubuntu 8.10 distribution) since I have 4 GB of RAM (actually only 3 GB are recognized by the 32 bit system) and I would like to increase the memory stack as suggested by Julien in this thread.In my case, which script/scripts shall I exactly modify in order to change this memory limit?
Thank you in advance, Enrico

Message by Benoit Thiebault:
Hi Enrico,
First, you have to go in the runSpisLinux.sh script and see which version of jython is called. There are two lines like that :

export JYTHON\_HOME=$SPIS\_HOME/ThirdPart/Jython/jython-2.1
JYTHON\_CMD=$JYTHON\_HOME/jython\_JVM\_1\_6
Then, go to the $JYTHON\_HOME/jython\_JVM\_1\_6 file. There is a line saying :
"java" -Xmx2010m -Dpython.home="${JYTHON\_HOME}" -classpath "${JYTHON\_HOME}/jython.jar:$CLASSPATH" "org.python.util.jython" "$@"
Change the -Xmx value (expressed in Mo) to the value you want to set. Kind regards Benoît

Message by Enrico Sain:
Hi Benoît ,
thank you very much for your fast reply, I followed your instructions and everything worked fine!Now I’ve decided to install a 64 bit version of Linux (always an Ubuntu 8.10 distribution), in order to take advantage of all the 4 Gb of RAM I have on my laptop.
If I now try to execute the script runSpisLinux.sh it doesn’t work anymore!
What shall I do in order to let SPIS 3.7 RC_09 work under a Linux 64 bit OS?
Best Regards,
Enrico

Message by Benoit Thiebault:
Hi Enrico,
What is the error message you get ?
Regards,
Benoît

Message by Enrico Sain:
Hi Benoît,
this is the error I get when I try to execute the script runSpisLinux.sh in the shell:
/home/enrico/SPIS/Spis3_7RC09/SpisUI/./…/ThirdPart/Cassandra-2.2/thirdpart/vtk5/
/home/enrico/SPIS/Spis3_7RC09/SpisUI/./…/ThirdPart/Cassandra-2.2/
[: 13: ==: unexpected operator
/home/enrico/SPIS/Spis3_7RC09/SpisUI/./…/ThirdPart/Jython/jython-2.1/jython_JVM_1_6: 15: /home/enrico
/SPIS/Spis3_7RC09/SpisUI/./…/ThirdPart/Jython/jython-2.1/…/…/JVM/Linux-I386/jre/bin/java: not found

Regards,
Enrico

Message by Enrico Sain:
Hi again,
luckily, the situation is improving!
I simply changed inside the jython_JVM_1_6 file (/ThirdPart/Jython/jython-2.1 folder) the original line
“${JYTHON_HOME}/…/…/JVM/Linux-I386/jre/bin/java” -showversion -Xmx3500m -Dpython.home="${JYTHON_HOME}" -classpath “${JYTHON_HOME}/jython.jar:$CLASSPATH” “org.python.util.jython” “$@”
with this one
“java” -Xmx3500m -Dpython.home="${JYTHON_HOME}" -classpath “${JYTHON_HOME}/jython.jar:$CLASSPATH” “org.python.util.jython” “$@”
Now the SPIS GUI opens but I still get the following error messages in the terminal:
/home/enrico/SPIS/Spis3_7RC09/SpisUI/…/ThirdPart/Cassandra-2.2/thirdpart/vtk5/
/home/enrico/SPIS/Spis3_7RC09/SpisUI/…/ThirdPart/Cassandra-2.2/
[: 13: ==: unexpected operator
system= posix
OS name= Linux
user= enrico
tmp files directory= /tmp/enricospistmp1240231944/
Please wait…
Tasks loading…Error in JavaLib: Impossible to load vtkCommonJava
Error in JavaLib: Impossible to load vtkRenderingJava
Error in JavaLib: Impossible to load vtkRenderingJava
Error in JavaLib: Impossible to load vtkIOJava
Error in JavaLib: Impossible to load vtkFilteringJava
Error in JavaLib: Impossible to load vtkGraphicsJava
Error in JavaLib: Impossible to load vtkHybridJava
Error in JavaLib: Impossible to load vtkParallelJava
Error in JavaLib: Impossible to load vtkWidgetsJava

Building of the dependence tree…
Building of the tasks manager…
Building of the graphical user interface…
…/SpisUI/AuxLibs/Lib/GUI/resource/SpisMenu.xml
…/SpisUI/AuxLibs/Lib/GUI/resource/SpisToolBar.xml
I read in a previous post that this issue may be related to the fact that “JVM cannot load the native layer of VTK”. How can I go on?
Thanks for your patience!
Enrico