A note from Steve Dertien at PTC:
solved the memory issue with
zones. The issue is impacted by the kernel version on the server and
zone type that they have created.
we’ve discovered is that older kernel versions do not
adequately support the larger heap sizes in a whole zone
The kernel version can be output using uname –a as follows.
sun4v sparc SUNW,T5240
that particular version you can allocate a JVM with a 2Gb
heap in the global zone and in a sparse zone. In a whole zone you will
not be able to allocate the full 2Gb to the JVM. The output of a JVM
failure will look like the following in this case:
./java -Xmx2048m -version
during initialization of VM
reserve enough space for object heap
create the Java virtual machine.
issue is resolved when you upgrade the kernel to a newer
version. The Sun servers at PTC are using a newer version of the kernel
therefore we’re not experiencing this issue. For Windchill support
on Solaris zones (whole or sparse) we should indicate that the customer
on this kernel version or newer (assuming this does not regress).
edc-sunt5120 5.10 Generic_137137-09
sun4v sparc SUNW,SPARC-Enterprise-T5120
don’t know if there are newer kernel versions but we
should probably put a customer document together that states when running Windchill
Solaris zone of any kind that the kernel must be patched to this level
higher and how to test for this condition. [Jeff adds: See http://blogs.sun.com/patch/entry/solaris_10_kernel_patchid_progression] Also, this issue does not
exist with the 64bit JVM when the –d64 option is supplied to the
is the definition of a whole zone versus a sparse zone
(lifted from here: http://opensolaris.org/os/community/zones/faq/)
Q: What is a global zone? Sparse-root zone?
zone? Local zone?
A: After installing Solaris 10 on a system, but before creating any
processes run in the global zone. After you create a zone, it has
that are associated with that zone and no other zone. Any process
created by a
process in a non-global zone is also associated with that non-global
zone which is not the global zone is called a non-global zone. Some
non-global zones simply "zones." Others call them "local
zones" but this is discouraged.
default zone filesystem model is called "sparse-root." This model
emphasizes efficiency at the cost of some configuration flexibility.
Sparse-root zones optimize physical memory and disk space usage by
directories, like /usr and /lib. Sparse-root zones have their own
areas for directories like /etc and /var. Whole-root zones increase
configuration flexibility but increase resource usage. They do not use
filesystems for /usr, /lib, and a few others.
There is no supported way to convert an existing sparse-root zone to a
whole-root zone. Creating a new zone is required.
also indicates that the penalty for a Whole-zone is
mitigated if the file system that the zone is installed on is a ZFS
the global image. This means that the system will only require
file system space for data that uses different blocks. Essentially two
copies of the same thing occupy only one block of space instead of the
traditional two. For those that are concerned about the consumed disk
space for whole zones, that can be mitigated using the ZFS file system.
for creating a sparse zone are outlined rather well
for creating a whole zone are outlined rather well
major difference is in the second step. A sparse zone
uses the “create” command while a whole zone uses “create -b”.
Jeff Taylor also sent a link to a nice tool called Zonestat (http://opensolaris.org/os/project/zonestat/).
The output of the tool does a great job at showing you the distribution
resources across the zones. The command below assumes that you placed
zonestat.pl script into /usr/bin as it does not exist by default.
# perl /usr/bin/zonestat.pl
Zonename| IT|Size|Used| RAM| Shm| Lkd| VM|
global 0D 64 0.0 318M 0.0 0.0 225M
edc-sne 0D 64 0.0 273M 0.0 0.0 204M
edc-sne2 0D 64 0.0 258M 0.0 0.0 190M
==TOTAL= === 64 0.0 1.1G 0.0 0.0 620M
last detail. To get the configuration of a zone we
should ask customers for the output of their zone configuration by
using the zonecfg
utility from the root zone. The commands that will work the best is
either “zonecfg -z <zone_name> info” or “zonecfg -z
export”. We need to carefully evaluate any capped-memory settings
or other settings defined in the zone to determine if those are also
any potential issues for Windchill. The output of that command will
indicate whether the zone is a sparse or whole zone as the inherit
likely not there in a whole zone.
# zonecfg -z edc-sne info
# zonecfg -z edc-sne2 info
export command will allow use to create the zones internally
for our own testing purposes and they should contain the create command
was leveraged, but it’s misleading. If you use the standard “create”
command it will automatically create the required inherited
But the export command will use “create –b” and you will see several
of the following instead:
currently do not have an opinion as to whether we want to
advocate a Whole vs. Sparse zone. It seems a Whole zone creates more
independence from the global zone. This may be necessary if you want
have more absolute control over the configuration.