by Mychal Capozzi (RIT Rifidi Coop/Undergrad Comp Sci) and Matt Dean (Rifidi Lead Software Engineer)
This document will give an overview of some basic scalability and performance data for Rifidi Edge and Rifidi Box Appliance
Four tests were run on different levels of hardware to test the load that the Rifidi Edge v1.2 could handle both with and without business-end computational logic. The tests were set up as follows:
Two different hardware configurations were used to demonstrate scalability, the first being a Asus Model: EEBox B202 (a netbook like device similar to is bundled with the Rifidi Box appliance) and the second target machine is a Toshiba Satellite laptop Model: Portege r700-S1320 (the more powerful of the two machines running with an Intel Core i5 (Dual Core Hyper Threaded) @2.4ghz ). Two software configuration scenarios were set up on the machines, the first to demonstrate the performance of the Rifidi Edge Server’s ability to process tag events purely in memory and the second to demonstrate the Rifidi Edge Server’s ability to process tag events and persist to a database (in this case MySQL v5.1) on the same machine. In all the test scenarios a separate machine is used to execute the simulated the virtual LLRP readers and tag rate scenarios. The product used for simulation is Rifidi TagStreamer v1.1.1 and the machine TagStreamer executed on is an dual-core, dual threaded 2.4 GHz processor. The simulated environment contained 4 LLRP readers, each with a single antenna and single read zones. The throughput time from one reader to the next was set one one millisecond, to simulate each of the four readers receiving their load almost simultaneously. Various numbers of generation two GID96 tags were sent across all four reads in bursts over one second, with a one second cool down between bursts for one to two minutes while data was collected. The tests were designed to be limited by buffering of tags by either Rifidi Edge Server or MySQL, to verify that a given load could be sustained over long periods of time.
Note: All testing for these four scenarios were over a wired Ethernet 100 MB network. More readers could have been used but for simplicity in setting up the scenario 4 LLRP readers were used with a higher load and frequency of tags within the antenna range.
More details for both hardware configuartions can be found in the summary results table below.
The first machine used an Asus appliance, Atom n2700 single core dual-threaded processor, Ubuntu 10.4 operating system, 1 gig of ram, 160 gig hard drive and is the basic platform recommended for use with the Rifidi Box appliance. Without the database writes of every tag seen, the edge server on the aforementioned hardware was capable of seeing between 350 and 450 tags per second with minimal buffering. With the database write enabled, the Rifidi Edge was capable of receiving bursts of 75 to 125 tags every second.
The second machine, based around a consumer-level test, was a Toshiba Satellite laptop with an Intel Core i5 @2.4ghz with 4 gigabytes of ram running Linux Mint 10 (based on Ubuntu 10.10). When the database writes were disabled, Rifidi Edge was consistently reading 2200 – 2300 tags per second. With the database writes occurring, the read rate was closer to 600-700 tags per second.
As far as CPU consumption, on the Asus machine with the Rifidi Edge Server processing tag events in-memory, the CPU reached 65-70% consumption. When including the MySQL database, the Rifidi Edge was consuming much less; closer to 45% of the CPU. The database was consuming close to 25% while this test was running.
The Toshiba Satellite machine CPU in-memory test was 80%, but once the database test began, that consumption dropped to 65%, while the database was consuming no more than 35% of the CPU.
Calculating RAM Usage:
RAM usage between the two was minimal, not surpassing 250 Mb. Additional readers were established to estimate how much RAM would be required to support each additional reader, and it is estimated to be .1 Mb (100 Kb). This value is platform independent. Additionally, we estimate that tag’s memory usage is variable depending on the tag type, for these tags it was negligible at less than 1KB each. This estimate was reached by firing 200 tags over 200 milliseconds at the Atom machine and measuring RAM consumption during the test until negligible fluctuations were measured, and then comparing that amount to the Rifidi Edge without receiving any tags.
Scalability with Retail RFID Business Case Scenarios:
Based on the load-tests described above, estimates can be extrapolated to account for various reader and tag rate environments. Given the following three retail scenarios described in detail below, we were able to size the necessary hardware requirements based on the scalability testing results above prior executing the simulation using Rifidi TagStreamer v1.1.1 on the same constant machine and Rifidi Edge Server v1.2 on the Toshiba Satellite laptop.
The Retail Scenarios:
A Department store has recently been outfitted with RFID readers on it’s dock doors, shelving units, and at the sales counters. On an average day they process hundreds of thousands of individual items from the dock doors to the sales counters, and with the use of RFID tags, keeping track of inventory has become completely automated. There are three defined areas where tags should be seen and a defined flow of events, they are:
1) There are five loading dock doors, each receiving 1000 tagged items every 30 seconds to 3 minutes.
2) There are 35 shelving units each receiving 50 tagged items every 15 seconds to 2 minutes.
3)There are ten points of sale, each receiving 10, 25, or 50 tagged items every 30 seconds to 2 minutes.
So using the Rifidi Edge software to process the tags and Tag Streamer to generate the tags on a separate machine, the following data was collected:
Edge Server Data:
-Top CPU usage: 75%
-Top RAM usage: 20%
-Avg CPU: 50%
-Avg RAM: 15%
-Network speed: 100 Mbps
-Total LLRP Readers used in testing: 50
-Test Duration: 18 hours
-Average tag events per second including database persistence: 107
-Peek bursts including database persistence (Tags events/per second): 336
-Total tag events processed by the Edge Server and persisted to MySQL in 18 hrs: 6,621,280
Based on the performance of the Toshiba Satellite laptop under the strain of the simulated environment, we are able to conclude that the Rifidi Edge can handle the requirements for a real-world deployment, but performance could be notably increased by separating the Database from the Rifidi Edge onto two separate machines, as the Database ended up being a bottleneck during bursts of 1,000 or more tags.
Setting up the Retail Scenario in your Environment:
One computer (at least an i3 processor) to run three Rifidi TagStreamer instances
One computer (at least equivalent to the Toshiba i5 above) to run the Rifidi Edge Server and MySQL Database
TagStreamer can be leveled across three computers each running one instance of TagStreamer for each test case scenario Note: The Rifidi Edge Server configuration will need to be configured to connect to three separate IPs. (The first 5 IPs will point to the Tag Streamer instance invoking the Loading Dock scenarios, the next 35 IPs will point to the Tag Streamer instance invoking the Item Level Shelves scenarios and the last 10 IPs will point to the Tag Streamer instance invoking the Point of Sale scenarios).
The MySQL Database can be installed on dedicated Database Server hardware. Note: This will require the Retail Application running on the Edge Server to point to the Database Server IP address. Also make sure you have at least 100MB network bandwidth and on the same sub-net as the Rifidi Edge Server
Software Installation Requirements
MySQL v5.1 – www.MySQL.com
Rifidi Edge Server v1.2 – www.rifidi.org
Rifidi Tag Streamer v1.1.1 – www.rifidi.org
Retail Rifidi Edge Application (Retail)
Events MySQL table – events.sql – used to store tag events during scenario execution
Rifidi Edge Server configuration (rifidi.xml)
Rifidi Tag Streamer configurations (TS_Retail_5_LoadingDocks.xml, TS_Retail_35_ItemLevelShelves.xml, TS_Retail_10_PointOfSale.xml)
Retail Scenario download: http://www.transcends.co/wp-content/uploads/2011/05/Retail.zip
Setting up the Scenario
Note: More details on how to use the Rifidi platform can be found at wiki.rifidi.org
1) Start the first Rifidi Tag Streamer instance and click on File|Load Test Suite to load the TS_Retail_5_LoadingDocks.xml. Note: Make sure to change the IP addresses in the configuration file to the IP address of the computer running this Tag Streamer instance and File|Save Test Suite.
2) Start the second Rifidi Tag Streamer instance and click on File|Load Test Suite to load the TS_Retail_35_ItemLevelShelves.xml.Note: Make sure to change the IP addresses in the configuration file to the IP address of the computer running this Tag Streamer instance and File|Save Test Suite.
3) Start the second Rifidi Tag Streamer instance and click on File|Load Test Suite to load the TS_Retail_10_PointOfSale.xml. Note: Make sure to change the IP addresses in the configuration file to the IP address of the computer running this Tag Streamer instance and File|Save Test Suite.
4) On the computer running the Rifidi Edge sever, place the rifidi.xml configuration file in the [Rifidi_Edge_Home]/server/config directory. Note: Make sure to change the IP addresses in the configuration file to the IP address of the computers running this Tag Streamer instance and the equivalent scenarios.
5) Copy the Retail Application into the Rifidi Edge server’s [Rifidi_Edge_Home]/server/applications directory. In the [Rifidi_Edge_Home]/server/application/Retail/database.properties file verify the com.emaise.jdbc.url=jdbc:MySQL://[MySQL_IP_Address]/emaise is set the the ip address of the MySQL 5.5 DB server instance, jdbc.user=root is set to the correct MySQL user and jdbc.pass=rifidi2010 is set to the correct MySQL password.
6) Start the Rifidi Edge Server and verify the MySQL Database Server is running
7) On the MySQL Database Server instance, verify the Retail database has been created, the events table has been created and at the start of each test delete all the records from the events table. Note: For use of the MySQL 5.5 Database please refer to www.MySQL.com for user documentation. – Use events.sql script to create events table.
8 ) After the Rifidi Edge Server starts, on the Edge Server console type loadApp Retail to start the Retail Application
9) For each Rifidi Tag Streamer instance, click on Test Units then click on TestUnit1 and on the menu bar click the run icon to start the Test case scenario. Note: You will need to repeat these steps for each of the three Tag Streamer instance.
10) To verify that the Retail Scenario is operating correctly, first on the Edge Server console type and readers and all 50 LLRP reader adapters should be in processing status, second monitor the cpu and memory usage on all the computers to verify CPU does not exceed 50% – 90% and memory does not exceed 50% available.
11) After you decide to end the test as the test cases are configured to run indefinitely so you will need to stop execution manually, the results can be analyze by querying the Retail Application MySQL 5.5 database. DB name: Retail. Table name: events. Note: For instructions on how to use MySQL 5.5 please refer to the www.MySQL.com documentation.
Future Planned Rifidi Edge Server Testing:
Future tests with the Rifidi Edge Server will include scalability and performance writing to a queue (JMS), web services, Software as a Service (SaaS) and in a Cloud.