Computing resources are not infinite, and must be allocated in an intelligent and efficient manner. Resources such as CPU power, memory and disk space are constraints in any computing environment. In a personal computing environment, you would run out of disk space if you had an extremely large music collection, or an extremely large collection of movies or such other media.
Similarly, on an enterprise level, if there was extensive duplication of data, such as the same files being stored on different computers – the disk space resource would get used quickly resulting in an inefficient utilization of disk space since the same data was replicated. This can be solved by purchasing a virtual storage disk and having all the computers access the data on that storage disk. Of course, there would be other issues that would crop up, such as which user could edit the file and which user’s edits would over ride edits by other users. Resolving these issues would be much more efficient in terms of allocation of resources than duplicating the data across computing environments.
Another computing resource is the processor. A central processing unit (CPU) (formerly also referred to as a central processor unit) is the hardware within a computer that carries out the instructions of a computer program by performing the basic arithmetical, logical, and input/output operations of the system. Modernly, almost all CPU’s are multi processing, ie. have multiple processing units within them, and can process multiple tasks at once. Further, processing performance of computers is increased by using multi-core processors, which essentially is plugging two or more individual processors into one integrated circuit. Ideally, a dual core processor would be almost twice as powerful as a single core processor. Despite having made significant progress in advancement of processing power, a single task can block the entire processing power of a computing environment and block out other tasks if the CPU power is not allocated efficiently. For example, if you instruct the computer to calculate the largest possible prime number (which is essentially impossible to do) – the CPU of the computer would be locked in to infinity.
One efficient way to allow a computing system to function at efficient capacity is to allocate resources to different users. Another way is to allocate to each user a percentage of the resources. For example, if there are 5 users, and 5GB of available disk space, you could allocate 10% to each user, regardless of what that user uses – ie. 500MB, regardless of actual usage, or alternatively you could allocate the entire 5GB to each user and monitor the activity and place restrictions based on usage patterns. Each computing environment is different and decisions have to be based on the unique facts and usage patterns of users.
CPU allocation is more tricky, if there are multiple users using the same computing environment and some users have time critical processes, such as – payment gateway systems, if one user hogs up the entire CPU the other users may get blocked out. Accordingly, a fixed allocation of CPU would be beneficial in such cases. However, CPU is much more difficult to scale up, ie. you can’t install new chips on a machine as easily as you can install new disk space, and so – if you anticipate a growing user base, allocating a fixed CPU to each user is impracticable. In such cases, you have to allocate a percentage to each user. For example, many web hosting companies throttle the CPU usage on your website once you cross a certain percentage of the total available computing power.