Pregunta

Tenemos un sistema de baja latencia de comercio (manipuladores de alimentación, la analítica, la entrada de pedidos) escrito en Java. Se utiliza TCP y UDP ampliamente, no utilizan Infiniband o de otro tipo de redes no estándar.

¿Puede alguien comentario sobre las ventajas y desventajas de los distintos sistemas operativos o configuraciones del sistema operativo para implementar este sistema? Mientras que el rendimiento es obvia la importancia de mantenerse al día con los alimentos modernos de precios, la latencia es nuestra prioridad # 1.

Solaris parece como un candidato natural desde que crearon Java; debo usar procesadores SPARC o x64?

He oído cosas buenas acerca de RHEL y SLERT, son aquellos de las versiones correctas de Linux para usar en nuestra evaluación comparativa.

¿Ha probado cualquiera de Windows contra los sistemas operativos anteriores? ¿O es que supone que se mantienen al día?

Me gustaría dejar el debate frente de Java C ++ para un subproceso diferente.

¿Fue útil?

Solución

Los vendedores les gusta este tipo de referencia. Tiene código, ¿verdad?

IBM, Sun / Oracle, HP todo el amor para ejecutar la aplicación en su equipo para demostrar sus ventajas.

Haz que hacen esto. Si tiene código, hacer que los proveedores de efectuar una simulación de su equipo para mostrar que es mejor para sus necesidades.

Es fácil, sin dolor, libre , y de hecho. La decisión final será fácil y obvio. Y sabrá cómo instalar y poner a punto para maximizar el rendimiento.


Lo que me gusta hacer es la predicción de este tipo de cosas antes El código está escrito. Demasiados clientes han pedido un H / W recomendación y OS antes de que hayamos terminado de identificar todos los casos de uso. Pidiendo ese tipo de precognición es locura sencilla.

Pero tiene código. Puede producir casos de prueba que ejercen su código. Eso es perfecto.

Otros consejos

En un entorno comercial, además de baja latencia que son probablemente preocupados por la consistencia, así como la latencia de modo centrado en la reducción del impacto de GC se detiene en lo posible bien puede darle más beneficios que las opciones del sistema operativo diferentes personas.

  • G1 recolector de basura en las versiones recientes de Soles Hotspot VM mejora parar el mundo hace una pausa en una gran cantidad, de una manera similar a la JRockit VM
  • Para garantías de rendimiento real, aunque, versión del compilador de Java Hotspot en su aparato Azul Sistemas ofrece la más baja pausas garantizados disponibles - también se escala a un tamaño enorme -. 100s de GB pila y 100s de núcleos
  • Me descarto Java en tiempo real - a pesar de que te dan garantías de respuesta, te sacrificas rendimiento para conseguir esas garantías

Sin embargo, si su planificación sobre el uso de su sistema de comercio en un entorno donde cada microsegundo recuento, que realmente va a tener que vivir con la falta de consistencia que se obtiene de la actual generación de VM - ninguno de ellos (excepto en tiempo real) garantiza pausas bajas microsegundo GC. Por supuesto, en este nivel el va a encontrarse con los mismos problemas de la actividad OS (proceso preferente de compra, manejo de interrupciones, fallos de página, etc.). En este caso una de las variantes de Linux en tiempo real va a ayudarle.

Yo no descartaría Windows desde este sólo porque es de Windows. Mi Expirience en los últimos años ha sido que las versiones de Windows de la JVM de Sun era por lo general el rendimiento más madura sabia en contraste con Linux o Soaris X 86 en el mismo hardware. La JVM para Solaris SPARC puede ser bueno también, pero supongo que con Windows en x86 obtendrá más potencia por menos dinero.

No te recomiendo que usted busca en un sistema operativo que ya tiene experiencia con. Solaris es una bestia extraña si sólo sabe Linux, por ejemplo.

También se lo recomendaría encarecidamente el uso de una plataforma de realidad apoyado por el sol, ya que esto hará que sea mucho más fácil de conseguir ayuda profesional cuando realmente, realmente lo necesita.

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

Probablemente me preocupo por la recolección de basura causando latencia mucho antes de que el sistema operativo; ¿has mirado en sintonía en absoluto?

Si estuviera dispuesto a pasar el tiempo de ensayo diferentes sistemas operativos, que iba a tratar de Solaris 10 y NetBSD, y probablemente una variante de Linux para una buena medida.

Me experimento con arquitecturas de 32 bits vs-64; 64 bits le dará un montón de espacio de direcciones más grande ... pero tomará más tiempo para hacer frente a cada bit de memoria.

Estoy asumiendo que ha perfila su aplicación y saber dónde están los cuellos de botella; por el comentario acerca de GC, que hayas hecho esto. En ese caso, su aplicación no debe ser vinculado a la CPU, y la arquitectura de chip no debe ser una preocupación primordial.

No creo que los entornos de código administrado y procesamiento en tiempo real van muy bien juntos. Si realmente se preocupan por la latencia, eliminar la capa impuesta por el código administrado. Este no es un argumento de Java vs C ++, pero un Java / C # / ... vs C / C ++ / FORTRAN / ... argumento, y yo creo que es una discusión diseño válido a tener.

Y sí, me refiero a FORTRAN, corremos un número de sistemas en tiempo real cerca de una base de FORTRAN.

Una forma de gestionar la latencia es tener varias JVM de dividir el trabajo con montones más pequeños para que una detener la recolección de basura mundo no es como mucho tiempo cuando sucede y afecta menos procesos.

Otro enfoque es para cargar un racimo de JVM con suficiente memoria y asignar los procesos para asegurar que no habrá una detener la recolección de basura mundial durante las horas que le interesan latencia (si esto no es un 24/7 aplicación), y reiniciar JVM en las horas libres.

También debe buscar en otras implementaciones de JVM como una posibilidad (como JRocket). Por supuesto, si alguno de ellos es apropiada depende enteramente de su aplicación específica.

Si alguna de las cuestiones anteriores a su enfoque, que afectará a la elección del sistema operativo. Por ejemplo, si vas con otra implementación JVM, que podría limitar las opciones del sistema operativo, y si vas con la agrupación o de otra manera la ejecución de un varias JVM para la aplicación, que pueden requerir algunas herramientas del sistema operativo mejor subyacentes para gestionar con eficacia, influyendo aún más la elección del sistema operativo .

La elección del sistema operativo o configurable es completamente redundante, teniendo en cuenta la disponibilidad de estructuras de red más rápido.

Mira 10GigE con NICs dedo del pie, o la solución más rápida de 4X QDR (40Gbs) InfiniBand pero con IPoIB presentar una interfaz Ethernet estándar y el enrutamiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top