Лучшая ОС для развертывания низкого JAVA-приложения задержки?

У нас есть низкая торговая система задержки (обработчики каналов, аналитика, закажите запись), записанный в Java. Это использует TCP и UDP экстенсивно, это не использует Infiniband или другие нестандартные сети.

Кто-либо может прокомментировать компромиссы различных Ose или конфигураций ОС для развертывания этой системы? В то время как пропускная способность очевидно важна, чтобы не отставать от современной ценовой подачи, задержка является нашим приоритетом № 1.

Солярис походит на наиболее подходящего кандидата, так как они создали Java; я должен использовать Sparc или x64 процессоры?

Я услышал хорошие вещи о RHEL и SLERT, это правильные версии Linux для использования в нашем сравнительном тестировании.

Кто-либо протестировал Windows против вышеупомянутых Ose? Или это, как предполагается, не поддерживает на высоком уровне?

Я хотел бы оставить Java по сравнению с дебатами C++ для другого потока.

14
задан Ted Graham 23 December 2009 в 15:26
поделиться

7 ответов

Поставщики любят такие эталоны. У вас ведь есть код?

IBM, Sun/Oracle, HP будут рады запустить ваше приложение на своем оборудовании, чтобы продемонстрировать свои преимущества. Заставьте их сделать это. Если у вас есть код, заставьте продавцов запустить демонстрацию на своем оборудовании, чтобы показать, что лучше всего подходит для ваших нужд.

Это просто, безболезненно, бесплатно , и на самом деле. Окончательное решение будет простым и очевидным. И вы будете знать, как установить и настроить, чтобы максимизировать производительность.


Ненавижу предсказывать такие вещи до того, как код будет написан. Слишком многие клиенты просили H/W и OS рекомендации до того, как мы закончили определять все случаи использования. Просить такого рода предраспознание - это простое безумие.

Но у вас есть код. Вы можете создать тестовые примеры, которые реализуют ваш код. Идеально.

17
ответ дан 1 December 2019 в 10:18
поделиться

Одним из способов управления задержкой является использование нескольких JVM, разделяющих работу на более мелкие кучи, чтобы остановка мировой сборки мусора не занимала столько времени, когда это происходит, и влияла на меньшее количество процессов.

Другой подход - загрузить кластер JVM с достаточным объемом памяти и выделить процессы, чтобы гарантировать, что мировая сборка мусора не остановится в те часы, которые вам небезразличны задержки (если это не приложение, работающее круглосуточно и без выходных). , и перезапускать JVM в нерабочее время.

Вам также следует рассмотреть возможность реализации других JVM (например, JRocket). Конечно, если какой-либо из них подходит, полностью зависит от вашего конкретного приложения.

Если что-либо из вышеперечисленного имеет значение для вашего подхода, это повлияет на выбор ОС. Например, если вы выберете другую реализацию JVM, это может ограничить выбор ОС,

0
ответ дан 1 December 2019 в 10:18
поделиться

Настоятельно рекомендую заглянуть в операционную систему, с которой у вас уже есть опыт работы. Solaris - странное чудовище, если вы знаете только Linux, например

Также я настоятельно рекомендую использовать платформу, фактически поддерживаемую от Sun, так как это значительно облегчит получение профессиональной помощи, когда вы РЕАЛЬНО, РЕАЛЬНО нуждаетесь в ней.

http://java.sun.com/javase/6/webnotes/install/system-configurations.html

1
ответ дан 1 December 2019 в 10:18
поделиться

Наверное, я бы беспокоился о сборе мусора, вызывающем задержки задолго до операционной системы; вы вообще рассматривали возможность его настройки?

Если бы я хотел потратить время на пробную версию разных операционных систем, я бы попробовал Solaris 10 и NetBSD, и, возможно, вариант Linux для хорошей оценки.

Я бы поэкспериментировал с 32-vs-64 битными архитектурами; 64 бита дадут больше адресного пространства кучи... но займет больше времени для обращения к каждому биту памяти.

Я предполагаю, что вы профилировали ваше приложение и знаете, где находятся узкие места; по комментарию о GC, вы это сделали. В этом случае ваше приложение не должно быть привязано к процессору, а архитектура чипа не должна быть основной задачей.

.
1
ответ дан 1 December 2019 в 10:18
поделиться

Я не думаю, что управляемые среды кода и обработка в реальном времени идут вместе очень хорошо. Если вас действительно волнует латентность, удалите слой, наложенный управляемым кодом. Это не аргумент Java против C++, а аргумент Java/C#/... против C/C++/FORTRAN/... и я считаю, что это правильная дискуссия о дизайне.

И да, я имею в виду FORTRAN, мы запускаем ряд систем близких к реальному времени с основой FORTRAN.

.
0
ответ дан 1 December 2019 в 10:18
поделиться

Для торговой среды, в дополнение к низким задержкам, вы, вероятно, беспокоитесь о последовательности, а также латентности, поэтому сосредоточиться на снижении влияния пауз GC как можно больше, может дать вам больше преимуществ, чем различные варианты операционных систем.

  • Сборщик мусора G1 в последних версиях ВМ Suns Hotspot значительно улучшает функцию остановки мировых пауз, аналогично JRockit VM
  • Для гарантии реальной производительности, однако, Azul Systems версия компилятора Hotspot на своем Java Appliance обеспечивает самые низкие гарантированные паузы - также она масштабируется до массивного размера - 100 ГБ стека и 100 ядрами.
  • Я бы сделал скидку на Java Realtime - хотя вы бы получили гарантии ответа, вы бы пожертвовали пропускной способностью, чтобы получить эти гарантии

Однако, если вы планируете использовать вашу торговую систему в среде, где каждая микросекунда имеет значение, вам действительно придется жить с отсутствием последовательности, которую вы получите от текущего поколения ВМ - ни одна из них (кроме реального времени) не гарантирует низкие микросекундные паузы GC. Конечно, на этом уровне вы столкнетесь с теми же проблемами, что и при работе операционной системы (преемственность процесса, обработка прерываний, сбои в работе страницы и т.д.). В этом случае вам поможет один из вариантов Linux в реальном времени

.
5
ответ дан 1 December 2019 в 10:18
поделиться

Я бы не исключил из этого Windows только потому, что это Windows. За последние несколько лет я убедился в том, что Windows версии Sun JVM обычно были наиболее зрелыми по производительности в отличие от Linux или Soaris x86 на том же самом аппаратном обеспечении. JVM для Solaris SPARC тоже может быть хорошей, но я думаю, что с Windows на x86 вы получите больше мощности за меньшие деньги

.
2
ответ дан 1 December 2019 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: