# US 11,445,248 B1 · Pooling user interface (UI) engines for cloud UI rendering

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,445,248 B1
- Document ID: US11445248B1
- Status: Granted
- Kind: B1
- Application number: 17/234,275
- Filed: 2021-04-19
- Granted: 2022-09-13
- Earliest claimed: 2021-04-19
- Assignees: Synamedia Limited
- Applicants: Synamedia Limited
- Inventors: Anthony Leigh; Elyashiv Zalevsky; Peter Benjamin Matthews
- Web page: https://patentgrep.com/patent/US11445248B1

## CPC

- G06F 9/452: {Remote windowing, e.g. X-Window System, desktop virtualisation (protocols for virtual reality H04L67/131)}
- H04N 21/4437: {Implementing a Virtual Machine [VM] (virtual machines in general G06F9/45533)}
- G06F 9/451: Execution arrangements for user interfaces
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/5072: {Grid computing}
- H04L 67/566: Grouping or aggregating service requests, e.g. for unified processing
- H04N 21/235: Processing of additional data, e.g. scrambling of additional data or processing content descriptors
- H04N 21/2393: {involving handling client requests (scheduling or organising the servicing of application requests H04L67/60)}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2209/5011: Pool
- H04N 21/42204: {User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor (constructive details of casings for the remote control device H01H9/0235; user interfaces for controlling a tuning device of a television receiver through a remote control H03J9/00; remote control of peripheral devices connected to a television receiver through the remote control device of the television receiver H04B1/205)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques for rendering user interface (UI) in a virtual set top system using a pooling of UI rendering engines is performed at a device (e.g., a server or a cloud computing platform). The pooling method includes receiving multiple requests for UIs from multiple client devices, where the multiple requests include states of the UIs. The method further includes dividing the multiple requests into a plurality of groups based at least in part on the states of the UIs, where a respective group of the plurality of groups corresponds to requests for a set of UIs from a respective set of client devices. The method additionally includes assigning a pool of UI engines in a virtual machine (VM) to render the set of UIs for the respective set of client devices based on one or more of characteristics of the set of UIs and characteristics of the respective group.

## Claims

### Claim 1

A method comprising:
at a device including one or more processors and a non-transitory memory:
receiving multiple requests for user interfaces (UIs) from multiple client devices, wherein the multiple requests include states of the UIs on the multiple client devices;
dividing the multiple requests into a plurality of groups based at least in part on the states of the UIs, wherein a respective group of the plurality of groups corresponds to requests for a set of UIs from a respective set of client devices; and
assigning a pool of UI engines in a virtual machine (VM) to render the set of UIs for the respective set of client devices based on one or more of characteristics of the set of UIs and characteristics of the respective group.

### Claim 2 (depends on 1)

The method of claim 1, wherein the UIs are TV UIs.

### Claim 3 (depends on 1)

The method of claim 1, wherein the states of the UIs are included in session cookies received along with the multiple requests.

### Claim 4 (depends on 1)

The method of claim 1, wherein dividing the multiple requests into the plurality of groups based at least in part on the states of the UIs includes:
identifying a request from a client in the multiple requests with a corresponding state;
determining whether or not a connection exists in the respective group based on the corresponding state; and
establishing the connection between the client and associating the connection with the respective group based on the corresponding state and in accordance with a determination that the connection associated with the respective group does not exist.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
maintaining a cache for storing rendered UI objects that are shared by the pool of UI engines; and
obtaining a cache hit rate of the rendered UI objects, including a cache hit rate of the rendered UI objects associated with the set of UIs.

### Claim 6 (depends on 5)

The method of claim 5, wherein assigning the pool of UI engines in the VM to render the set of UIs for the respective set of client devices based on the one or more characteristics of the set of UIs and the respective group includes:
adjusting a density of the pool of UI engines in the VM based on the cache hit rate of the rendered UI objects associated with the set of UIs and in accordance with a rendering delay of the respective group below a threshold.

### Claim 7 (depends on 1)

The method of claim 1, wherein:
dividing the multiple requests into the plurality of groups based at least in part on the states of the UIs includes dividing the multiple requests into the plurality of groups based on geographics derived from the states of the UI; and
the respective group of the plurality of groups corresponds to the requests for the set of UIs from the respective set of client devices proximate a respective geographical region.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
predicting a size of the respective group local to the respective geographical region; and
adjusting a density of the pool of UI engines in the VM according to the size of the respective group.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
deploying a plurality of VMs, including the VM, running on the one or more processors, each of the plurality of VMs hosts a respective pool of UI engines and corresponds to a respective application for rendering the UIs.

### Claim 10

A system comprising:
one or more processors;
a non-transitory memory; and
one or more programs stored in the non-transitory memory, which, when executed, cause the one or more processors to perform operations comprising:
receiving multiple requests for user interfaces (UIs) from multiple client devices, wherein the multiple requests include states of the UIs on the multiple client devices;
dividing the multiple requests into a plurality of groups based at least in part on the states of the UIs, wherein a respective group of the plurality of groups corresponds to requests for a set of UIs from a respective set of client devices; and
assigning a pool of UI engines in a virtual machine (VM) to render the set of UIs for the respective set of client devices based on one or more of characteristics of the set of UIs and characteristics of the respective group.

### Claim 11 (depends on 10)

The system of claim 10, wherein the UIs are TV UIs.

### Claim 12 (depends on 10)

The system of claim 10, wherein the states of the UIs are included in session cookies received along with the multiple requests.

### Claim 13 (depends on 10)

The system of claim 10, wherein dividing the multiple requests into the plurality of groups based at least in part on the states of the UIs includes:
identifying a request from a client in the multiple requests with a corresponding state;
determining whether or not a connection exists in the respective group based on the corresponding state; and
establishing the connection between the client and associating the connection with the respective group based on the corresponding state and in accordance with a determination that the connection associated with the respective group does not exist.

### Claim 14 (depends on 10)

The system of claim 10, wherein the operations further comprise:
maintaining a cache for storing rendered UI objects that are shared by the pool of UI engines; and
obtaining a cache hit rate of the rendered UI objects, including a cache hit rate of the rendered UI objects associated with the set of UIs.

### Claim 15 (depends on 14)

The system of claim 14, wherein assigning the pool of UI engines in the VM to render the set of UIs for the respective set of client devices based on the one or more characteristics of the set of UIs and the respective group includes:
adjusting a density of the pool of UI engines in the VM based on the cache hit rate of the rendered UI objects associated with the set of UIs and in accordance with a rendering delay of the respective group below a threshold.

### Claim 16 (depends on 10)

The system of claim 10, wherein:
dividing the multiple requests into the plurality of groups based at least in part on the states of the UIs includes dividing the multiple requests into the plurality of groups based on geographics derived from the states of the UI; and
the respective group of the plurality of groups corresponds to the requests for the set of UIs from the respective set of client devices proximate a respective geographical region.

### Claim 17 (depends on 16)

The system of claim 16, wherein the operations further comprise:
predicting a size of the respective group local to the respective geographical region; and
adjusting a density of the pool of UI engines in the VM according to the size of the respective group.

### Claim 18 (depends on 10)

The system of claim 10, wherein the operations further comprise:
deploying a plurality of VMs, including the VM, running on the one or more processors, each of the plurality of VMs hosts a respective pool of UI engines and corresponds to a respective application for rendering the UIs.

### Claim 19

A non-transitory computer-readable media including instructions, which, when executed by a device including one or more processors, cause the device to:
receive multiple requests for user interfaces (UIs) from multiple client devices, wherein the multiple requests include states of the UIs on the multiple client devices;
divide the multiple requests into a plurality of groups based at least in part on the states of the UIs, wherein a respective group of the plurality of groups corresponds to requests for a set of UIs from a respective set of client devices; and
assign a pool of UI engines in a virtual machine (VM) to render the set of UIs for the respective set of client devices based on one or more of characteristics of the set of UIs and characteristics of the respective group.

### Claim 20 (depends on 19)

The non-transitory computer-readable media of claim 19, wherein the UIs are TV UIs.
