Search code examples
capabilityvolttron

scale capability of volttron


I am trying volttron for a project solution and want to know the capability of volttron in a long term. The project is to control/monitor ~100k devices, and possibly millions if things run well.

What is the biggest scale of volttron usage in a real scenario? How many devices that one node can accommodate if say that the host machine have high spec?

What is the constrain of volttron later in the future after its use? (constrain as like in database / server resource / network)

The answer hoped to get is not an exact value. I just wanted to find the capability range.

Thanks,


Solution

  • There are several drivers for how well VOLTTRON scales for a single VOLTTRON instance.

    In no particular order:

    • Network and device communication speed. (Are your devices on a serial connection? BACnet devices behind a MSTP router?)
    • Frequency of data collection. (10 seconds?, 1 minute? 5 minutes? 15 minutes?)
      • How close together (time wise) does data from differnt devices need to be.
    • Frequency of commands issued/ number of commands issued.
    • Machine specs

    Often we see the bottleneck being the network for device communication. This will drive the rate at which you can communicate with devices. For collection a mid level PC is overkill in most situations.

    In the field our users have been able to scrape 1.5K+ BACnet devices in less than 15 minutes with a single node. Many of these devices were on an MSTP trunk which would be the major limiting factor. If these were TCP BAcnet devices the rate of data acquisition would be much higher.

    There are parameters to tune the rate of data collection for a specific node. It is common to tweak these values to find the optimal rate of collection after initial platform configuration.

    The kind of scaling you are looking for will require using multiple VOLTTRON instances. It is common to have multiple collection boxes for an installation. Usually these instances will gather data for some number of devices (based on your scenario) and either send those values directly to a database or forward them to another central instance of the platform that will submit the data on the remote nodes behalf. Numbers for some real deployments can be found here: https://volttron.org/sites/default/files/publications/VOLTTRON%20Scalability-update-final.pdf

    There are several database options from MySQL to Mongo to SQLite. You will want to pick a central database based on your data collection needs (so not SQLite).