# Sensors Distribution #

Distribution sensors between different machines are the advantage of the cluster simulation. Distributed simulation synchronizes sensors' transforms between every cluster machine. One sensor can be simulated only on one machine, but one machine can still simulate multiple sensors.

## Sensor Setup top#

Sensors distributed to the clients will not be simulated on the main, those sensors will not affect the simulation (for example manual control sensor has to be simulated on the main) and API requests callbacks will be delayed. Due to these restrictions distribution is disabled by default and enabling it requires additional setup. Every sensor which can be distributed to clients has to override the MainOnly value of the DistributionType property with MainOrClient or ClientOnly value.

The current load balancing algorithm divides sensors into groups by their DistributionType type. Main distributes sensors by counting overhead sum and assigning each next sensor to the least overloaded machine available for the selected distribution type. Sensors can override the PerformanceLoad property to determine their load. The value 0.0 means that the sensor will not impact the performance at all, and the value 1.0 means that that the distributed simulation will try to simulate this sensor on a dedicated machine if possible, default value is 0.5.
• 1.0 PerformanceLoad for sensors like LiDAR, which parses the camera images and performs complex maths operations, should be classified under ClientOnly DistributionType type.
• 0.2 PerformanceLoad for sensors like RadarSensor, which performs complex maths operations, should be classified under MainOrClient DistributionType type.
• 0.05 PerformanceLoad for sensors like GpsSensor, which performs simple maths operations, should be classified under MainOrClient DistributionType type.
• Sensors like KeyboardControlSensor, which control objects in a simulation, have to be classified under MainOnly DistributionType type.