LMAX-Architecture

Le pattern Disruptor

Les tests

Pour mesurer la latence nous prenons le pipeline en trois étapes nous générons des événements en restant en dessous de la saturation. Ceci est réalisé par l'attente de 1 microseconde après l'injection d'un événement avant d'injecter le prochain et en répétant 50 millions de fois. Pour le temps à ce niveau de précision, il est nécessaire d'utiliser des compteurs d'horodatage de la CPU. LMAX a choisi les processeurs avec un TSC invariant parce les processeurs plus anciens souffrent de changement de fréquence dû à une économie d'énergie et les états de veille. Intel Nehalem et plus tard sont des processeurs qui utilisent un TSC invariant qui peut être consulté par la dernière JVM Oracle fonctionnant sur ​​Ubuntu 11.04. A titre de comparaison, LMAX utilise le ArrayBlockingQueue. Les résultats ci-dessous sont pour le Core i7 2.2 Ghz-2720QM cours d'exécution Java 1.6.0_25 64-bit sur Ubuntu 11.04.

< hr>
ArrayBlockingQueue(ns) Disruptor(ns)
Min Latency 145 29
Mean latency 32.757 52
Max Latency 5.069.086 175.567