@Harish I think what you’re looking for is a load balancer. You want to randomly split work across 3 machines and this is not what Prefect agents are for. Prefect orchestrates your flows and their states, not compute resources.
There are a couple of options you may explore:
1. The easiest: manually distribute work by assigning different labels to your 3 agents, e.g. small-m1, small-m2, small-m3 and then using concurrency limit of 1 for each agent to ensure only one flow ever runs on one agent
2. Using Amazon ECS, attach those 3 instances to an ECS cluster, and create an Application Load Balancer that will randomly distribute work across those 3 instances. Then, you can have a single ECS agent in Prefect with concurrency limit of 3 - this way you can ensure that there are at most 3 flows running on your cluster, and load balancer would ensure they are distributed appropriately.
3. Setting up a Kubernetes Service with Round Robin load balancer, similar to #2
The option #1 would be the easiest to set up, but #2 and #3 would be likely better for scale e.g. in case you would need more machines in the future.