1. A method for allocating a virtual machine according to a user categorization, where the user is categorized according to historical first user session information and virtual machine metrics, the method comprising: receiving, by a session monitor executing on a computing machine, notification a first user session terminated, the first user session accessing a first virtual machine; recording, by the session monitor responsive to termination of the first user session, first user session information; obtaining first virtual machine performance metrics for the first virtual machine from a virtual machine performance monitor, the first virtual machine performance metrics quantifying a load the first virtual machine places on a computing device executing the first virtual machine during the first user session; updating, by the performance monitor using the first user session information and the first virtual machine performance metrics, a first user workload profile; categorizing a first user corresponding to the first user session according to the first user workload profile; receiving, by a virtual desktop infrastructure, a request from the first user for a virtual machine; and allocating, responsive to receiving the request, a virtual machine to the first user according to the first user categorization.