A Good Friday Indeed - Load Testing (14k+ tps)

Discussion in 'Development' started by Fuserleer, Apr 14, 2017.

  1. Fuserleer

    Fuserleer Radix Founder Staff Member

    First of all, Happy Easter to everyone! Hope that you all have a great weekend.

    After a week of heavy development, performance optimizing and lots of other work on FABRIC, I decided to that today would be a good day for some load testing to see what it can really do.

    The reason behind today's test is as follows: FABRIC scales linearly as more nodes are added to the network, which is great. However I wanted to understand what the limit of a small baseline network would be with just a few nodes, as I can then extrapolate that over a larger network (and verify that it does indeed scale linearly).

    Before we get to that some terminology that I will be using, and that are also present in the vids.

    Atom = an element within the network which undergoes consensus (transactions, messages, etc)
    Processing = the number of atoms (transactions) being processed by the network at that moment in time
    Syncing = the number of atoms the local node is syncing
    Path = the average network settlement time in milliseconds of atoms
    Persist = the average local time in milliseconds to persist an atom
    TPS = transactions per second

    All the atoms within the tests were transactions as they are the most computationally expensive.

    Sustained Load

    A number of tests were performed to discover the sustainable limits on such a network. Starting at 100 TPS, we increased this in intervals until we hit the soft-limit at around 1700 TPS.

    The soft-limit is the local nodes saturation of throughput indicated by a sudden and increasing Persist time. The network is able to operate without disruption even if a large number of nodes are at their soft-limit.

    We then increased the load until we hit the hard-limit at around 2500 TPS.

    The hard-limit is when ALL nodes in the network are at a saturation of throughput and is indicated by a sudden and increasing Path and Persist time. The network is still able to operate at the hard-limit, but there may be delays in transaction processing and settlement.



    Spiked Load

    Next we wanted to discover what was the max peak load a small network could process over a short duration.

    To achieve this we place a sustained load on the network of 1000 TPS, then periodically presented an addition large amount of transactions over a short period of time of 5-10 seconds.

    We started at 10,000 addition transactions, and worked our way up to 100,000 which resulted in peak processing of around 10,000 TPS.



    We continued to add increasing load until we hit a hard-limit of 15,000 TPS, at which point additional transactions began to suffer delays and timeouts.



    Overview

    Today's tests showed that even a small network was able to handle high load volumes orders of magnitude greater than any other technology currently available with relative ease. Furthermore it was able to do so whilst retaining rapid settlement times of < 100 milliseconds in all but the most extreme cases.

    Even then, settlement time rarely exceeded a few seconds which is considerably better than most current technologies can muster at idle, let alone with excessive load.

    Node resource usage such as CPU and memory were also impressive, utilizing very little of both even in high load situations.

    Future testing will be performed on larger networks, and also utilize partitioning which will afford us much greater throughput in the 100,000s TPS.
     
    Last edited: Apr 14, 2017
    Leon, fthomas, wizzardTim and 20 others like this.
  2. Anima

    Anima Founders Staff Member

    Good test indeed - only two nodes during the tests.. thats AMAZING!!
     
    Collett likes this.
  3. rotane

    rotane Founders

    great!
     
  4. kiaya

    kiaya Beta Testers

    Incredible result! So the Radix network will basically make "Visa Scale" look pedestrian from day one. 100,000 TPS would enable us to do the sorts of things that Bitcoin and Etherium can only do off-chain with lightning networks, on the actual ledger. I was interested in "Tears" and "Stitched" - can you say any more about these concepts, or are these patent related?
     
    Leon and jonas452 like this.
  5. Mario

    Mario Beta Testers

  6. Fuserleer

    Fuserleer Radix Founder Staff Member

    Heh pedestrian :) 100,000 TPS is small fry, this will scale well beyond that. Think millions with enough nodes in the network (Ethereum sized for example).

    Tears relates to how many conflicts (such as a double spend) there have been in the network and Stitched how many have been successfully resolved. The test above was configured to produce a Tear about every 100,000 Atoms.
     
    Lloyd, Collett, Anima and 1 other person like this.
  7. Mario

    Mario Beta Testers

    Would love to see more tears and stitches!
     
  8. Fuserleer

    Fuserleer Radix Founder Staff Member

    There were a lot more in the last beta test we had. A few 1000 in fact!
     
    wezelvis likes this.
  9. ulfarsgco

    ulfarsgco New Member

    Really good work ;)
    I have a question about the network nodes. If we want to enable this functionnality in order to secure the network, what are the minimal requirements in terms of CPU, RAM and space disk?
    I have in mind to put it on a simple raspberry pi 2 because it is small and consumes very few power (only few watts) so that you can leave it connected to the network all day long. Is it possible or will it be in the future?
     
  10. Fuserleer

    Fuserleer Radix Founder Staff Member

    A Rasp Pi 2 will be plenty for the short term...at least until the network has load of maybe 100+ operations per second.

    At that point you can reduce the partitions that your Pi is serving so that it can still keep pace and earn.
     
  11. Mario

    Mario Beta Testers

    Just love it.
     
  12. ulfarsgco

    ulfarsgco New Member

    That's good news! So the network will be sustainable by lots of devices, even the less powerfull!
    When you say to reduce the partition, do you mean that you can set a maximum TPS available for the device? I guess this affect the earning!?
     
  13. Fuserleer

    Fuserleer Radix Founder Staff Member

    A partition is a piece of the overall network load.

    If there were say 1,000,000 TPS of load in the network, no single machine could process and store all of that information.

    Instead it is chopped into partitions, and each node in the network broadcasts which partitions it is processing.

    If the network had 1000 partitions, your node could broadcast that it was processing only partition 123. Any transactions that live in that partition are then received by your node, and that node would earn rewards for the work done upon transactions in partition 123.
     

Share This Page