mirror of
https://github.com/Stone-Red-Code/RemoteExec.git
synced 2026-09-04 00:56:17 +02:00
22 lines
639 B
C#
22 lines
639 B
C#
namespace RemoteExec.Client.LoadBalancingStrategies;
|
|
|
|
internal class ResourceAwareStrategy : ILoadBalancingStrategy
|
|
{
|
|
public ServerConnection? SelectServer(IEnumerable<ServerConnection> availableServers)
|
|
{
|
|
return availableServers.MinBy(s =>
|
|
{
|
|
if (s.Metrics == null)
|
|
{
|
|
return double.MaxValue;
|
|
}
|
|
|
|
double cpuScore = s.Metrics.CpuUsage;
|
|
double activeTaskScore = s.Metrics.ActiveTasks * 10;
|
|
double backlogScore = s.TaskChannel.Reader.Count * 50;
|
|
|
|
return cpuScore + activeTaskScore + backlogScore;
|
|
});
|
|
}
|
|
}
|