Grasping application memory requirements to optimize Dynamic Memory

Grasping application memory requirements to optimize Dynamic Memory

Dynamic Memory is a welcome addition to Microsoft Hyper-V R2 Service Pack 1 (SP1), promising improved virtual memory allocation and increased virtual machine-to-host ratios. But as with any new feature, vendor support policies -- such as application memory requirements -- can limit the benefits.

    Requires Free Membership to View

    When you register, my team of editors will also send you the latest expert resources covering all areas of server virtualization, such as platforms, architectures and strategies, server hardware, managing virtual environments, application issues and more.

    Margie Semilof, Editorial Director

    By submitting your registration information to SearchServerVirtualization.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchServerVirtualization.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

Application vendors supply little guidance on optimizing custom applications for Hyper-V Dynamic Memory. But learning specific application memory requirements and understanding each app’s architecture will help you glean cost savings from Hyper-V Dynamic Memory.

By following these steps and answering a few questions about the application memory requirements you have to meet, you’ll learn how to best use Hyper-V Dynamic Memory in your infrastructure.

Find the true application memory requirements
Many vendors overstate their application memory requirements. They may be hoping to make extra money through hardware bundling, or they may simply want to make extra sure that their applications will be successful in your infrastructure.

But the app’s success is also your organization’s goal, and you have the added requirement of keeping costs down. Conservative resource management is even more relevant in shared-resource virtual infrastructures.

Getting the true application memory requirements will help you keep costs down. You can demo the software or work with a load-testing utility to determine the actual memory requirements, but there will still be some unknowns because it’s not in a production environment. Asking your vendor if you can talk with established customers is another good way to gage application memory requirements.

Set memory thresholds for the application
Once you have gathered the true application memory requirements, you can make corresponding changes to your virtual machine (VM) configurations. To set the memory requirements, follow these steps:

1.      Shutdown the VM.

2.      Right-click on the VM and choose Settings (Hyper-V Manager).

Figure 1
Choose settings. (Click image for an enlarged view.)

3.      Click on Memory.

Figure 2
Select memory. (Click image for an enlarged view.)

4.      Choose the Dynamic radio button and set lower and upper memory limits.

Figure 3
Select dyanmic radio button and set limits. (Click image for an enlarged view.)

5.       Click OK

Know your application’s workload
You also need to understand the architecture of your applications, which will determine how you  configure Hyper-V Dynamic Memory’s most important virtual memory settings: memory buffer and memory weight. Consider these questions for each application:

Does memory utilization stay consistent, with only occasional spikes? 
This pattern of memory utilization is usually associated with batch-processing applications, and it’s the sweet spot for Hyper-V Dynamic Memory. To help meet your application memory requirements, Dynamic Memory can supply the amount that a VM needs regularly, then add more memory if the demand spikes. Similar to CPU, you’re basically betting that all your VMs will not spike their memory requirements at the same time. The total supply of memory probably wouldn’t be able to meet the increased needs of all VMs at once. But you should be aware of how often the demand for more memory spikes. If many VMs require large amounts of memory quickly, they could overrun the memory buffer, and performance could suffer.

The memory buffer is a percentage of RAM above what a VM currently utilizes, kept aside in case the VM needs more. By default, this amount is 20% greater than the amount currently allocated to the VM. For applications that expand quickly, however, you may need to experiment with this buffer to meet application memory needs during spikes in demand. In my experience, I have never had to move this setting above 35%.

Here’s what the memory buffer setting looks like:

Figure 4
Set buffer. (Click image for an enlarged view.)

Does the application request large amounts of memory during peak times?
A remote desktop or XenApp Server, for example, might request very large amounts of memory. Application memory requirements ramp up and remain high as users connect remotely and use applications throughout the day, but then drop dramatically after peak business hours. But watch out for the memory buffer: At the beginning of business hours, memory load could increase quickly, overrunning the added buffer. To create a balance, it’s a good idea to pair these types of workloads with those that have greater application memory requirements during non-peak hours.

Does the application load large amounts of data into memory? 
These types of workloads -- typically databases -- load large amounts of data into memory to enhance their performance. Conserving memory with Hyper-V Dynamic Memory, therefore, may not be as relevant, because memory may expand to close to the maximum value. You may see memory levels drop during non-peak times, but this decrease will probably be minimal. For these types of workloads, you may be better off not using Hyper-V Dynamic Memory and setting memory statically.

Is the application critical, and what happens if there is not enough memory when requested?
The memory weight setting, a new option that came with Hyper-V SP1, can provide a safety net for the most critical applications. It’s similar to the CPU priority setting in that it allows you to tier VMs, so certain ones can request or obtain more memory before others. You can change the memory weight number for each VM, and the higher the number, the more critical the VM.

Figure 5
Memory weight. (Click image for an enlarged view.)

VMs with business-critical applications should have higher memory weight to ensure that the appropriate memory resources are always available.

Complete vendor support for features such as Hyper-V Dynamic Memory may never be fully realized, but if you know the application memory requirements and how the app uses memory, there is no reason why you can’t implement this feature. Be prepared for pushback from some uneducated vendors and assumed risk on your part, but if you want to maximize your virtualization investment, you should consider Hyper-V Dynamic Memory for all your workloads.

This was first published in June 2011

Join the conversationComment

Share
Comments

    Results

    Contribute to the conversation

    All fields are required. Comments will appear at the bottom of the article.

    Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.