应用程序相当复杂,而不是在两个VM上运行(在Xen上).两个虚拟机都运行CentOS 6.2,并为每个运行的应用程序提供完全相同的软件包和配置(减去不同的网络). SE
Linux在两者上都被禁用.
在机器A上,应用程序构建完美.在机器B上运行一些测试时我们得到:
ruby[2010] trap invalid opcode ip:7ff9d2944c30 sp:7fff9797e0f8 error:0 in ld-2.12.so[7ff9d2930000+20000]
为了找出机器的不同之处,进一步挖掘机器A:
model name : Six-Core AMD Opteron(tm) Processor 2423 HE
和机器B:
model name : AMD Opteron(TM) Processor 6272
我尝试在grub中使用cpuid_mask_cpu = fam_10_rev_c启动机器B,但它也没有帮助.
因此,任何关于如何处理此问题或如何接近托管服务提供商以便在另一台物理计算机上运行此VM的建议将不胜感激.
显然,在具有AVX支持的Xen计算机上存在libc问题可能会导致此错误.请参阅
this trouble ticket from Chef,另一个ruby应用程序和
a related issue for volk.最后,this ArchLinux thread帮助我进一步理解了这个问题.
瞧,AMD Opteron(TM)处理器6272 supports AVX和2423 HE does not.
所以…你可以被要求移动到另一个处理器,或者你可以用–disable-multi-arch重新编译libc,这将使它忽略AVX.我认为你也可以告诉Xen忽略AVX支持,但我找不到 – 也许比我聪明的人可以告诉你.