Tell me more ×
Cross Validated is a question and answer site for statisticians, data analysts, data miners and data visualization experts. It's 100% free, no registration required.

Looking for some direction here.

I have a model for a project where I need to balance a bunch of users amongst different servers based on their usage. For example, the heaviest users get placed on the lightest server.

Problem a: I have a multiple data parameters for each server such as response time, disc size etc. I need to use these parameters to come with a score for the server. Example 1 to 5. 5 Being the server with most usage. What method can I use to weight the different parameters to come up with a server score?

Problem b: Using those scores , I need to split the users amongst these servers. I already have a weighting score for each user, say 1 to 5. 1 being a light user and 5 being a heavy user.

So I'm basically need to balance the servers, by placing user with a score of 1 in server with a score of 5. I am trying to use Excel solver to accomplish this.

Any suggestions?

share|improve this question

1 Answer

This is not a classification problem. It sounds like you just want to do heuristic load balancing. I'm not really sure it belongs here (maybe you would have more like if we migrated it to stackoverflow?).

That said, I can make several suggestions:

  1. It is very unlikely that you can do load balancing efficiently if you try to reduce your multiple, disjoint parameters (response time, disk size etc.) to a single value, because "heavy use" can mean different things to different users. If I'm trying to write a 200gb file to disk, then I don't care about CPU load too much, but I really care about disk usage and disk space. Is this user a 5 or a 3? Without knowing whether a server has been assigned a load value of 3 for having low disk space and high i/o latency, or for having high CPU load, how can I tell where to assign this job?

  2. A better approach, would be to avoid compressing the users down to a single number. Store their disk usage habits, CPU usage habits, and the rest separately. You could then use a metric to compare a user's needs to each system's load and then pick the one that is most similar. For example:

Bob uses moderate amounts of CPU time (3/5), lots of disk read/write time (4/5), and lots of disk space (5/5). We can represent Bob's needs as a vector {3,4,5}.

Machine 1 is under light load (4/5), has a slow, old, HDD (2/5) and the HDD is almost full (1/5). We represent it with the vector {4,2,1}

Machine 2 is under high load (2/5), has a fast new SSD (5/5) and the SSD is almost empty (5/5). We represent it with the vector {2,5,5}.

Suppose we use the Manhatten distance as our measure. Then Bob's needs are :

|3-4| + |4-2| + |5-1| = 7 different from Machine 1's state, and

|2-4| + |4-5| + |5-5| = 2 different from Machine 2's state. So we assign Bob to machine 2.

Obviously you can use any measure you like (squared difference, euclidean distance etc), and you might want to weight positive and negative values differently too, or add constraints.

share|improve this answer
Thanks for the response. I will give your suggestion a try using my existing data. – Sridhar R Oct 11 '12 at 2:53
Do you have a suggestion on any ranking methodology to rank the above between 1 to 5 say? The parameters vary, some are in seconds, while some are number of users etc. – Sridhar R Oct 15 '12 at 1:58
Unfortunately the ranking will depend on the exact nature of your systems and users. I suggest posting a question about that to stackoverflow, which is better equipped to help with the technical details. – John Doucette Oct 15 '12 at 7:52

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.