Запуск JAVA в Windows Intel против Solaris Sparc (T1000) - PullRequest
4 голосов
/ 26 августа 2010

Привет, я пытаюсь протестировать свое приложение JAVA на Solaris Sparc, и у меня странное поведение. Я не ищу пламенные войны. Мне просто интересно узнать, что происходит или что не так ...

Я использую один и тот же JAR на Intel и на T1000, а на машине с Windows я могу получить 100% (Performance Monitor) загрузки процессора на машине Solaris, но могу получить только 25% (prstat)

Приложение - это пользовательское серверное приложение, которое я написал и которое использует netty в качестве сетевой инфраструктуры.

На машине с Windows я могу выполнять чуть более 200 запросов / ответов в секунду, включая полную бизнес-логику и доступ к сторонним сторонним организациям, в то время как на машине Solaris я получаю около 150 запросов / ответов только на 25% ЦП

Можно только представить, сколько еще запросов / ответов я мог бы получить от Sparc, если бы смог сделать так, чтобы он работал на полную мощность.

Серверы ...

Windows 2003 SP2 x64bit, 8 ГБ, 2,39 ГГц, ядро ​​Intel 4 Solaris 10,5 64 бит, 8 ГБ, 1 ГГц, 6 ядер

Оба используют jdk 1.6u21 соответственно.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 26 августа 2010

T1000 использует многоядерный ЦП, что означает, что ЦП может запускать несколько потоков одновременно. Если загрузка процессора составляет 100%, это означает, что все ядра работают на 100%. Если ваше приложение использует меньше потоков, чем количество ядер, то ваше приложение не может использовать все ядра и, следовательно, не может использовать 100% ЦП.

1 голос
/ 17 ноября 2010

Это довольно старый вопрос сейчас, но мы столкнулись с похожими проблемами.

Важно отметить, что SUN T1000 основан на процессоре UltraSpac T1, который имеет только один одиночный FPU на 8 ядер. Так что, если ваше приложение выполняет много или даже некоторые вычисления с плавающей точкой, это может стать проблемой, так как FPU станет узким местом.

1 голос
/ 26 августа 2010

Без кода трудно выручить.Некоторые идеи:

  • Профилируйте приложение Java в обеих системах и посмотрите, в чем разница.Вы можете быть удивлены.Поскольку в процессоре T1 отсутствует неупорядоченное выполнение, вы можете наблюдать снижение производительности в странных областях.
  • Как говорит Эрик Робертсон, попробуйте увеличить число потоков до количества виртуальных ядер, сообщаемых с помощью prstat, НЕ количество штатных ядер.В T1000 используются процессоры UltraSparc T1, которые интенсивно используют параллелизм на уровне потоков .

Также обратите внимание, что вы используете процессоры Intel последнего поколения и старые солнечные .Я настоятельно рекомендую прочитать Разработка и настройка приложений для систем многопоточности чипов UltraSPARC T1 и Максимальная производительность приложений на архитектурах многопоточности чипов (CMT) , обе от Sun.

...