Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have been given an x64 windows 2003 server, on which I have installed M$ Virtual server 2005 R2. I then created an image that is running Server 2008 R2. It was running very slowly so i did a bit of digging through the event logs and ended up finding this article: http://support.microsoft.com/kb/925477.

I have been into the BIOS of the host server and changed the Memory Operating Mode to Optimizer Mode and the Node Interleaving to Enabled. Happily the guest operating system now runs a good lump faster (in my perception, no real concrete testing).

So that's the setup, my question is simple. What did I just do? The more I read into the memory management docs, the less I understand. Could someone please explain what the Memory Operating Mode is and what the different settings really mean.

share|improve this question

2 Answers 2

up vote 2 down vote accepted

Looks like you have a Dell server there! Some Docs:

http://support.dell.com/support/edocs/systems/pem/en/hom/html/syssetup.htm

Optimizer mode: "When set to Optimizer Mode, the two memory controllers run in parallel 64-bit mode for improved memory performance.

Memory Interleaving: "If set to Disabled (default), NUMA is employed. If Enabled, memory interleaving is implemented.

What you did with these settings was two things:

  1. Configure the Memory controller for increased parallelism.
  2. Configure memory to not use NUMA (processor-specific memory banks) and instead use all memory as if it were local.

That may be Aramaic to you, so some background on what that means. New servers are configured with per-processor memory banks which allow something called NUMA (non-uniform memory architecture (link)). This allows individual processors to have different amounts of local memory, and enables the Operating System (if it supports NUMA) to structure running processes to take advantage of memory local to each processor.

Quick example, take a dual quad-core server. Each quad-core processor has 8GB of RAM associated with it, for a total of 16GB in the system. In a NUMA system, the operating system knows that processes running on one quad-core processor has local memory (faster fetches), and that moving processes between individual cores on the one processor will not impact memory access speeds. It also knows that if a process has to access memory on the other processor's local memory bank it will cost a certain amount of time.

What you've done with your BIOS setting was to, in essence, turn off NUMA. Interleaving memory means that memory processor affinity is not preserved, so all memory accesses will be expensive. This is compensated by turning on Optimizer Mode, which means that memory accesses can be handled in parallel so that interleaved memory will be serviced much faster that serial accesses would allow.

I hope this helps.

share|improve this answer
    
Ah, so if I understand what you're saying, I should (re)enable NUMA and leave the Memory Operating Mode in Optimizer Mode. The fly in the ointment is that when I enable NUMA, Virtual Server 2005 starts complaining that some nodes on the machine do not have local memory. It seems backwards at this point. –  Rob White Aug 17 '10 at 16:04
    
Local memory IS a NUMA concept, so the complaint is valid. For maximum performance you want to ensure that your VM memory sizes can all fit into a processor's memory bank. Some may have to span processor memory banks and generate the message, though. Leaving it as you changed things is a perfectly valid compromise. Hyper-V may behave better, but I'm not certain. –  sysadmin1138 Aug 17 '10 at 16:14

I think above post confused "Memory Interleaving" with "Node Interleaving"...

Node Interleaving

Node Interleaving disables the NUMA architecture properties of the system. All operating systems supported by this platform support NUMA architectures. In most cases, you can obtain optimum performance by disabling Node Interleaving. When this option is enabled, memory addresses are interleaved across the memory installed for each processor and some workloads may experience improved performance.

share|improve this answer
1  
You're quoting from HP documentation, and the original question asked about Dell. I'm not too surprised that they used different terminology. –  Michael Hampton Jun 4 '13 at 15:49

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.