1. A method of providing a desktop computing environment to each of multiple users comprising: assigning each of the multiple users to a class among a plurality of classes, each class being indicative of computing resources that a user in the class is expected to consume when using the desktop computing environment; after receiving a request for a desktop computing environment from one of the multiple users: determining a class assigned to the user; within the determined class, computing environment parameters based on a user profile corresponding to the user; applying the environment parameters to a virtual machine supporting a provisioned environment for the user corresponding to the determined class for the user, the provisioned environment including processor, memory, and storage resources according to the class and an operating system and applications assigned to the user to provide the user's desktop computing environment; assigning the user to the provisioned environment corresponding to the class; monitoring and recording usage of the provisioned environment by the user including processor and memory utilization; for each of the multiple users, after occurrence of predetermined events: evaluating the recorded usage of the provisioned environment by the user to determine whether to modify the provisioned environment for the user; and modifying the provisioned environment for the user according to the evaluation and a best fit metric to match parameters of the provisioned environment with recorded usage by the user.