Generational Cache for VDI Image Blocks
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Display remoting protocols face challenges in delivering a fluid GUI experience while minimizing network bandwidth and CPU resources, particularly in memory-constrained devices like thin clients and mobile devices, where increasing cache size is not feasible.
Innovation Solution
Implementing a generational cache with multiple persistence levels to store remote desktop GUI image blocks, where image blocks are stored based on context and events, such as user interactions and workflow discontinuities, to optimize cache management and reduce bandwidth usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the cache size is increased to store more image data, then the likelihood of storing needed images in the cache increases, but memory-constrained devices like thin clients and mobile devices cannot accommodate larger cache sizes
Solution Approach 1:
The cache is segmented into multiple persistence levels (L1, L2, L3) with different retention characteristics. L1 is a small fast cache in memory, L2 is a medium-term cache, and L3 is a large long-term cache. This segmentation allows the system to achieve high cache hit rates for frequently accessed images while using minimal memory resources on constrained devices.
Solution Approach 2:
The patent introduces a temporal dimension to cache management by creating multiple persistence levels with different time-based retention policies. Instead of a single cache space, images are organized across L1 (short-term), L2 (medium-term), and L3 (long-term) caches, allowing the system to optimize between memory usage and cache effectiveness by distributing images across different temporal layers.
2Loss of information
If image data is retransmitted from the server to the client device, then the client device can obtain updated image content, but network bandwidth consumption increases
Solution Approach 1:
The server performs preliminary actions by proactively caching image blocks in the L3 long-term cache before they are potentially needed. When images are minimized or hidden, their image blocks are pre-cached in L3 with extended persistence. This preliminary caching ensures that when windows are restored, the images are already available in the cache hierarchy, eliminating the need for retransmission and reducing network bandwidth consumption.
Solution Approach 2:
The system implements feedback mechanisms where the server monitors client cache status and user interactions. When the server detects that a needed image is already cached by the client device, it instructs the client to use the cached copy. The multi-level cache structure provides feedback about image usage patterns, allowing the system to intelligently determine whether retransmission is necessary or if cached data should be reused.
3Productivity
If the multi-level cache system caches image blocks based on context and events, then cache management efficiency improves, but the complexity of cache management increases
Solution Approach 1:
The cache management system operates autonomously using event-driven logic. When specific events occur (window minimize, maximize, hide, show), the system automatically promotes or demotes image blocks between persistence levels based on predefined rules. The server independently manages the L3 cache population by monitoring client cache status and user interactions, eliminating the need for complex centralized control mechanisms while improving cache efficiency through context-aware decisions.
Data Source
AI summary
In one embodiment a method for storing a remote desktop GUI image block in a cache including a plurality of persistence levels is described. The method is comprised of maintaining each persistence level in the plurality of persistence levels; identifying an event associated with an update to the remote desktop GUI; determining a context for the event; selecting one of the persistence levels for the event based on the context; and storing an image block corresponding to the update in the selected one of the persistence levels.


