我有一个基于 Opteron 8345 芯片的四核六核系统 - 总共 24 个内核,48GB 内存。这个盒子旨在取代我当前的 LAMP 堆栈运行的当前六核 Intel 盒子。然而,我得到的性能甚至比六核还要差。我正在运行:
- 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 输出。
在此先向大家的帮助表示衷心的感谢。
答案1
猫/proc/cpuinfo
所有 CPU 都能被识别吗?我不知道 CentOS 的情况,但是有些内核启用了 SMP,但默认将核心数限制为 8。
top 是否显示每个 CPU 上的进程?shift-O, j
您的应用程序不是多线程的吗?
-- 它确实识别了所有 24 个核心,因此,该理论实际上被否定了。我能看到的唯一另一件简单的事情是,您的 CPU 省电调节器可能以 800mhz 而不是 2.6 ghz 运行 CPU。
您的应用程序是做什么的?典型的 webapp?还是有一部分无法多线程?mysql 是否配置为使用更多核心 (thread_concurrency)?当您观察机器运行时,哪个更慢?网络连接时间?CPU 吞吐量?磁盘访问?sysctl.conf 设置是否从其他机器迁移过来?对 mysql/apache/php 配置的任何调整/修改是否没有被移动?
您可以粘贴:cat /proc/mtrr
答案2
缓存记忆问题。你需要注意这些核心是如何插入的,以及任务是如何在它们之间产生的。我有一个服务器在 12 核(2 插槽)系统中,从快速的 6 核变为缓慢的 8 核。因此,拥有大量内核和 RAM 并不意味着您应该盲目地使用它们。
我建议使用你的 24 核系统来运行虚拟化像 KVM 这样的主机。然后,可能更容易将工作负载划分到多个较小的虚拟机上。您可以别针特定核心分配给特定虚拟机。因此,如果您的 24 核系统是 4 插槽 6 核或 6 插槽 4 核,您可以对性能进行细粒度控制。将有一个不同之处两者之间的表现。
干杯。
答案3
安装较新的 MySQL - 至少 5.1 或更高版本,Percona 的 XtraDB。确保您使用的是 InnoDB。根据我的经验,MySQL 5.0 在超过 8 个核心的情况下会呈现负面扩展(即性能下降)。
答案4
过去您曾遇到过 CPU 性能瓶颈吗?现在您看到的是吞吐量问题,而不是 CPU 瓶颈。
对于 6 个插槽,数据需要从 RAM 传送到每个 CPU,并且根据缓存的管理方式,您可能会发生更多的缓存未命中(在这种情况下为 L1、L2、L3 缓存,通常在芯片上,或者至少在多核实例中在片上),并且执行内存读取而不是 L2 缓存读取。
有时,如果问题不是缺乏资源,那么投入资源也无济于事。
不过,硬件太棒了!哇!24 核!