24核心服务器性能

我有一个基于皓龙8345芯片的四核六核系统 – 这是24核心,共有48GB的RAM。 这个盒子是为了取代当前的六个英特尔核心盒,我当前的LAMP堆栈运行。 然而,我的performance甚至比六核还差。 我在跑:

  • Centos 5
  • MySQL 5.0
  • PHP 5.2.13
  • Apache 2.2.9

就好像这个盒子太强大了? 有没有人有像这样的大型SMP盒的经验?

[root@gb-sanguine ~]# uname -a Linux gb-sanguine.bountyonline.local 2.6.18-194.3.1.el5 #1 SMP Thu May 13 13:08:30 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux [root@gb-sanguine ~]# php -v PHP 5.2.13 (cli) (built: Jun 2 2010 16:29:01) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies [root@gb-sanguine ~]# httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c [root@gb-sanguine ~]# httpd -v Server version: Apache/2.2.15 (Unix) Server built: Jun 2 2010 11:15:28 [root@gb-sanguine ~]# mysql -V mysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1 

请参阅http://pastebin.com/raw.php?i=KSWxqmJe dmesg输出。

非常感谢您的帮助人员。

cat / proc / cpuinfo

所有的CPU实际上被认可? 我不知道CentOS,但是,一些内核打开SMP,但将内核数限制为默认值8。

顶部显示每个CPU的进程? shift-O,j

你的应用程序不是multithreading的吗?

它承认所有24个核心,所以这个理论被有效地否定了。 我唯一能看到的另外一件简单的事情就是你的CPU可以在800Mhz上运行,而不是在2.6GHz上运行。

你的应用程序做什么? 典型的webapp? 还是有一部分不能被multithreading? MySQLconfiguration使用更多的核心(thread_concurrency)? 当你看机器运行,什么是慢? networking连接时间? CPU吞吐量? 磁盘访问? sysctl.conf设置从另一个盒子迁移过来? 任何调整/修改到MySQL / Apache / PHP的configuration,没有得到移动?

你可以粘贴:cat / proc / mtrr

caching内存问题。 你需要小心这些内核是如何被embedded的,以及如何在他们之间产生任务。 我有一个服务器从一个12核(2插槽)系统中的快速6核到慢8核。 所以,只要拥有大量内核和RAM,并不意味着你应该盲目地利用它们。

我build议使用你的24核心系统来运行一个像KVM这样的虚拟主机。 那么,将工作负载分配到多个较小的虚拟机上可能会更容易一些。 您可以特定的内核固定到特定的虚拟机。 因此,如果您的24核系统是4插槽6核或6插槽4核,则可以对性能进行细化控制。 两者之间的performance会有所不同

干杯。

把一个更新的MySQL – 5.1至less,或更好的, Percona的XtraDB 。 确保你在使用InnoDB。 根据我的经验,MySQL 5.0负面地缩放(即性能下降)。

根据工作负载和内核版本的不同,增加CPU数量可能会很好地降低性能(大型内核锁的信号量实现,重要的POSIX文件locking使用被想到,这是在RHEL / CentOS 5中已经观察到的)。

你有没有检查你是否通过减lessCPU数量获得更好的性能? (比较maxcpus =)

否则,你应该分析你的应用程序/系统来追踪瓶颈。 如果这是CPU绑定,OProfile应该有所帮助。 SystemTap也浮现在脑海。

你有没有看到过去的CPU性能瓶颈? 您现在正在看到吞吐量问题,而不是CPU瓶颈。

有6个sockets,数据需要从RAM到每个CPU,并且取决于caching如何pipe理,你可能会做更多的caching未命中(在这种情况下,通常在芯片上的L1,L2,L3caching,或者至less在多核实例中是死亡的)并且正在执行内存读取而不是L2高速caching读取。

如果问题不是缺乏资源的话,有时候把资源扔在一个问题上是无济于事的。

然而+1踢屁股硬件! 哇! 24核心!

其实,作为一个简单的LAMP堆栈服务器,它有点太强大了。

你可以考虑虚拟化这个盒子,它不仅可以取代它想要replace的东西,还可以replace你的农场里的更多的服务器。