I have a project where I have multiple nodes in a grid that are operating as storage and compute nodes. These nodes are heterogeneous ranging from dedicated server hardware to alix boards and even Mikrotik routerboards running OpenWRT(consisting of mostly the alix boards though).
I am collecting system performance metrics such as RAM, SWAP and CPU usage through the sigar java API. This is working really well.
My next task is to take these performance values and combine them in a way that I would be able to sort my hosts in such a way that I could say which host is best able to handle a compute request. This can almost be thought of as the same way windows gives your computer a performance score with the windows performance index.
My first attempt at this was to add the used percentages of RAM, SWAP and CPU usage ( for Linux I scaled the load value to a value between 0 and 1). Whichever host scored the lowest was then selected for the compute operation.
Has anyone got a better idea on how to do this. My way felt very "hacky" and not the sort of way I want to approach the work in this project.
Thanks