How do I reduce resource utilization by Aeron?¶
You've setup Aeron for running on a machine with a large amount of resources, but now want to run it on a developer machine.
- changing to less intensive idle strategies on your agents and in Aeron;
- set the Aeron Media Driver threading mode to
SHAREDwith a shared Idle Strategy.
Aeron's Media Driver is constructed out of three agents - the Sender, Receiver and Driver Conductor. You can reduce the resources required by scheduling the Sender, Receiver and Driver Conductor on a single thread. To do this, set the threading mode to
ThreadingMode.SHARED, for example:
final MediaDriver.Context mediaDriverCtx = new MediaDriver.Context() .sharedIdleStrategy(new SleepingMillisIdleStrategy(1)) .threadingMode(ThreadingMode.SHARED);
This will combine Sender, Receiver and Driver Conductor onto a single thread, with a 1ms sleep in the duty cycle.
Additionally, set the Aeron idle strategy to a calmer variant in the Aeron context:
final Aeron.Context aeronCtx = new Aeron.Context() .idleStrategy(new SleepingMillisIdleStrategy(1))
This will set the Aeron object to use a 1ms sleep in its duty cycle.