Nirvana Direct - Latency Analysis

This section presents the results of performance tests which have been undertaken with Nirvana Direct. The key indicator for performance metrics in these tests is latency. Latency is calculated as the elapsed time between a message being published and when it is consumed. Using Nirvana Direct, there is 1 less network hop, since the publisher writes direct to the consumer via the Nirvana Direct Server, keeping network latencies ultra low.

Test Methodology and Conditions

The publisher application published to 200 Nirvana Transient channels contained within its Nirvana Direct Server, at a rate of 200 events per second, each event having an 8 byte payload. The total publishing rate for the Nirvana Direct instance was therefore 40,000 events per second. There were 10 consumer applications each subscribed to all 200 channels, thus giving a throughput of 400,000 events per second. Statistics regarding latencies were collected from 1 of the consumer applications, every 10 seconds.

Test Results

The tests used Topics as opposed to queues and demonstrate ultra low latencies using Nirvana Direct. The table below shows the Mean, Standard Deviation, Min and Max values for each recorded 10 second interval, as well as the number of events delivered within specific latency ranges. All latency values are specified in milliseconds. The bottom of the table shows the percentage of the total events consumed that fall within each range. From The table we can determine that the mean latency was 0.406 milliseconds, that 99.989% of events were delivered in <2 milliseconds, and 99.999% of events are delivered in <5 milliseconds. None of the 12.89 million events published during this test were delivered outside of the ranges shown below.

Mean St Dev Min Max < 0.5 0.5 - 1 1 - 1.5 1.5 - 2 2 - 2.5 2.5 - 3 3 - 3.5 3.5 - 4 4 - 4.5 4.5 - 5 5 - 6 6 - 7 7 - 8 8 - 9 9 - 10 10 - 15
0.4040.2000.0805.8122876731023212449130000042700000
0.4010.1950.0815.0282887051019842022668100356100000
0.3960.2150.0806.4102863281036073431571590002310000
0.3940.2040.08110.696291743100049205234161112152991780001
0.3930.1940.0826.1672946729734921002400001511910000
0.4000.2060.0815.648289149992824239235606110400000
0.3900.2060.0794.127293943947003616112001360000000
0.4040.2130.0806.06228097710746639722300001114520000
0.4060.2070.0816.92128425110533235564020020519110000
0.4290.2040.0834.647266094123887330260200071000000
0.4230.2100.0836.4272719431174263498451350212010020000
0.4070.2090.0816.124283407104300428357112021124210000
0.4080.2060.0826.04428287810566235715721510274110000
0.4080.2170.0794.8912735441124914355481000293000000
0.4100.2190.0815.943269975116207423060161180113800000
0.4180.2140.0785.0422690901189493426471008322100000
0.3990.2060.0674.63128546310342524751200017201000000
0.4130.2060.0685.14127616911242426993700012187100000
0.3880.2120.0715.46729202396524308031119001020100000
0.4030.2090.0674.46028341510421634872771451960000000
0.4060.2080.0725.40128319510544424203417940321300000
0.4030.2230.0756.777285627100029497122111100814810000
0.3930.2330.0605.31729039993925622423000010800000
0.3930.2440.0585.79628703197275537172000142400000
0.4010.2430.0825.69328513296983680150190011264100000
0.4410.2200.0684.97925713212537258489100001213000000
0.4270.2300.0676.327268650112683602813744700671510000
0.4010.2160.0824.267288357960813811800014110000000
0.4050.2190.0794.1192863589770542311230021160000000
0.4030.2260.0786.14428476697505515613100075110000
0.3940.2250.0784.66428949493470482413230573000000
0.4230.2300.0836.22126832111220365529400001221510000
0.4030.2220.0694.830284764971134949800023121000000
93106683453389133029128423410841209417190166210001
72.177%26.771%1.031%0.010%0.002%0.001%0.000%0.002%0.003%0.001%0.001%0.000%0.000%0.000%0.000%0.000%

Nirvana Direct Latency Distribution (400,000 Messages / Second Across 10 Subscribers)

Test Configuration & Setup

Server System

  • PROCESSOR : 2x Intel¨ Xeon¨ Processor E5430 Quad Core (2.66GHz, 12Mb Cache, 1333Mhz FSB, Intel¨ 64, 45nm) (2xE5430/1270.00)
  • MAINBOARD : Tyan Tempest S5397AG2NRF, 5400 Seaburg Chipset, 16xFBDIMM, 2xGiga LAN, 6xSATA-II, 2x USB On-Board (S5397AG2NRF/670.00)
  • CHASSIS : 2U Rackmount, Black, 600 Watt Power Suppy, 6x1 Hot Swap SATA/SAS HDD (Chenbro 217B) (217B-600/1000.00)
  • RAILS : Set of Telescopic Sliding Rails (Rails/115.00)
  • CORSAIR/ACTICA MEMORY : 8GB (4x2GB) DDR2, 667 MHz 240 DIMM, Fully Buffered DIMM (4x2GB-667/460.00)
  • SATA HARD DISK : Seagate 500Gb SATA-II, 7200RPM, 32Mb Cache (ST3500320AS/152.00)
  • HARD DISK CONTROLLER : On Board SATA Hard Disk Raid Controller (no-HDD-CNTR/0.00)
  • NETWORK : Intel Pro/1000MT Dual Port Gigabit Server Adaptor, 32/64-Bit, 2 x RJ-45, PCI-X (Copper)
  • Centos 5.2 64bit
  • JDK : 1.6_06 ( 64 bit server )

Client System

  • CPU : Intel CORE 2 EXTREME QX6700/Quad Core CPU/2.66 GHz/2 x 4MB L2 Cache/1066FSB/LGA775
  • Motherboard : Gigabyte S775, GA-965P-DQ6 ver2.0, PCIe/DDR2/SATA2/G-Lan/1394/8ch-S
  • Memory : Corsair TWIN2X2048-8500C5D 2GB (2x XMS2 1GB) Twin2X PC-8500 DDR2 RAM, 2x240-pin DIMMs, Non ECC * 2
  • OS : Vista Ultimate
  • NETWORK : GBit Lan Connection
  • JDK : 1.6_06

Nirvana Direct Server Settings

The following configuration changes were made to the Nirvana Direct Server:

  • Config -> GlobalValues -> StampDictionary = false
  • Config -> FanoutValues -> whMaxEventsPerSecond = 500000
  • Config -> FanoutValues -> whEventThresholdTime = 50
  • Config -> FanoutValues -> whMaxEventsBeforeFlush = 10