For anyone interested, this was a graph of data collected from a simulation of 25 Factom Federation (M2) nodes running in a well connected network and run on a single computer. The connections between each node is shown on the right.
The computer was a cloud based server with two cores, 8 GB of memory, and a SSD drive. Each node runs in its on Go-Routine (which is how concurrency (code that runs in parallel) is implemented in Go). The nodes are connected with Go Channels to simulate a network. Code around those channels implements the message drop rate, and network delay of 300 ms (600 ms ping times) between all nodes. The longest path in this network is three nodes, so some of the Federated Servers are dealing with (300+300+300)*2 ping times (1.8 seconds) with some other Federated Servers.
None the less, each of the 25 nodes handled about 2.5 tps (transactions per second) and 1.69 tps average over the test, with bursts reaching over 7.5 tps. The simulation as a hole was handling over 45 transactions per second with bursts over 180 transactions per second. The total footprint of the test was less than 4 GB, so individual servers were using 1/25 of that, or (as graphed) less than 240 MB. The two CPU's were loaded less than 75% (about 1.5 CPU) with individual nodes at about 11% of a CPU.
(Note most transactions were entries (1.2 million) but with some Factoid transactions (30K). The simulation was run for over 8 days, with (note the network graph) 9 leaders (the blue nodes), 8 audit servers (the green nodes) and 8 followers (the gray nodes).
All in all pretty decent performance numbers, steady memory usage, CPU load, and management of a slow, somewhat spotty network.
BTW, the simulation code is baked into the code. Anyone can build a simulation network, and run their own tests on their own hardware. The scripts to generate transactions are in the factomd/scripts folder in Github. I have a spreadsheet I'll share from Google Docs that I used to generate the graphs. Additionally we use the amazing arbor.js (
http://arborjs.org) website to visualize the network.
I've run tests on my laptop of 50 node networks and more. It is a fun tool to play with, and had been the cornerstone of our developing and testing. Think of it as the software version of the Spanish Inquisition.
In the coming weeks I'll have a blog post that details all the steps to set up and run your own tests, and produce your own graphs. And in the very near future we will vastly improve that process.
Paul