US 12,348,587 B2
Input/output (I/O) performance in remote computing environments using a mini-filter driver
Wu Bai, Beijing (CN); Haiwei Zhao, Beijing (CN); Weigang Huang, Beijing (CN); Feng Yan, Beijing (CN); and Kun Shi, Beijing (CN)
Assigned to Omnissa, LLC, Mountain View, CA (US)
Filed by Omnissa, LLC, Mountain View, CA (US)
Filed on Sep. 29, 2022, as Appl. No. 17/936,615.
Claims priority of application No. PCT/CN2022/106178 (WO), filed on Jul. 18, 2022.
Prior Publication US 2024/0022634 A1, Jan. 18, 2024
Int. Cl. H04L 67/14 (2022.01); H04L 67/568 (2022.01); H04L 67/5681 (2022.01); H04L 67/01 (2022.01); H04L 67/1095 (2022.01)
CPC H04L 67/14 (2013.01) [H04L 67/568 (2022.05); H04L 67/5681 (2022.05); H04L 67/01 (2022.05); H04L 67/1095 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method of associating thread identifiers (IDs) to input/output (I/O) requests in a remote computing environment, the method comprising:
receiving, by a mini-filter on a remote device that is remote from a client device, a storage I/O request from an application on the remote device to access a storage drive at the client device;
determining, by the mini-filter, a thread ID associated with the storage I/O request, the thread ID corresponding to an application thread of the application that generated the storage I/O request;
determining, by the mini-filter, one or more parameters of the storage I/O request;
transmitting, by the mini-filter, to a redirection server process on the remote device, a message comprising the thread ID and the one or more parameters of the storage I/O request, wherein the thread ID and the one or more parameters of the storage I/O request are added to a cache maintained by the redirection server process;
establishing a virtual channel between the redirection server process and a redirection client process executing on the client device; and
redirecting the storage I/O request from the redirection server process to the redirection client process over the virtual channel, wherein the thread ID in the cache is used to prefetch, from the storage drive on the client device, additional data blocks that were not requested by the storage I/O request but which are contiguous with data blocks requested by the storage I/O request.