У меня есть многопоточная программа на Java. У меня есть определенные проблемы с производительностью.
Я все улучшил. Оборудование + Программное обеспечение. Теперь я думаю, что пора перейти на правильную операционную систему.
Мне было интересно, какая ОС самая быстрая для виртуальной машины Java?
Я использую Sun Java6. Как вы думаете, Sun Solaris будет лучшим выбором для приложений Java? Или FreeBSD? или CentOS (я использую сейчас)?
Спасибо
Вы найдете очень небольшое улучшение (если оно вообще есть), переключив используемую ОС, если только вы не используете какую-то действительно старую версию прямо сейчас, и даже тогда это может не дать вам прирост производительности, который вы ищете.
Я предполагаю, что вы все еще ограничены оборудованием, которое используете в настоящее время, или, возможно, ваше Java-приложение является основной проблемой, и, возможно, стоит изучить, прежде чем использовать дополнительное оборудование для решения проблемы.
Удивительно, но Windows - самая быстрая платформа для Java, поскольку это родная платформа разработчиков, а Solaris оказалась на худой стороне. В Linux вы можете выбирать из Sun, IBM, OpenJDK и BEA для вашего удобства.
Настоящий ответ - какая платформа будет самой простой и рентабельной для управления, возможно, это CentOS или Ubuntu Server.
Конечно, вы должны протестировать это на производительности в своей непроизводственной аппаратной среде, если хотите получить правильный ответ.
Вам следует учитывать затраты на поддержку производственной среды с несколькими ОС и учитывать их в любых соображениях COGS (стоимости проданных товаров) при расчете того, какой выигрыш в производительности вы получите.
Я предполагаю, что любой получаемой вами выгоды «недостаточно», чтобы перевесить дополнительные затраты на поддержку нескольких операционных систем в производственной среде. Поговорите со своей операционной группой, чтобы узнать.
Ваши усилия могут быть лучше потрачены на повышение производительности операционных систем, которые ваша группа эксплуатации уже поддерживает в производственной среде. Вы можете настраивать ОС, а также переключать параметры виртуальной машины и, конечно же, исправлять свой код, чтобы сделать его более эффективным :). Также можно рассмотреть разные варианты оборудования. Мы обнаружили, что разные типы ЦП по-разному ведут себя в наших рабочих нагрузках, что совсем не похоже на типичные тесты производительности.
Между разными дистрибутивами почти нет ничего из-за их способности выполнять приложения Java.
Тем не мение. Вам следует выбрать ОС с поддержкой современного оборудования и наборов микросхем (т.е. относительно новое ядро) и стабильный график выпуска. CentOS хороша, 5.4 является последней версией, поддерживает некоторые хорошие новые функции, такие как встроенная поддержка FUSE.
Я бы, вероятно, выбрал Ubuntu, регулярные выпуски каждые 6 месяцев, 3-летний выпуск LTS, который выйдет в апреле, очень новые ядра и хорошие выпуски патчей, а также хорошую поддержку sun-java6.
Выберите операционную систему для обеспечения производительности и совместимости оборудования, поддержки и безопасности.
Производительность JVM зависит от платформы. Прошло некоторое время с тех пор, как я оценил производительность jvm на различных платформах, но когда я последний раз делал это несколько лет назад, на JDK1.4 лучше всего был Solaris. В то время JVM в Linux была еще новой, и были проблемы с поддержкой потоковой передачи. В реализациях JVM многое изменилось.
Конечно, нет простого способа судить об этом, вам нужно выбрать идеальную аппаратную платформу и установить Soaris, Linux и т. Д. На той же машине и запустить несколько тестов, чтобы оценить это. Реализация JIT для поддержки целевого ЦП также имеет значение.
Изучите различные расширенные параметры JVM, поддерживаемые каждой платформой, и вы получите четкое представление о том, сколько оптимизации вы можете сделать.
Также рассмотрите другие JVM, такие как JRockit или IBM JVM.