Я создал гостевую ОС freebsd для собственного приложения Java. Никакого графического интерфейса, никаких излишеств, только SSH и API для координации всех машин.
Это приложение по своей сути однопоточное и ограничено только скоростью процессора. Какая среда виртуализации лучше всего подходит для приложений с привязкой к ЦП JAVA?
Мы начали с OpenVZ, но обнаружили неприятную ошибку, которая вызывает утечку памяти в нашем приложении, поэтому теперь мы ищем, что использовать дальше.
Какая среда виртуализации лучше всего подходит для приложений с привязкой к ЦП JAVA?
Тот, который позволяет вам постоянно назначать физические процессоры виртуальным машинам, чтобы свопинг контекста был минимальным.
Почему бы вместо смены платформы не исправить утечку памяти?
Если он однопоточный, планировщик не будет сильно влиять на вещи, если хост не будет чрезмерно загружен. Производительность должна быть очень похожей на большинстве платформ.
Не существует быстрого и простого способа установить привязку к процессору для виртуальных машин в Linux, о котором я знаю, используя как VMWare, так и VirtualBox, но любой из них должен работать нормально. Если вы действительно заинтересованы в скорости, возможно, вы захотите полностью перейти на KVM, хотя бы для собственной интеграции по сравнению с несколькими уровнями, добавленными для VMWare / VirtualBox. Похоже, вам действительно не нужно много для gfx, звука и т. Д., Так что это может быть оптимальным для вас.
Следующая часть этого ответа немного не по теме, поскольку вы просили полное решение для виртуальной машины, но я все равно публикую, потому что это может иметь больше смысла в вашей ситуации. Использование виртуальной машины звучит ужасно тяжеловесно, когда вы можете использовать контейнер вместо этого, чтобы получить те же преимущества (изоляцию) без недостатков (накладные расходы виртуальной машины). Да, со временем ваша среда будет перескакивать с процессора на процессор, но опять же, все решения виртуальных машин будут пытаться это сделать из коробки, потому что они привязаны к системному планировщику, и именно планировщик является причиной этого.
С последним сервером vmware вы можете объединить несколько ядер в один виртуальный процессор, что может помочь, если у вас есть однопоточное приложение:
изменить: это версия 4.1. Вы можете попробовать бесплатную версию esxi и протестировать на ней свое приложение.