What is this?

This is basically where I write down stuff that I work with at my job as a GIS Technical Analyst (previously system administrator). I do it because it's practical for documentation purposes (although, I remove stuff that might be a security breach) and I hope it can be of use to someone out there. I frequently search the net for help myself, and this is my way of contributing.

Tuesday, December 8, 2009

XenServer on HP bl460c servers - nx and sep CPU flags

We just installed two XenServers to check out they hype. People are praising XenServer left and right, so we figured what the heck.

We installed on two HP BL460c G1 blade servers. Installation was a breeze, but when we tried to create a pool with XenCenter and add the two servers we got the following message:

08.12.2009 12:57:22 Error: Adding server 'dnxen2.mydomain.intern' to pool 'DN XenPool' - The hosts in this pool are not homogeneous. cpus differ

A quick look reveals the following difference between the cpus :

[root@dnxen1 ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5440 @ 2.83GHz
stepping : 6
cpu MHz : 2833.454
cache size : 6144 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu de tsc msr pae cx8 apic sep mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht nx constant_tsc up pni vmx est
bogomips : 5668.59


[root@dnxen2 ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5440 @ 2.83GHz
stepping : 6
cpu MHz : 2833.456
cache size : 6144 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu de tsc msr pae cx8 apic mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht constant_tsc up pni vmx est
bogomips : 5668.07

The flags "sep" and "nx" are enabled on dnxen1, but not on dnxen2. According to cpufeature.h "nx" is is "Execute Disable" and is a AMD-defined CPU feature (Strane since the CPU is Intel) and "sep" is something called "Sysenter/sysexit". Doesnt tell me much - but this page has a better description of NX: http://blog.incase.de/index.php/cpu-feature-flags-and-their-meanings/

"NX No eXecute, a flag that can be set on memory pages to disable execution of code in these pages"

And it seems like "sysenter/sysexit" are cpu instructions.

So let's have a look at the BIOS:

Advanced Options > Processor options > No-Execute memory protection (Changed from disabled to enabled on dnxen2).

The "Sysenter/sysexit" setting is nowhere to be found in the bios. In fact - there were no other differences between the two servers at all.

However after rebooting both servers list the same flags, so apparently enabling "nx" will enable the "sep"-flag as well. Well, XenServer is happy and and dnxen2 is was able to join the pool.

Off to do more testing.

2 comments:

  1. Thanks. Helpful tip for me.

    ReplyDelete
  2. Still a good tip.
    Thanks

    ReplyDelete