Sizing and Capacity Estimations

Sizing and Capacity Estimations

Sizing and Capacity Estimations

Sizing

The sizing of your Edge Delta agents are directly related to how you configure your agents which means that having more nodes in the configuration will result in more computation power and/or memory needed for these operations. We recommend testing your configurations in small scale of data and doing estimations based on actual data and test data differences.

Estimations

The following recommendations are based on testing of our onboarding configs for Helm and Kubernetes with exception of features stated under Restrictions and used HTTP source for pushing data to our agents. Based on event size of ~256 bytes, one agent (with one rollup and two compactor) can sustain 35 MiB/min/vCPU load.

Recommendations

Instances with at least 8 vCPUs and 16 GiB of memory are better in terms of horizontal scaling. Also deploying at least one instance per availability zone is desired to provide high availability to our agents. Some examples from cloud providers about recommended node types: AWS - c7g.2xlarge Azure - Standard_D8pls_v5 Google Cloud - t2a-standard-8

CPUs

We generally recommend:

  • For processor agents, allocate at least 2 vCPU
  • For Compactor Agents, allocate at least 0.5 vCPU
  • For Rollup Agents, allocate at least 0.5 vCPU

Our agents can run in both Arm and x86_64 processors so users are free to choice their favorite instances. However, we find that Arm instances perform better with similar cost aspects.

Memory

For typical operations, 2GiB memory per vCPU would work however in some memory intensive operations such as parsing JSON from raw bytes can create huge demand for memory so please feel free to increase it according to your needs.

Scaling

Vertical Scaling

Our agent can be managed by vertical scaling since it utilizes concurrent execution through implementation. With that, we can utilize all vCPUs. Beware that you are utilizing load balancing techniques so that in an event of failure, data loss is minimized.

Horizontal Scaling

Having a load balancer in front of processor agent instances would allow you to achieve horizontal scaling seamlessly. To deploy Edge Delta agents with horizontal scaling support, please set the corresponding HPA values found in helm values.

Choosing a Load Balancer

Rule of a thumb, use a load balancer that you are comfortable with. If you have doubts, cloud providers provide managed load balancing solutions such as:

  • AWS ALB and AWS NLB for AWS
  • Azure LB for Azure
  • Network Load Balancer for Google Cloud

Configuring a Load Balancer

The following are best practices when configuring a load balancer with Edge Delta agents.

  • Use a protocol that allows for better load balancing such as an HTTP-based protocol.
  • Enable keep alive feature (if exists) to reuse established connections.
  • Use a load-balancing algorithm that supports even load distribution (such as round-robin).

Avoiding Hot Spots

Some connections can cause more data coming in which will make things hard for load balancing.

  • Use protocols such as HTTP to have a control over message terminations. Using plain TCP connections for that reason.
  • Ensure all of your agents can handle the connection with highest volume so you can enjoy vertical scaling.

Autoscaling

For majority of deployments with Deployment kind, CPU should be decision factor for scaling. Hence, autoscaling should be done based on CPU utilization. Edge Delta agents are generally constrained with CPU (however in some heavy data throughput together with buffering scenarios) so it is a great metric to achieve autoscaling without any false-positives. These are the recommended settings:

  • Average CPU utilization over 5 minutes with a 90% target
  • A 5 minute stabilization period for scaling up
  • (Optional - for heavy memory intensive applications) Average memory utilization over 5 minutes with a 75% target