Q — CoyVett

The article mentions that Avalanche is capable of 4,500 TPS. Is that what the primary Avalanche subnetworks can handle independently, or is this the maximum number of transactions of every subnetwork combined?

A — Collin Cusce

The TPS measurement is from blasting transactions through a network of c5.large AWS instances. We can support even higher on more powerful machines as we’re cpu-bound validation. That was just a reasonable instance type to pick so that’s what we’ve been consistently using.

As far as whether other subnets have the same limits, every subnet you add to your node adds overhead to your machine. However, this is easily compensated for with a beefier machine. The TPS limits aren’t hard-limits. They’re just something we’re comfortable saying we can perform right now.

Other implementations in C++ have reached near 8k TPS with signature signing (upwards of 15k tps without signature signing) on the same instance type, but it lacked a lot of the features essential for making a platform work.

The point I really want to get across is:

Avalanche is CPU-bound more than anything

Avalanche’s main subnet was used for those numbers and there’s plenty of optimization room

We picked c5.large AWS instances as our baseline benchmark and performance would be higher with better hardware

If you add a subnet you add overhead, but the consensus isn’t the only choking point… it’s things like signatures and waiting on disk writes (if necessary in your VM).

In theory, subnet validation could be done off-machine from the primary AVM machine if you want to use an architecture that gets every drop of performance out of a subnet.

There’s options. I’d say 4500 is a reasonable target for both subnets and the primary network, since neither of them are deeply coupled.