> I have enjoyed the responses to these questions I posed > regarding what is > a transaction. So to continue, I was asked, " what are the > JVMs doing?"
Not the JVMs, what are the *applications* doing? The JVMs respond in a predictable way; it's the applications that make things messy. > But then again it is hard to over utilize a SunFire > 480 with 4+ > GB of Memory. Not really..8-). I've got a couple apps that you could use those spare cycles on if you're not using them for anything else... > So I guess I can't really answer this > question, but what I > can say is our developers need to be more talented when it comes to > developing reliable java code. It seems there are many JVMs in our > environment that will exceed the initial HEAP size of 128 MB, thus at > ~129, the JVM pulls another 128 MB of memory into its little > world. What > impact if any would this behavior have in an environment > where you z/VM w/ > 25 guests each running some number of JVMs and most of these > JVMs start > grabbing memory? Will one guests JVM growth impact another system's > attempt or ability to grab more memory for its JVMs? There is a physical limit, of course -- the sum of physical memory available to the VM system plus all the VM paging areas, plus any Linux paging areas on real DASD. The behavior you describe will cause the individual virtual machine working set (the amount of physical memory actually mapped to virtual pages) to increase, up to the virtual machine size defined in the CP directory. There must be enough physical memory in the zSeries to accomodate the sum of all the virtual machiens sharing the physical resources if you want to avoid paging (not necessarily a bad thing, but you need to plan ahead for it). If the JVMs inside a single instance continue to increase demands for resources, then the Linux system will begin to page. If your Linux paging areas are defined as CP VDISK, then that does have an impact on VM behavior, as pages used for VDISK aren't available for use for virtual machines (although CP does a very good job of shuffling things around, thus my comment about VM paging not necessarily being a bad thing). Linux paging is generally not desirable if it's avoidable, but a certain amount is acceptable. So, "it depends". If all your JVMs expand at the same time in all your virtual machines, CP will have to do a lot of work to cope with that, and if you exhaust all your physical resources, then you could affect the other instances. On the positive side, you can control that expansion by a combination of virtual machine size and use of VDISK size limits, and it "just works", along with having excellent utilization measurements to prove to the apps people that their code sucks. The only way you're going to find out if that is a possibility is to look at application utilization and performance data and see how often your JVMs are expanding now and what the applications are doing to cause that. You can then go back to the programmers and apply the appropriate corrective actions. -- db
