VDI environments (whether you are running them yourself or an MSP hosting for multiple users) are implemented for their convenience, cost-effectiveness, and manageability, however, when providing a whole workforce all of their desktops and applications from one location, performance issues are bound to arise.
Resources in VDI environments are shared and often all it takes is one power user or one runaway process to severely impact the experience of everyone on a server. Even worse these can cause the server itself to crash.
In this post, I will discuss an approach that Windows took to resolve this issue on their 2008 - 2012 servers, what happened to that solution and how IntelliPerform can fill the gap it left behind AND more.
What was Windows System Resource Manager
Windows System Resource Manager (WSRM) was a provisioning software available on Windows Server 2012. It allowed the allocation of the server’s CPU and memory resources across different applications; you could manage resource utilization so that no single application was hogging all the CPU or RAM, therefore preventing slowdown in your environment. You could also set up custom resource policies, ensuring either the equal allocation of resources across all applications or that high-priority apps will have more resources to draw from. The solution was included in Windows Server 2008 and remained as a supported feature up to Windows Server 2012.
WSRM was too much of a good thing and it ended up being removed from Windows Server 2012 R2's support, and later incarnations of Windows Server dropped the functionality entirely, leaving behind a bit of a gap in RDS & RDP environments.
For a lot of teams who upgraded their servers hoping to experience better performance with newer hardware, many were surprised to see the lack of WSRM (even in its unsupported state à la WS 2012-R2).
Despite upgrading the servers to newer versions such as 2016 or 2019, processes can still utilize a disproportionate amount of resources - the archetypal problem applications like Excel or any kind of browser can eat up a majority of CPU and RAM resources in a server. In environments that often have 20-30 users per server, performance can come to a screeching halt.
"I only have 57 chrome tabs open...why is everything so slow?"
WSRM allowed admins to limit applications running within Windows server 2012; the solution would, in effect, quarantine runaway processes to a specific set of hardware resources, this allowed “well behaved” apps to live in harmony with heavy duty or just unoptimized apps. However, this capability as mentioned was removed in server 2012 R2. The attempt to fill the gap left by WSRM was to use Hyper-V and “fair share” however these were not really suitable alternatives.
What is missing?
The issue with using fair share and hyper V is that the solutions are piecemeal.
Fair share CAN help CPU, Network, and IOps but not memory, and the consensus is that fair share policies don’t work particularly well at any kind of scale. With Hyper V you can manage your memory utilization across your VMS on the hypervisor, but this is not the same as having WSRM active on the server itself.
IntelliPerform is an enterprise solution that allows intelligent management and optimization of desktop infrastructure resources. Like WSRM it can prevent apps from consuming excess resources with custom policies. IntelliPerform is installed on the server and can run a multitude of rules based on CPU and Memory.
IntelliPerform is a centrally managed, software solution that will enhance EUE, maximize desktop performance and increase the user density per server. The solution also collects data and presents on-demand reports and analytics of your environment, which can also be accessed centrally.
The solution also serves to reduce costs as it allows IT teams to avoid the expenses involved in upgrading their server infrastructure and allowing assets to be sweat to a further degree.
To give you more of an idea of what IntelliPerform does and how it compares to WSRM, I'm going to go through an overview of the rules that can be set for resource utilization in your environment:
CPU Core selection
This allows you to set the affinity for specific processes to certain CPU cores within your system, so when affinity is applied it will only run within the assigned cores. This frees up your other CPU cores for other processes.
Maximum CPU Usage
Maximum CPU usage lets you set a maximum threshold of CPU that a process can consume. This allows the amount of CPU left over to be used freely by other applications and users.
This allows you to set the priority level of processes, letting you focus resource priority on business-critical applications
CPU Reduction will gradually reduce the CPU processes can use, should CPU go over the set threshold for it, IntelliPerform reduces the CPU available gradually until the threshold is no longer being exceeded, ensuring performance impact is reduced on runaway processes when restricted.
Flush Working Set
This will force the OS to remove as much memory as possible from a specific process, to free it up for use by other processes. This ensures that the only memory being used is in the physical memory.
Maximum Memory Working Set size
IntelliPerform will set a maximum amount of physical memory a process has at any one time. Similar to the maximum CPU usage, this frees up memory for other processes.
This allows you to set priority for your business-critical applications, so their memory pages will be moved to the paging file last, ensuring their allocated memory remains in their physical memory longer.
Memory Working Set reduction
Similar to how the above reduction rule works, the memory working set reduction will gradually reduce memory within the process's physical memory, based on the set threshold.
The above rules can be set up in different ways depending on the requirement. Through its Rule-Based Engine, IntelliPerform can apply CPU and memory rules in the following ways:
Per Process Rules
Similar to WSRM, the per-process rules will allow you to apply your rules to specific processes. These rules will kick in when the process exceeds your set threshold.
Per Session Rules
This lets you apply these rules based on user sessions. This is how you can monitor and define rules for specific users within one server - very useful if you have specific power users or constant idle sessions.
System-Wide rules will monitor the entire system IntelliPerform is installed in and will kick in whenever the set thresholds have been reached by the highest resource consumer at the time.
IntelliPerform extends these rules to apply to the foreground and background applications, browser-specific restrictions based on URLs, I/O priority, process start/stop and more.
IntelliPerform’s Central Management
IntelliPerform can be centrally managed using the ThinScale Management Platform.
Profile driven rules dictate IntelliPerform’s functionality and can be edited quickly and easily using the profile editor.
Like all our other solutions connected to the ThinScale Management Platform, you can manage and control multiple or individual devices (or servers). Aside from the standard Management Console reporting on inventory and device stats, as mentioned earlier in this post, IntelliPerform also provides a visual summary of CPU & Memory usage, numbers of connected users and locked processes, all in one easily accessed location, which can then be exported to an excel spreadsheet.
IntelliPerform also completely supports multi-tenancy. Through the console’s permissions and roles, you can limit accessibility and visibility on any item of the console to anyone accessing the platform. This means you can have multiple administrators for specific environments who can only access and see their specific items. An example of this would be in an MSP or hosting scenario where admin for company A can only see Company A’s device and profile folders, where an admin for company B can only see Company B’s folders.
When WSRM was removed from Windows Server 2012 R2 and subsequent versions, it left a gap that needed to be filled. The tools left behind required extra work to set up and even then, it was not always an effective equivalent. IntelliPerform fills this gap by not only providing a similar solution to WSRM but expanding and modernizing it to a full enterprise solution that is scalable, entirely configurable and extremely effective.
If you are experiencing a slowdown due to resource hungry apps in your VDI environment, a lower amount of users in one server or are simply looking for something to optimize processes in the background... IntelliPerform may be the solution you're looking for.