Estoy probando una API, escrita en Java, que se espera que minimice la latencia en el procesamiento de mensajes recibidos a través de una red. Para lograr estos objetivos, estoy jugando con los diferentes recolectores de basura que están disponibles.¿El recolector de basura en serie de Java funciona mucho mejor que otros recolectores de basura?
Estoy tratando de cuatro técnicas diferentes, que utilizan los siguientes indicadores para controlar la recolección de basura:
1) de serie: -XX: + UseSerialGC
2) Paralelo: -XX: + UseParallelOldGC
3) concurrente: -XX: + UseConcMarkSweepGC
4) Concurrent/incremental: -XX: + UseConcMarkSweepGC -XX: + CMSIncrementalMode -XX: + CMSIncrementalPacing
Corrí cada técnica en el transcurso de cinco horas. Periódicamente utilicé la lista de GarbageCollectorMXBean proporcionada por ManagementFactory.getGarbageCollectorMXBeans() para recuperar el tiempo total dedicado a la recolección de basura.
¿Mis resultados? Tenga en cuenta que la "latencia" aquí es "Cantidad de tiempo que mi aplicación + API pasó procesando cada mensaje extraído de la red".
de serie: 789 eventos de recolección por un total de 1309 m; latencia media nos 47.45, la mediana de latencia nos 8.704, 1.197 latencia máximo nos
paralelo: 1715 eventos de recolección por un total de 122518 ms; latencia media nos 450.8, la mediana de latencia nos 8.448, latencia máximo 8292 nos
concurrente: 4629 eventos de recolección por un total de 116229 ms; latencia media nos 707.2, la latencia media 9,216 nosotros, latencia máximo 9151 nos
incremental: 5066 eventos de recolección por un total de 200213 ms; latencia media 515.9 us, latencia mediana 9.472 us, latencia máxima 14209 us
Encuentro que estos resultados son tan improbables que rayan en el absurdo. ¿Alguien sabe por qué podría tener este tipo de resultados?
Ah, y para que conste, estoy usando Java HotSpot (TM) de 64 bits del servidor VM.
¿Estás asumiendo que ejecutar dos cosas en paralelo es necesariamente más rápido que ejecutar una cosa tras otra? – aioobe
Espero que la latencia máxima aumente aunque – jcoder
Entonces, ¿cuántos mensajes se procesaron realmente en esas 5 horas en sus diferentes escenarios? ¿Estás ejecutando un hilo único o multiproceso? – pap