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 |