Я использую два сервера Dell R410 в одной стойке центра обработки данных (за балансировщиком нагрузки). Оба имеют одинаковую аппаратную конфигурацию, запускают Ubuntu 10.4, имеют одинаковые установленные пакеты и запускают одинаковые веб-серверы Java (без другой нагрузки), и я вижу существенную разницу в производительности между ними.
Разница в производительности наиболее очевидна в среднем времени отклика обоих серверов (измеряется в самом приложении Java без сетевых задержек): один из них работает на 20-30% быстрее, чем другой, очень стабильно.
Раньше я dstat
выяснял, есть ли еще контекстные переключатели, IO, подкачка или что-то еще, но я не вижу причин для разницы. При той же рабочей нагрузке (без подкачки, практически без ввода-вывода) загрузка и загрузка процессора выше на одном сервере.
Таким образом, разница, по-видимому, в основном связана с процессором, но хотя простой тест производительности процессора sysbench
(с отключенной нагрузкой) дал разницу, он составил всего 6%. Так что, возможно, это не только процессор, но и производительность памяти.
Пока я проверил:
- Версии прошивки на всех компонентах (одинаковые)
- Настройки BIOS (я сделал дамп с помощью
dmidecode
, и это не показало различий) - Я сравнил
/proc/cpuinfo
, без разницы. - Я сравнил вывод
cpufreq-info
, без разницы. - Параметры Java / JVM (одинаковые версия и параметры в обеих системах)
Кроме того, я полностью заменил оперативную память несколько месяцев назад, без какого-либо эффекта.
Я потерян. Что я могу сделать, чтобы выяснить, что происходит?
ОБНОВЛЕНИЕ : Yay! Оба сервера теперь работают одинаково. Это были настройки «power CRAP», как jim_m_somewhere назвал их в комментариях. Параметры BIOS для «Управления питанием» были на «Максимальная производительность» на быстром сервере и на «Active Power Controller» (настройка по умолчанию от Dell) на другом. Очевидно, я забыл, что я сделал эту настройку два года назад, и я делал это не на всех серверах. Спасибо всем за ваш очень полезный вклад!
источник
Ответы:
Две идеи, в зависимости от того, как далеко вы хотите пойти с этим:
Поменяйте местами диски обоих серверов и посмотрите, останется ли производительность на аппаратном уровне или будет зависеть от программного обеспечения.
Сравните вывод
/opt/dell/toolkit/bin/syscfg -o complete-bios-config.out
, можете ли вы как-то обмануть этот пакет для установки.источник
Больше возможностей для вывода и сравнения:
источник
Это звучит так, как будто это может быть балансировка нагрузки, связанная со мной. Когда вы говорите «та же рабочая нагрузка», как вы измеряете это?
Вы непосредственно тестируете каждый сервер, применяя тестовую нагрузку изолированно?
или вы применяете некоторую нагрузку к балансировщику нагрузки и смотрите результаты на обоих серверах?
Если вы делаете последнее (измеряя нагрузку, размещенную на обоих серверах с помощью балансировщика нагрузки), ваш балансировщик нагрузки может не распределять рабочую нагрузку точно равномерно между серверами (перекос на 20% для пары серверов не редкость в зависимости от того, как ваш балансировщик нагрузки решает, кто получает какие запросы), что приводит к тому, что один сервер получает больше нагрузки и, следовательно, работает плохо.
(Если вы проводите непосредственный сравнительный анализ каждого сервера в отдельности, не используя балансировщик нагрузки в качестве посредника, и вы убедились, что каждый компонент идентичен (вплоть до версий производителя) в обеих системах, тогда я в растерянности - Я не могу придумать какой-либо другой измеримой причины такого различия в производительности между одинаковыми серверами)
источник
Попробуйте некоторые инструменты профилирования, как системное профилирование, например, perf или Java, например VisualVM .
С помощью perf вы можете профилировать либо запущенный Java-процесс по PID, либо профилировать эталонный тест. Посмотрите на обе системы, посмотрите, где медленная система проводит свое время.
Тогда что-то вроде:
или
тогда
Пара идей о том, как системы могут работать по-разному:
Окружающая среда: температура воздуха или расход воздуха отличаются? Они в стойках? Я видел, как системы работают по-разному в разных положениях стойки из-за вибрации. В каждой стойке есть разные уровни вибрации. Это маловероятно, учитывая, что вы сказали, что ввод-вывод почти не используется. Но я видел, как диски замедлялись до 2 МБ / сек при последовательной записи из-за вибрации в частях стойки.
Аппаратные сбои: любое оборудование может быть неисправно. Используйте профилирование, чтобы увидеть, что медленно. Это может быть плохой процессор или чипсет, ненадлежащим образом подключенный радиатор, несбалансированные вентиляторы, вызывающие вибрацию, неисправные вентиляторы, даже плохой блок питания. Попробуйте поменять вещи, которые легко поменять местами.
источник
Почему никто не предложил "sysprof" ..?
Это то, для чего он был разработан.
Или, ну, вторая мысль ... попробуйте добавить некоторые ограничения в /etc/security/limits.conf
Попробуйте оба.
Если вы ничего не получите .... у вас скорее всего проблемы с безопасностью или физический дефект.
см. также: мой Linux-сервер «Количество созданных процессов» и «Переключение контекста» невероятно быстро растут
источник