TL;DR
Given the rapidly increasing load on the IC, we propose adding additional application subnets to provide developers with greater flexibility and choice when selecting a deployment environment. This expansion will increase the capacity of ICP and accommodate continued growth in the coming months.
The following three step approach is proposed:
- Step 1: Expand the list of public subnets. This step has already been completed
- Step 2: Open subsets of the currently verified subnets to the community. Of the existing subnets, several so-called verified subnets are not open for deployment because these contain existing legacy canisters, some of which depend on a special replica configuration. These verified subnets - of which there are 11 - will be gradually opened.
- Step 3: Extend the target topology by 20 additional application subnets and gradually submit proposals to create these subnets as capacity is needed.
Note that increasing the number of public subnets is proposed in parallel to the performance improvements for individual subnets, outlined in this forum post.
Step 1 - Expanding of the list of public subnets
Currently, as can be seen on the IC dashboard, there are a total of 1469 available node machines and a total of 568 node machines active in the network. At the same time, the IC is seeing subnets with heavy compute load. Although the primary focus is to improve the performance of the protocol (in the scheduler, in the execution layer, and by subnet splitting) it is also important that developers have more flexibility in choosing which subnet to deploy and run their canisters.
One step already taken is the expansion of the list of public subnets. There are now 17 application subnets publicly available, allowing all principals to install canisters and take advantage of the available resources. But as the number of canisters on the IC continues to grow, the load on these subnets and the subnet state of these subnets is increasing. The below table shows a snapshot of the approximate number of canisters and approximate state size per subnet, on 22nd Oct. It also shows the practical limit of each subnet in terms of number of canisters and state size.
As can be seen from the table, there is a lot of activity on each subnet, but each subnet acts well within the limits set for it. There is currently a limit of 120’000 canisters per subnet, and a limit of 750 GiB for the subnet state size. Core protocol engineers are actively working on lifting these limits.
Step 2 - Making verified subnets publicly available
As a second step, it is proposed that some of the existing subnets that are not available yet for developers, are also made public. These so-called verified subnets were created at the IC Mainnet launch time and currently have legacy canisters running on them, some of which depend on a special functionality that isn’t considered generally safe anymore and is thus deprecated. In alignment with the canister owners this legacy functionality will be removed and the subnets will be gradually opened up.
The table below has a snapshot of the verified subnets in terms of canisters and state size, as per 22nd Oct. As can be seen, there is substantial additional capacity on these subnets available.
Step 3 - Adding more application subnets with existing spare node machines
In addition to opening up existing subnets for canister deployment, additional subnets can be added to make even more capacity available on the IC network. Using the target topology tooling one can calculate that with the existing spare nodes, at least 30 application subnets can be added (see also the diagram below in which a optimization calculation was made, taking into account the recently approved approach for Gen1 node machines after 48 months).
Adding new subnets will of course increase capacity, but also has several (smaller) drawbacks:
- Subnets that are created, currently cannot be removed.
- Consequently, there will be fewer spare node machines available that can be used to replace dead or degraded nodes on any subnet.
We propose to increase the number of application subnets in the target topology by 20 additional subnets, to be prepared to provide additional capacity as demand keeps growing. This is well within the maximum number of application subnets that can be added to the IC (which is at least 30, as described above).
The updated target topology is shown below. A motion proposal to update the target topology will be issued shortly.
Proposed Target Topology with update line entry in grey/bold.
Feedback
As always, feedback from the community is very much appreciated on this proposal. The intention is to formally submit the motion proposal for the update of the target topology in the next few days.