In my thesis I have been dealing with a relatively new branch of information technology called cloud computing. The main objective of cloud computing is to provide the clients with computing resources reachable from any places, let it be a software, a developing environment or a whole computer infrastructure. As cloud computing is a continuously developing branch of IT there is a great number of possibilities of development at the disposal of IT specialists. One of the directions of further development could be the improvement of scheduling.
My task was to develop a resource allocation algorithm which ensures a provably better operation than the current schedulers produced in open source Infrastructure as a Service (IaaS) clouds.
For this purpose as the first step I studied the fundamental conceptions of cloud computing as well as the cloud computing solutions currently available on the market. The next step was to compare and contrast the examined cloud providers’ resource allocation algorithms with respect to speed, cost-efficiency and load-balancing. During the examination it became clear that in the present-day open source clouds no fully developed allocation algorithm can be found, in most of them the scheduler makes a decision at random.
As my task was the implementation into a specific system, I chose such a cloud computing solution as my testing environment, which provides a relatively free hand for the developers to customize scheduling. My choice fell on the system of CloudStack.
After the installation and configuration of CloudStack I prepared the algorithm in the Java language, and then I compared their efficiency to that of the methods originally integrated into a system. In the course of testing it turned out that it is possible to create more efficient resource allocation algorithms than the existing ones.