У меня есть четырехъядерная система на базе чипов Opteron 8345 - всего 24 ядра с 48 ГБ оперативной памяти. Этот блок должен был заменить нынешний шестой блок Intel Core, на котором работает мой текущий стек LAMP. Однако у меня производительность даже хуже, чем от шестиядерного. Я бегу:
Как будто коробка слишком мощная? Кто-нибудь имел опыт работы с такими большими 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
все ли процессоры распознаются? Я не знаю о CentOS, но некоторые ядра включают SMP, но по умолчанию ограничивают количество ядер до 8.
Вверху отображаются процессы на каждом процессоре? shift-O, j
Ваше приложение не является многопоточным?
- Он распознает все 24 ядра, поэтому эта теория фактически опровергается. Единственная другая простая вещь, которую я вижу, - это то, что ваш регулятор мощности процессора МОЖЕТ запускать процессор на частоте 800 МГц, а не 2,6 ГГц.
Что делает ваше приложение? типичное веб-приложение? или есть часть, которая не может быть многопоточной? Настроен ли mysql на использование большего количества ядер (thread_concurrency)? Когда вы смотрите, как работает машина, что медленнее? время подключения к сети? Пропускная способность процессора? доступ к диску? Параметры sysctl.conf перенесены из другого окна? любые настройки / модификации конфигураций mysql / apache / php, которые не были перенесены?
вы можете вставить: cat / proc / mtrr
Кеш объем памяти вопросы. Вы должны быть осторожны с тем, как эти ядра размещаются и как задачи возникают между ними. У меня есть сервер перейти от быстрого 6-ядерного к медленному 8-ядерному в 12-ядерной (2-сокетной) системе. Итак, наличие большого количества ядер и оперативной памяти не означает, что вы должны использовать их все вслепую.
Я бы предложил использовать вашу 24-ядерную систему для запуска виртуализация хост вроде KVM. Тогда может быть проще разделить рабочую нагрузку между несколькими меньшими виртуальными машинами. Ты можешь штырь определенные ядра для определенных виртуальных машин. Таким образом, если ваша 24-ядерная система представляет собой 6-ядерную систему с 4 разъемами или 4-ядерную систему с 6 разъемами, вы можете полностью контролировать производительность. Там будет разница в исполнении между двумя.
Ура.
В зависимости от рабочей нагрузки и версии ядра увеличение числа ЦП может очень сильно снизить производительность (на ум приходит семафорная реализация Big Kernel Lock с интенсивным использованием блокировки файлов POSIX, это то, что наблюдалось в RHEL / CentOS 5).
Вы проверяли, можно ли повысить производительность за счет уменьшения количества процессоров? (maxcpus =)
В противном случае вы должны профилировать свое приложение / систему, чтобы отследить узкое место. Если это связано с процессором, OProfile должен помочь. На ум также приходит SystemTap.
Поставьте на него более новую версию MySQL - не ниже 5.1 или лучше, XtraDB от Percona. Убедитесь, что вы используете InnoDB. По моему опыту, MySQL 5.0 отрицательно масштабируется (т.е. снижается производительность) с более чем 8 ядрами.
Вы видели узкие места в производительности процессора в прошлом? Теперь вы видите проблему с пропускной способностью, а не узкое место ЦП.
С 6 сокетами данные должны поступать из ОЗУ в каждый ЦП, и в зависимости от того, как управляется кеш, вы можете делать намного больше пропусков кеша (в этом контексте кеш L1, L2, L3, который обычно находится на кристалле, или, по крайней мере, на кристалле в многоядерных экземплярах) и выполнять чтение памяти вместо чтения кэша L2.
Иногда использование ресурсов для решения проблемы не помогает, если проблема заключалась не в нехватке ресурсов.
Однако +1 за обалденное железо! Вот Это Да! 24 ядра!
На самом деле, как простой сервер стека LAMP, он слишком мощный.
Вы можете заглянуть в виртуальную коробку, и она заменит не только то, что предназначено для замены, но и, возможно, еще несколько серверов в вашей ферме.