Skip to main content

Queue non-urgent processing requests

Description

All systems have periods of peak and low load. From a hardware-efficiency perspective, we are more efficient with hardware if we minimise the impact of request spikes with an implementation that allows an even utilization of components. From an energy-efficiency perspective, we are more efficient with energy if we ensure that idle resources are kept to a minimum.

Solution

Utilize a message queue so requests that do not require immediate processing are queued.

SCI Impact

SCI = (E * I) + M per R
Software Carbon Intensity Spec

Queuing non-urgent requests will impact SCI as follows:

  • E: By reducing the total number of idle resources, less total electricity is required.
  • M: By reducing the total number of computing equipment required, the total embodied carbon is lower.

Assumptions

There is an assumption that the components in your system can communicate with a message queue asynchronously. If your component is the producer, it can add requests to the queue without waiting for the previous sent to be processed. If your component is the consumer, it will only process requests when they are available. We assume that no components in the system ever stalled while waiting for another.

Considerations

Decoupling components of your system can introduce unnecessary complexity and managing a message queue might mean additional overheads. As such, you should give careful consideration as to whether a message queue is appropriate.

References