System and method for a separate hierarchical cache for cloud content storage
Patent Information
- Application Number
- CN202110230802.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-08-31
- Filing Date
- 2021-03-02
- Publication Date
- 2026-09-29
- Estimated Expiration
- 2041-03-02
AI Technical Summary
然而,由于数据处理资源的限制,存储资源的有效使用可能受到限制
Smart Images

Figure CN113971000B_ABST
Abstract
Description
[0001] This application claims priority and benefit to U.S. Provisional Application No. 63 / 056474, filed July 24, 2020, entitled “Separate Layered Caching for Cloud Gaming,” the entire contents of which are incorporated herein by reference. Technical Field
[0002] One or more exemplary embodiments of this disclosure relate to a separate tiered cache, and more specifically, to a system and method for a separate tiered cache for cloud content storage. Background Technology
[0003] With the development of information technology, more and more data is being remotely stored and served, such as in data centers and cloud storage systems. For example, data centers and cloud storage systems typically include networks of computing and storage resources. Computing resources can process the data stored in storage resources to provide the processed data to users. However, due to limitations in data processing resources, the effective use of storage resources may be restricted.
[0004] The information disclosed above in this background section is intended to enhance the understanding of the background art of this disclosure, and therefore may include information that does not constitute prior art. Summary of the Invention
[0005] One or more exemplary embodiments of this disclosure relate to a cloud content storage system and a method for separate hierarchical cache sharing.
[0006] According to one or more example embodiments of this disclosure, a content provider system includes: a repository configured to store a content catalog; a storage device pool configured to load content from the content catalog from the repository into one or more storage devices in the storage device pool; a first hosting device communicatively connected to the storage device pool and configured to execute content stored in the storage device pool to provide content to a first user device; a second hosting device communicatively connected to the storage device pool and configured to execute content stored in the storage device pool to provide content to a second user device; and one or more processing circuits configured to identify from the one or more storage devices in the storage device pool available storage devices for providing requested content to a requesting device in the first hosting device and the second hosting device.
[0007] In an embodiment, the first and second managed devices may be configured to communicate using a Peripheral Component Interconnect High-Speed Channel (PCIe).
[0008] In this embodiment, the first and second managed devices can be connected to the storage device pool via a network interface card (NIC) or a PCIe bus.
[0009] In an embodiment, the one or more storage devices in the storage device pool may include one or more shared namespaces, wherein the one or more shared namespaces are associated with content stored in the one or more storage devices and include partition information and logical unit numbers (LUNs) corresponding to the content stored in the one or more storage devices.
[0010] In an embodiment, the one or more processing circuits may be configured to: receive a request for requested content from at least one of a first hosting device and a second hosting device; identify a first storage device from a pool of storage devices that stores the requested content in one or more shared namespaces; and determine the available bandwidth of the first storage device for providing the requested content to the requesting device.
[0011] In an embodiment, the one or more processing circuits may be configured to: determine that the available bandwidth of the first storage device is less than a threshold bandwidth; and identify a second storage device from a pool of storage devices for providing the requested content to the requesting device.
[0012] In an embodiment, the one or more processing circuits may be configured to: determine that the requested content is not stored in one or more shared namespaces of the second storage device; determine that the second storage device has an available namespace, wherein the available namespace has sufficient space to store the requested content; determine that the available bandwidth of the second storage device is greater than the threshold bandwidth; and load the requested content from the repository into the available namespace of the second storage device.
[0013] In an embodiment, the one or more processing circuits may be configured to: identify inactive content stored in the available namespace of the second storage device; determine that the available namespace has sufficient space by removing the inactive content; and remove the inactive content from the available namespace to provide space for the requested content.
[0014] In an embodiment, the requesting device may include a local file system, and the one or more processing circuits may be configured to provide the mount location of the requested content to the local file system of the requesting device.
[0015] According to one or more example embodiments of this disclosure, a method for a content provider system, wherein the content provider system includes: a repository storing a content catalog; a storage device pool storing at least some content in the content catalog; a first hosting device communicatively connected to the storage device pool to execute content stored in the storage device pool; and a second hosting device communicatively connected to the storage device pool to execute content stored in the storage device pool, wherein the method includes: receiving a request for requested content from a requesting device in the first and second hosting devices by one or more processing circuits; and identifying available storage devices from the storage device pool for providing the requested content to the requesting device by the one or more processing circuits.
[0016] In this embodiment, the first managed device and the second managed device can communicate using the Peripheral Component Interconnect High-Speed Channel (PCIe).
[0017] In this embodiment, the first and second managed devices can be connected to the storage device pool via a network interface card (NIC) or a PCIe bus.
[0018] In an embodiment, one or more storage devices in the storage device pool may include one or more shared namespaces, wherein the one or more shared namespaces are associated with content stored in the storage device pool and include partition information and logical unit numbers (LUNs) corresponding to the content stored in the storage device pool.
[0019] In an embodiment, the method may further include: the one or more processing circuits identifying a first storage device from a pool of storage devices that stores the requested content in one or more shared namespaces; and the one or more processing circuits determining the available bandwidth of the first storage device for providing the requested content to the requesting device.
[0020] In an embodiment, the method may further include: determining, by the one or more processing circuits, that the available bandwidth of the first storage device is less than a threshold bandwidth; and identifying, by the one or more processing circuits, a second storage device from a pool of storage devices for providing the requested content to the requesting device.
[0021] In an embodiment, the method may further include: determining, by the one or more processing circuits, that the requested content is not stored in one or more shared namespaces of the second storage device; determining, by the one or more processing circuits, that the second storage device has an available namespace, wherein the available namespace has sufficient space to store the requested content; determining, by the one or more processing circuits, that the available bandwidth of the second storage device is greater than the threshold bandwidth; and loading the requested content from the repository into the available namespace of the second storage device by the one or more processing circuits.
[0022] In an embodiment, the method may further include: identifying inactive content stored in the available namespace of the second storage device by the one or more processing circuits; determining by the one or more processing circuits that the available namespace has sufficient space by removing the inactive content; and removing the inactive content from the available namespace by the one or more processing circuits to provide space for the requested content.
[0023] In an embodiment, the requesting device may include a local file system, and the method may further include: providing the mount location of the requested content to the local file system of the requesting device by the one or more processing circuits.
[0024] According to one or more example embodiments of this disclosure, a system includes: a repository configured to store a content directory; a storage device pool configured to load content from the content directory into one or more storage devices in the storage device pool; a first hosting device configured to communicate with the storage device pool using a Peripheral Component Interconnect High-Speed Channel (PCIe) interface to access content stored in the storage device pool and execute the content to stream the content to a first user device; a second hosting device configured to communicate with the storage device pool using a PCIe interface to access content stored in the storage device pool and execute the content stored in the storage device pool to stream the content to a second user device; a network interface card or PCIe bus configured to communicatively connect the storage device pool to the first and second hosting devices; and one or more processing circuitry configured to: receive a request for requested content from a requesting device in the first and second hosting devices; identify available storage devices from the storage device pool for providing the requested content to the requesting device; and provide the mount location of the requested content to the local file system of the requesting device to execute the requested content.
[0025] In an embodiment, the one or more processing circuits may be configured to: identify a first storage device storing the requested content from a pool of storage devices; determine the available bandwidth of the first storage device for providing the requested content to the requesting device; determine that the available bandwidth of the first storage device is less than a threshold bandwidth; identify a second storage device from the pool of storage devices for providing the requested content to the requesting device; load the requested content from the repository to the second storage device; and provide the mount location of the requested content stored in the second storage device to the local file system of the requesting device. Attached Figure Description
[0026] The above and other aspects and features of this disclosure will become more apparent to those skilled in the art from the following detailed description of exemplary embodiments with reference to the accompanying drawings.
[0027] Figure 1 A block diagram of a content provider system according to one or more example embodiments of the present disclosure is shown.
[0028] Figure 2 A block diagram of a content provider platform according to one or more example embodiments of the present disclosure is shown.
[0029] Figure 3 A block diagram of a storage manager according to one or more example embodiments of the present disclosure is shown.
[0030] Figure 4 A block diagram illustrating a storage device configuration according to one or more example embodiments of the present disclosure is shown.
[0031] Figures 5A-5D This is a flowchart of a method for separate hierarchical cache sharing according to one or more example embodiments of the present disclosure. Detailed Implementation
[0032] In the following description, exemplary embodiments will be illustrated with reference to the accompanying drawings, wherein the same reference numerals throughout denote the same elements. However, this disclosure may be implemented in various different forms and should not be construed as being limited to the embodiments shown herein. Rather, these embodiments are provided by way of example so that this disclosure will be thorough and complete, and will fully convey the aspects and features of this disclosure to those skilled in the art. Therefore, no treatments, elements, or techniques unnecessary for a full understanding of the aspects and features of this disclosure will be described. Unless otherwise stated, the same reference numerals denote the same elements throughout the drawings and written description, and therefore their description will not be repeated.
[0033] Typically, cloud gaming services for console-based gaming platforms enable users of such platforms to remotely run and play games stored in the cloud. For example, these cloud gaming services may host multiple physical console devices on rack servers, allowing each of these hosted devices to directly load, run, and stream the game to the user's personal device. In other words, each physical console device hosted on a rack server can load a game stored in the cloud, run the game locally, and stream the game directly to the user's personal device, allowing the user to play the game remotely without having to download the game (e.g., the entire game or a portion of the game) directly to their personal device.
[0034] For example, each hosting device may correspond to a physical console device of a console-based gaming platform, such that each hosting device may have a local processor, such as a central processing unit (e.g., CPU), a graphics processing unit (e.g., GPU), or an application processing unit (e.g., APU) corresponding to a combination of CPU / GPU and local storage resources (e.g., such as solid-state drives (SSDs)). In this case, the requested game can be loaded directly from the game repository (e.g., from cloud storage) into the local storage resources as needed. However, the local processor of each hosting device may become saturated, for example, during gameplay, so that the local storage resources of each hosting device may not be fully utilized even when the local storage resources have bandwidth and / or capacity, for example, to serve other users. Therefore, while the utilization of the local processor of each hosting device can be maximized, for example, by hosting multiple users on each hosting device, its local storage resources may still be underutilized because the utilization of local storage resources may be limited by the saturation of its local processor.
[0035] According to one or more example embodiments of this disclosure, instead of using local storage resources as the primary storage resources of the hosting device, a separate tiered cache can be provided, allowing a storage device pool comprising multiple storage devices to be shared by multiple hosting devices. For example, this allows the storage device pool to concurrently (e.g., simultaneously or at the same time) serve multiple hosting devices. For instance, a game request from a hosting device can be distributed to a suitable storage device in the storage device pool, enabling the requested game to be efficiently served by the storage device pool. In this case, a suitable storage device in the storage device pool storing the requested game can be allocated to serve the requested game to the requesting hosting device, or the requested game can be loaded from the storage repository to a suitable storage device in the storage device pool to serve the requested game to the requesting hosting device. Therefore, the local storage resources of each hosting device can be used as a local cache, for example, to store popular games for the corresponding hosting device, or to temporarily store games for active users of the corresponding hosting device when shared storage cannot serve games due to space and / or bandwidth limitations, or when games can be omitted as needed or desired. This improves the utilization of storage resources.
[0036] Figure 1 A block diagram of a content provider system according to one or more example embodiments of the present disclosure is shown.
[0037] Reference Figure 1 The content provider system 100 may include a content provider platform 102 and one or more user devices 104 to 106. One or more user devices 104 to 106 may access the content provider platform 102 via a communication network (e.g., a wide area network (WAN), local area network (LAN), the Internet, a cellular network, etc.) 108 to access content provided by the content provider platform 102. For example, in some embodiments, the content provider platform 102 may provide video content, game content, etc., that can be streamed by one or more user devices 104 to 106 via the communication network 108. Hereinafter, for convenience, the content provider system 100 may be described in the context of a cloud gaming service for a console-based gaming platform, such that the content provider platform corresponds to a cloud gaming provider platform; however, this disclosure is not limited thereto, and in various embodiments, the content provider system 100 may provide user devices with any suitable type of content, such as video streaming content, audio streaming content, data search content, etc.
[0038] Each of one or more user devices 104 to 106 may correspond to a suitable computing device to enable a user of the user device (e.g., 104 or 106) to receive (e.g., stream) content (e.g., game content) from the content provider platform 102 and to provide control signals to the content provider platform 102 to control the content (e.g., control content in a game). For example, in some embodiments, each of one or more user devices 104 to 106 may include a console device corresponding to a console-based game platform associated with the content provider platform 102, but this disclosure is not limited thereto. For example, each of user devices 104 to 106 may include any suitable computing device, such as a mobile phone, smartphone, tablet computer, PC, laptop computer, smart wearable device, etc., with at least one shell application or emulator application installed for receiving and controlling content provided by the content provider platform 102. In other examples, each of user devices 104 to 106 may include a smart TV, media streaming device, media streaming dongle, etc., to enable a user to stream media provided by the content provider platform 102. In some embodiments, each of the user devices 104 to 106 may communicate with the content provider platform 102 via the communication network 108, enabling its users to remotely select, load, and / or execute (e.g., run) games stored at the content provider platform 102.
[0039] Figure 2 A block diagram of a content provider platform according to one or more example embodiments of the present disclosure is shown.
[0040] Reference Figure 2 In one or more example embodiments of this disclosure, the content provider platform 102 may include a game server 202, cloud storage 204, and a storage device pool 206. The game server 202 may include one or more rack servers 208 and one or more processing circuits 232. Each rack server in the one or more rack servers 208 may include multiple device boards 210 to 216. Each device board 210 to 216 may correspond to a device board of a console device, such that each device board 210 to 216 can execute (e.g., run) a game on the console device. For example, in some embodiments, each device board 210 to 216 may include processing circuitry (e.g., CPU, GPU, APU, etc.) 218, an operating system 220 for the console device, a local file system 222, and local storage (e.g., a local storage device, such as an SSD) 224. Although Figure 2Rack server 208 is shown to include four or more device boards 210 to 216, but this disclosure is not limited thereto, and rack server 208 may include any suitable number of device boards, such as eight or more device boards.
[0041] In one or more exemplary embodiments of this disclosure, each of the device boards 210 to 216 of one or more rack servers 208 may share the same storage device pool 206. For example, device boards 210 to 216 of rack servers 208 may be communicatively connected to storage device pool 206 via network interface controller (NIC) 230 or a bus (e.g., a Peripheral Component Interconnect High-Speed Channel (PCIe) bus) to write to and / or read from one or more storage devices 236 to 242 of storage device pool 206. For example, in some embodiments, each of device boards 210 to 216 may be connected to the processing circuitry 232 of game server 202 via a suitable storage interface 234, and the processing circuitry 232 of game server 202 may be communicatively connected to storage device pool 206 via NIC 230 or a bus (e.g., a PCIe bus).
[0042] Storage interface 234 may (e.g., using connectors and protocols) (e.g., via NIC 230) facilitate communication between device boards 210-216 and storage device pool 206. In some embodiments, storage interface 234 may (e.g., via NIC 230 or a PCIe bus) facilitate the exchange of storage requests and responses between device boards 210-216 and storage device pool 206. In some embodiments, storage interface 234 may (e.g., via NIC 230) facilitate data transfer from and from storage device pool 206 to device boards 210-216. For example, in some embodiments, device boards 210 to 216 may exchange storage requests and responses with processing circuitry 232 via storage interface 234, and processing circuitry 232 may convert storage requests and responses from a first protocol (e.g., the protocol of storage interface 234) to a second protocol associated with NIC 230 (e.g., application programming interface (API) etc.) and / or from the second protocol to the first protocol to facilitate communication between device boards 210 to 216 and storage device pool 206.
[0043] In some embodiments, storage interface 234 (e.g., connector and protocol thereof) may include (or conform to) Peripheral Component Interconnect High-Speed Channel (PCIe), etc. However, this disclosure is not limited thereto, and in other embodiments, storage interface 234 (e.g., connector and protocol thereof) may conform to other suitable storage interfaces, such as Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Remote Direct Memory Access over Ethernet (RDMA), Serial Advanced Technology Attachment (SATA), Fibre Channel, Non-Volatile Memory High-Speed Channel (NVMe), NVMe on Architecture (NVMe-oF), etc. In other embodiments, storage interface 234 (e.g., connector and protocol thereof) may include (or conform to) various general-purpose interfaces, such as Ethernet, Universal Serial Bus (USB), etc. For convenience, storage interface 234 may be described hereinafter in the context of a PCIe interface, but this disclosure is not limited thereto.
[0044] Although storage device pool 206 is in Figure 2 The device is shown as being external to game server 202 and communicatively connected to game server 202 via NIC 230, but this disclosure is not limited thereto. For example, in other embodiments, such as Figure 2 The storage device pool 206 shown may be external to the game server 202 and communicatively connected to the game server 202 via a PCIe bus. In another example, in other embodiments, the storage device pool 206 may be implemented as internal memory of the game server 202 with its interface (e.g., storage interface 234, NIC 230, etc.) appropriately modified. Furthermore, however, this disclosure is not limited thereto, and each shared namespace in the shared namespace 402 may have any suitable number of namespaces and any suitable number of streams for each namespace, depending on its resources (e.g., storage device interfaces such as PCIe Gen3 / 4 / 5, game bandwidth requirements, capacity, resizing capabilities, etc.).
[0045] Figure 3 A block diagram of a storage manager according to one or more example embodiments of the present disclosure is shown. Figure 4 A block diagram illustrating a storage device configuration according to one or more example embodiments of the present disclosure is shown. Although Figure 4 Each of device boards 210 to 216 connected to the corresponding game server of storage device pool 206 is shown, but the present disclosure is not limited thereto, and each of device boards 210 to 216 may correspond to any suitable disk, storage medium or server implementation, such as redundant array of independent disks (RAID), platters, racks, etc.
[0046] Reference Figure 3 and Figure 4Directory manager 308 can use (e.g., monitor or access) each of the shared namespaces 402 to determine various states of a game being loaded on a corresponding storage device. For example, directory manager 308 can (e.g., via data coordinator 312) monitor updates to shared namespace 402 to determine whether a game loaded therein has finished loading. However, this disclosure is not limited thereto, and in other embodiments, directory manager 308 can receive notifications when any shared namespace in shared namespace 402 is updated (e.g., from data coordinator 312).
[0047] Storage scheduler 310 may determine from storage device pool 206 a suitable storage device that can provide the requested game to the requesting device board. In some embodiments, storage scheduler 310 may identify from storage device pool 206 one or more storage devices that can provide the requested game without loading the game from cloud storage device 204. For example, storage scheduler 310 may identify from storage device pool 206 one or more storage devices currently loading the requested game into their shared namespace 402. In some embodiments, storage scheduler 310 may identify from said one or more storage devices a suitable storage device storing the requested game to provide the requested game to the requesting device board based on metrics. For example, in some embodiments, storage scheduler 310 may determine whether any of the said one or more storage devices currently loading the requested game has sufficient bandwidth to provide the requested game to the requesting device board. In some embodiments, if more than one storage device in storage device pool 206 has the requested game currently stored therein and sufficient bandwidth to provide the requested game, storage scheduler 310 may select a suitable storage device among the storage devices currently storing the game based on a comparison of the available bandwidth of the storage devices currently storing the game, so that the load can be distributed among the storage devices.
[0048] In some embodiments, storage scheduler 310 may determine that none of the storage devices 236 to 242 in storage device pool 206 stores the requested game. In this case, storage scheduler 310 may select a suitable storage device from storage devices 236 to 242 based on various metrics to load the requested game from cloud storage 204 into its namespace 402, such that the selected storage device can provide the requested game to the requesting device board. For example, in some embodiments, when a storage device in storage device pool 206 does not currently have the requested game loaded therein (e.g., the requested game is not loaded in any namespace in its namespace 402), the storage device may load the requested game, the storage device having sufficient space for the requested game, and the aggregate bandwidth of active games including the requested game (e.g., games currently provided by or streamed from the storage device) is less than the bandwidth of the storage device (e.g., available bandwidth or total available bandwidth).
[0049] Data coordinator 312 can configure storage devices 236 to 242 of storage device pool 206 and can control writes (e.g., loads) to and reads from storage device pool 206. For example, when storage scheduler 310 determines that a requested game should be loaded into the available namespace 402 of a suitable storage device in storage device pool 206, data coordinator 312 can read the requested game (e.g., the requested game title) from cloud storage 204 and load (e.g., make writable) the requested game into the suitable storage device in storage device pool 206. In some embodiments, data coordinator 312 can update the local file system of each device board 210 to 216 to ensure that the local file system 222 of each device board 210 to 216 has the latest updates to storage devices 236 to 242 (e.g., updates to namespace 402). Therefore, in some embodiments, the data coordinator 312 may remount namespace 402 to the local file system 222 of each of the device boards 210 to 216 as needed or desired (e.g., when there is an update to any namespace in namespace 402 of storage devices 236 to 242), instead of using a distributed file system (e.g., such as a digital file system) that may increase latency, complexity and cost.
[0050] Figures 5A-5D This is a flowchart of a method for separate hierarchical cache sharing according to one or more example embodiments of the present disclosure.
[0051] However, this disclosure is not limited to Figures 5A-5DThe order or number of operations of method 500 shown can be modified to any desired order or number of operations as recognized by those skilled in the art. For example, in some embodiments, the order may be varied, or the method may include fewer or additional operations. Furthermore, the operations shown in method 500 can be performed by any suitable component or any suitable combination of components from one or more of the example embodiments described above.
[0052] Reference Figure 5A Method 500 begins, and at box 502, a game selection is received from a user device associated with a device board (e.g., a device panel). For example, in some embodiments, a user device (e.g., 104 or 106) may be used to communicate with one of the device boards 210-216 to select a game from a game catalog provided by content provider platform 102. At box 504, the location of the game is requested. For example, the device board may request the location of the game from catalog manager 308, and method 500 may continue at box 516, which will be referred to below. Figure 5B To describe in more detail.
[0053] Still refer to Figure 5A In box 506, it is determined whether a valid location has been received. For example, in some embodiments, in box 506, the device board may determine whether a valid location has been received from the directory manager 308, and if not (e.g., no in 506), then in box 508 it is determined whether a load completion notification has been returned from the directory manager 308. For example, in some embodiments, in box 506, the device board may determine whether the directory manager 308 has returned the game location and timestamp (e.g., see [link to relevant documentation]). Figure 5B In box 520), and in box 508, the device panel can determine whether the catalog manager 308 returns a load completion notification with the game location and timestamp (see, for example, see...). Figure 5B (See box 540 in the diagram). If not (for example, no in 508), the device board may continue to wait until a load completion notification is received in box 508.
[0054] On the other hand, if the device board receives a location and timestamp (e.g., yes in 506 or 508), then at block 510 it can be determined whether the device board's local file system 222 is available. For example, in some embodiments, at block 510, the device board can request the data coordinator 312 to check whether the device board's local file system 222 has an updated game location, and method 500 can continue at block 544, which will be referred to below. Figure 5C To describe in more detail.
[0055] Still refer to Figure 5AIn box 512, it can be determined whether the game is available on the local file system. For example, in some embodiments, the device board may wait for a notification indicating that its local file system 222 has been updated (e.g., see...). Figure 5C (See box 552 in the diagram). If the notification has not yet been received (e.g., no in box 512), the device board may continue to wait for its local file system 222 to be mounted (e.g., see box 552 in the diagram). Figure 5C (See box 546 in the image) or be remounted (e.g., see [link]). Figure 5C (See box 550 in the diagram). On the other hand, if the notification is received (e.g., yes in box 512), then in box 514, the device board can load the game into its internal memory via its local file system 222 to run (e.g., execute) the game, and method 500 can end.
[0056] Reference Figure 5B In box 504, when the device board requests the location of the game from the directory manager 308, method 500 may proceed as follows: Figure 5B The process continues as shown, such that at block 516 a suitable storage device for providing the game can be requested. For example, in some embodiments, the directory manager 308 may communicate with the storage scheduler 310 to determine from the storage device pool 206 a suitable storage device that can provide the requested game, and method 500 may continue at block 554, which will be referred to below. Figure 5D A more detailed description follows. In box 518, it can be determined whether service storage device information has been received. For example, in some embodiments, the directory manager 308 can determine whether the storage scheduler 310 has returned storage device information that can provide a suitable storage device for the game (see, for example, see...). Figure 5D In box 558, the game can be loaded directly from a repository (e.g., cloud storage 204) without having to load the game from a repository. If this is the case (e.g., yes in box 518), then the directory manager 308 can return the game location and timestamp in box 520, and method 500 can... Figure 5A The process continues in box 506, causing the device board to request local file system availability in box 510.
[0057] On the other hand, if no service storage device information is received (e.g., no in box 518), it can be determined in box 522 whether cache storage device information has been received. For example, in some embodiments, directory manager 308 can determine whether storage scheduler 310 has returned cache storage device information for a suitable storage device that can be loaded (e.g., stored) from a repository (e.g., cloud storage 204) used to provide the requested game (e.g., see [link to relevant documentation]). Figure 5D (Box 564 in the middle).
[0058] If not (e.g., No in box 522), then in box 523 it is determined whether the requesting device board has local storage 224. For example, catalog manager 308 may check whether the requesting device board has local storage 224. If so (e.g., Yes in box 523), then in box 525 the requested game can be loaded directly from the repository to the requesting device board's local storage 224. For example, catalog manager 308 may (e.g., using data coordinator 312) load the game directly from cloud storage 204 to the requesting device board's local storage 224, and in this case, storage pool 206 can be bypassed. Otherwise (e.g., No in box 523), the method may loop back to box 516, so the user may have to wait until a suitable storage device becomes available.
[0059] On the other hand, if cache storage device information is received (e.g., yes in box 522), the game status can be changed to loading in box 524, a user can be registered for loading completion notification in box 526, and game loading can begin in box 528. For example, in some embodiments, the directory manager 308 can notify the data coordinator 312 to load the game from cloud storage 204 to an available storage device based on cache storage device information received from the storage scheduler 310. In this case, the data coordinator 312 can read the game from cloud storage 204 to load the game into an available storage device (e.g., an available namespace of the available storage device), and a wait message can be returned in box 530. For example, because no valid location was received in box 506 (e.g., see...). Figure 5A Therefore, the device board can continue to wait for the loading completion notification in box 508, and method 500 can continue in operation 532 to determine whether the game has been successfully loaded.
[0060] In box 532, it can be determined whether the game has been successfully loaded. For example, in some embodiments, when the data coordinator 312 finishes reading the game from cloud storage 204, the data coordinator 312 can notify the directory manager 308 that the game loading is complete. If not (e.g., no in box 532), the directory manager 308 can continue to wait for updates in box 532. On the other hand, if the game has been successfully loaded (e.g., yes in box 532), the game's status can be changed to "cached" in box 534, and in box 536 it can be determined whether any user is waiting for loading to complete. For example, in some embodiments, the directory manager 308 can determine whether the user who requested to load the game is still online, and / or whether there are any pending wait messages for users waiting for the game to be loaded.
[0061] If not (e.g., no in box 536), an error state may occur in box 538, and method 500 may terminate. Alternatively, if there is a user waiting for loading to complete in box 536, a notification with the game location and timestamp (e.g., a loading completion notification) may be returned in box 540, and the method may continue in operation 510 (e.g., see [link to relevant documentation]). Figure 5A For example, in some embodiments, the directory manager 308 may send the notification to a requesting device board, and the device board may request local file system availability for the loaded game in box 510.
[0062] Reference Figure 5C When the device board requests local file system availability for the loaded game in frame 510, method 500 may, as follows: Figure 5C The process continues as shown, such that in block 544 it can be determined whether the game location (e.g., namespace, partition, LUN, etc.) is mounted to the local file system 222 of the requesting device board. For example, in some embodiments, the data coordinator 312 may communicate with the FS coordinator of the local file system 222 associated with the device board to determine whether the local file system 222 has updated namespace information corresponding to the loaded game. In this case, because each of the device boards (e.g., device boards) may have its own local file system 222 and can load the game to any of the storage devices 236 to 242 of the storage device pool 206 at any time, when the storage device pool 206 is updated by one of the device boards, other device boards may not be aware of the update because their local file systems 222 may have older namespace information. Therefore, in some embodiments, the data coordinator 312 (e.g., via the FS coordinator) may mount or remount the updated namespace information corresponding to the loaded game to the local file system 222.
[0063] For example, in some embodiments, if the game location (e.g., namespace, partition, LUN, etc.) is not mounted to the local file system 222 (e.g., no in block 544), then the game location may be mounted to the local file system 222 in block 546, and a notification that the local file system 222 is available may be returned in block 552. For example, in some embodiments, the data coordinator 312 may communicate with the directory manager 308 to determine whether the local file system 222 has the current game location, and if not (e.g., no in operation 544), then the data coordinator 312 may mount the namespace (e.g., partition and LUN) corresponding to the game location to the local file system 222.
[0064] On the other hand, if the game location is already mounted on the local file system (e.g., yes in box 544), then it can be determined in box 548 whether the mount point of the game location is old. For example, because the contents stored in storage devices 236 to 242 of storage device pool 206 can be modified at any time by the device board's data coordinator 312, the game location can be changed, and the game location mounted on the local file system 222 may include old game location information.
[0065] If the game location mounted on local file system 222 is not old (e.g., no in box 548), then a notification that local file system 222 is available can be returned in box 552, and the method can continue in box 514 (e.g., see...). Figure 5A This allows the game to be loaded into the internal memory of the requesting device board (e.g., the corresponding device board) via the local file system 222 for execution (e.g., to run). Alternatively, if the mount point is old (e.g., yes in box 548), the game location can be remounted to the local file system 222, and the notification can be returned, allowing method 500 to continue at box 514 (e.g., see...). Figure 5A ).
[0066] Reference Figure 5D When the directory manager 308 requests available storage devices from the storage device pool 206 in box 516 to provide the requested game (for example, see...), Figure 5B Method 500 can be used as follows Figure 5D The process continues as shown, such that in block 554 it can be determined whether any of the storage devices 236 to 242 in storage device pool 206 currently caches (e.g., whether it currently stores) the requested game. For example, in some embodiments, storage scheduler 310 may check the namespace of each of the storage devices 236 to 242 to (e.g., using directory manager 308) determine whether any of the storage devices 236 to 242 currently has the requested game.
[0067] If so (e.g., Yes in box 554), then in box 556 it can be determined whether any storage device currently caching the requested game has sufficient bandwidth to provide the requested game. For example, storage scheduler 310 can determine whether the load (e.g., number of users) currently provided by the storage device currently caching the requested game is greater than or equal to a threshold load value for that storage device. If the storage device currently caching the requested game has sufficient bandwidth to provide the requested game to the requesting device board (e.g., Yes in box 556), then in operation 558 storage information for that storage device is returned, and method 500 can continue in box 520 (e.g., see...). Figure 5B ).
[0068] On the other hand, if none of the storage devices 236 to 242 in storage device pool 206 are currently caching the requested game (e.g., no in box 554) and / or have sufficient bandwidth to provide the requested game (e.g., no in box 556), then in box 560 it can be determined whether any of the storage devices 236 to 242 is available to cache (e.g., load) the requested game from a repository (e.g., cloud storage 204). For example, in some embodiments, storage scheduler 310 may check the namespace of each of the storage devices 236 to 242 to determine whether any of the storage devices 236 to 242 has an available namespace (e.g., a free namespace) with sufficient space to cache the requested game.
[0069] If so (e.g., yes in box 560), then in box 562 it can be determined whether any of the available storage devices 236 to 242 has sufficient bandwidth to provide the requested game. For example, storage scheduler 310 can determine whether the current load (e.g., number of users) provided by the available storage device is greater than or equal to the threshold load value of that storage device. If the available storage device has sufficient bandwidth to provide the requested game to the requesting device board (e.g., yes in box 562), then in box 564 storage information for that available storage device is returned, and method 500 can continue in box 524 (e.g., see...). Figure 5B This allows the requested game to be loaded (e.g., saved) into the available storage device.
[0070] On the other hand, if none of the storage devices 236 to 242 in storage device pool 206 are available for caching games (e.g., no in box 560) and / or have sufficient bandwidth to provide the requested game (e.g., no in box 562), then in box 566 it can be determined whether any of the storage devices 236 to 242 has one or more inactive games. For example, in some embodiments, storage scheduler 310 may (e.g., using directory manager 308) check the namespace of each storage device 236 to 242 to determine whether any of the storage devices 236 to 242 has a namespace for caching inactive games (e.g., games not currently running on the device board). If so (e.g., yes in box 566), then in box 568 it can be determined whether any of the storage devices 236 to 242 with inactive games has sufficient space by removing (e.g., by removing) the inactive games. For example, in some embodiments, if an inactive game is removed from a namespace, the storage scheduler 310 may determine whether the namespace containing the inactive game is large enough to cache the requested game.
[0071] If the namespace size is sufficient to cache the requested game (e.g., yes in box 568), then in box 570 it can be determined whether the storage device with the inactive game has sufficient bandwidth to provide the requested game. For example, storage scheduler 310 can determine whether the load currently provided by the storage device with the inactive game (e.g., the number of users) is greater than or equal to a threshold load value for that storage device. If the storage device has sufficient bandwidth to provide the requested game to the requesting device board (e.g., yes in box 570), then in box 574 the inactive game is removed (e.g., removed) from the storage device, and in box 564 storage information for that storage device is returned. In this case, method 500 can continue in box 524 (e.g., see...). Figure 5B This causes the requested game to be loaded (e.g., saved) in the identified storage device.
[0072] On the other hand, if no storage device in storage devices 236 to 242 of storage device pool 206 has an inactive game (e.g., no in box 566), no storage device has sufficient space even when the inactive game is removed from the storage device (e.g., no in box 568), and / or no storage device has sufficient bandwidth to provide the requested game (e.g., no in box 570), then an error state may occur in box 572, and method 500 may terminate, allowing the requesting device board to wait until a suitable storage device becomes available to provide the requested game.
[0073] In the accompanying drawings, for clarity, the relative dimensions of elements, layers, and regions may be exaggerated and / or simplified. For ease of interpretation, spatial relative terms such as “below,” “under,” “lower,” “below,” “above,” “upper,” etc., are used herein to describe the relationship of one element or feature as shown in the figures to one or more other elements or features. It will be understood that, in addition to the orientation shown in the figures, the spatial relative terms are also intended to cover different orientations of the device during use or operation. For example, if the device in the figures is flipped, an element described as “below,” “under,” or “below” other elements or features will be oriented as “above” other elements or features. Thus, the example terms “below” and “below” can cover both the orientations of above and below. The device may be oriented in other ways (e.g., rotated 90 degrees or in other orientations), and the spatial relative descriptive terms used herein should be interpreted accordingly.
[0074] It will be understood that although the terms “first,” “second,” “third,” etc., may be used herein to describe various elements, components, regions, layers, and / or portions, these elements, components, regions, layers, and / or portions should not be limited by these terms. These terms are used to distinguish one element, component, region, layer, or portion from another element, component, region, layer, or portion. Therefore, without departing from the spirit and scope of this disclosure, the first element, component, region, layer, or portion described below may be referred to as a second element, component, region, layer, or portion.
[0075] It will be understood that when an element or layer is referred to as being “on,” “connected to,” or “coupled to” another element or layer, it may be directly on, connected to, or coupled to the other element or layer, or there may be one or more intermediate elements or layers. Furthermore, it will be understood that when an element or layer is referred to as being “between” two elements or layers, it may be the only element or layer between the two elements or layers, or there may be one or more intermediate elements or layers.
[0076] The terminology used herein is for the purpose of describing particular embodiments and is not intended to limit this disclosure. As used herein, the singular forms “a” and “an” are also intended to include the plural forms unless the context clearly indicates otherwise. It will be further understood that the terms “comprising,” “including,” “including,” “having,” “possessing,” and “having,” when used in this specification, designate the presence of the stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. As used herein, the term “and / or” includes any and all combinations of one or more of the associated listed items. Expressions such as “at least one of…” following a list of elements modify the entire list of elements, not the individual elements of the list.
[0077] As used herein, the terms “substantially,” “about,” and similar terms are used as terms of approximation rather than terms of degree and are intended to take into account the inherent biases of measured or calculated values that will be recognized by one of ordinary skill in the art. Furthermore, when describing embodiments of this disclosure, the use of “may” refers to “one or more embodiments of this disclosure.” As used herein, the terms “using,” “using…,” and “utilizing” are to be considered synonymous with the terms “utilizing,” “using…,” and “exploiting,” respectively. Additionally, the term “exemplary” is intended to refer to an example or illustration.
[0078] Unless otherwise defined, all terms used herein (including technical and scientific terms) shall have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains. It will be further understood that terms such as those defined in common dictionaries shall be interpreted as having the same meaning as they have in the relevant field and / or the context of this specification, and shall not be interpreted in an idealized or overly formal sense unless expressly defined herein.
[0079] While some exemplary embodiments have been described, it will be readily understood by those skilled in the art that various modifications may be made to the exemplary embodiments without departing from the spirit and scope of this disclosure. It will be understood that, unless otherwise stated, the description of features or aspects in each embodiment should generally be considered applicable to other similar features or aspects in other embodiments. Therefore, it will be apparent to those skilled in the art that, unless specifically instructed otherwise, features, characteristics, and / or elements described in connection with particular embodiments may be used alone or in combination with features, characteristics, and / or elements described in connection with other embodiments. Therefore, it should be understood that the foregoing is illustrative of various exemplary embodiments and should not be construed as limiting to the specific exemplary embodiments disclosed herein, and various modifications to the disclosed exemplary embodiments and other exemplary embodiments are intended to be included within the spirit and scope of this disclosure as defined in the appended claims and their equivalents.
Claims
1. A content provider system, comprising: The repository is configured as a directory for storing content. A storage device pool is configured to load content from a repository into a shared namespace of one or more storage devices within the storage device pool; The first hosting device is communicatively connected to the storage pool and configured to execute content stored in the storage pool to provide the content to the first user device. The second hosting device is communicatively connected to the storage pool and configured to execute content stored in the storage pool to provide the content to the second user device. as well as One or more processing circuits are configured to identify available storage devices from the one or more storage devices in the storage device pool for providing the requested content to the requesting device in the first hosting device and the second hosting device. Each shared storage device pool in the first and second hosting devices, When there is an update to any shared namespace in the shared namespace of the one or more storage devices, the local file system of each of the first and second managed devices is updated to ensure that the local file system of each of the first and second managed devices has the latest update of the shared namespace of the one or more storage devices.
2. The system as claimed in claim 1, wherein, The first and second hosting devices are configured to communicate using a high-speed PCIe interconnect channel for peripheral components.
3. The system as described in claim 2, wherein, The first and second managed devices are connected to the storage device pool via a network interface card (NIC) or a PCIe bus.
4. The system as claimed in claim 1, wherein, The one or more storage devices in the storage device pool include one or more shared namespaces, wherein the one or more shared namespaces are associated with content stored in the one or more storage devices and include partition information and logical unit numbers (LUNs) corresponding to the content stored in the one or more storage devices.
5. The system as described in claim 4, wherein, The one or more processing circuits are configured to: Receive a request for the requested content from the requesting device; Identify from the pool of storage devices a first storage device that stores the requested content in one or more shared namespaces; and Determine the available bandwidth of the first storage device for providing the requested content to the requesting device.
6. The system of claim 5, wherein, The one or more processing circuits are configured to: It is determined that the available bandwidth of the first storage device is less than the threshold bandwidth; and Identify a second storage device from the storage device pool for providing the requested content to the requesting device.
7. The system of claim 6, wherein, The one or more processing circuits are configured to: It is determined that the requested content is not stored in one or more shared namespaces of the second storage device; It is determined that the second storage device has an available namespace, wherein the available namespace has sufficient space to store the requested content; It is determined that the available bandwidth of the second storage device is greater than the threshold bandwidth; and The requested content is loaded from the repository into the available namespace of the second storage device.
8. The system of claim 7, wherein, The one or more processing circuits are configured to: Identify inactive content stored in the available namespace of the second storage device; It was determined that the available namespace had sufficient space by removing the inactive content; and Remove the inactive content from the available namespace to make room for the requested content.
9. The system as claimed in claim 1, wherein, The requesting device includes a local file system, and the one or more processing circuits are configured to provide the mount location of the requested content to the local file system of the requesting device.
10. A method for a content provider system, wherein, The content provider system includes: a repository for storing a content catalog; a storage device pool for loading at least some content from the content catalog from the repository into a shared namespace of one or more storage devices in the storage device pool; a first hosting device communicatively connected to the storage device pool to execute content stored in the storage device pool; and a second hosting device communicatively connected to the storage device pool to execute content stored in the storage device pool, wherein the method includes: A request for the requested content is received from the requesting device in the first and second hosting devices by one or more processing circuits; and The one or more processing circuits identify available storage devices from the storage device pool for providing the requested content to the requesting device. Each shared storage device pool in the first and second hosting devices, When there is an update to any shared namespace in the shared namespace of the one or more storage devices, the local file system of each of the first and second managed devices is updated to ensure that the local file system of each of the first and second managed devices has the latest update of the shared namespace of the one or more storage devices.
11. The method of claim 10, wherein, The first and second managed devices communicate using a high-speed PCIe interconnect channel via peripheral components.
12. The method of claim 11, wherein, The first and second managed devices are connected to the storage device pool via a network interface card (NIC) or a PCIe bus.
13. The method of claim 10, wherein, One or more storage devices in a storage device pool include one or more shared namespaces, wherein the one or more shared namespaces are associated with content stored in the storage device pool and include partition information and logical unit numbers (LUNs) corresponding to the content stored in the storage device pool.
14. The method of claim 13, further comprising: The one or more processing circuits identify from the pool of storage devices a first storage device that stores the requested content in the one or more shared namespaces; and The one or more processing circuits determine the available bandwidth of the first storage device for providing the requested content to the requesting device.
15. The method of claim 14, further comprising: The one or more processing circuits determine that the available bandwidth of the first storage device is less than a threshold bandwidth; and The one or more processing circuits identify a second storage device from the storage device pool for providing the requested content to the requesting device.
16. The method of claim 15, further comprising: The one or more processing circuits determine that the requested content is not stored in one or more shared namespaces of the second storage device; The one or more processing circuits determine that the second storage device has an available namespace, wherein the available namespace has sufficient space to store the requested content; The one or more processing circuits determine that the available bandwidth of the second storage device is greater than the threshold bandwidth; and The requested content is loaded from the repository into the available namespace of the second storage device by one or more processing circuits.
17. The method of claim 16, further comprising: The one or more processing circuits identify inactive content stored in the available namespace of the second storage device; The one or more processing circuits determine that the available namespace has sufficient space by removing the inactive content; and The inactive content is removed from the available namespace by one or more processing circuits to provide space for the requested content.
18. The method of claim 10, wherein, The requesting device includes a local file system, and the method further includes: The mount location of the requested content is provided to the local file system of the requesting device by one or more processing circuits.
19. A system comprising: The repository is configured as a directory for storing content. A storage device pool is configured to load content from a repository into a shared namespace of one or more storage devices within the storage device pool; The first hosting device is configured to communicate with the storage device pool using a peripheral component interconnect high-speed channel PCIe interface to access content stored in the storage device pool and execute content stored in the storage device pool to stream the content to the first user device. The second hosting device is configured to communicate with the storage device pool using a PCIe interface to access content stored in the storage device pool and to execute content stored in the storage device pool to stream the content to the second user device. A network interface card or PCIe bus is configured to communicatively connect a pool of storage devices to a first hosting device and a second hosting device. as well as One or more processing circuits are configured as follows: Receive a request for the requested content from the requesting device in the first and second hosting devices; Identify available storage devices from the storage device pool for providing the requested content to the requesting device; and The mount location of the requested content is provided to the local file system of the requesting device to execute the requested content. Each shared storage device pool in the first and second hosting devices, When there is an update to any shared namespace in the shared namespace of the one or more storage devices, the local file system of each of the first and second managed devices is updated to ensure that the local file system of each of the first and second managed devices has the latest update of the shared namespace of the one or more storage devices.
20. The system of claim 19, wherein, The one or more processing circuits are configured to: Identify the first storage device from the pool of storage devices that stores the requested content; Determine the available bandwidth of the first storage device for providing the requested content to the requesting device; It is determined that the available bandwidth of the first storage device is less than the threshold bandwidth; Identify a second storage device from the storage device pool for providing the requested content to the requesting device; Load the requested content from the repository into the second storage device; and The mount location of the requested content stored in the second storage device is provided to the local file system of the requesting device.
Citation Information
Patent Citations
Peer-node global server load balance media content delivery method and system
CN104902340A
Enabling Virtual Functions on Storage Media
CN110830392A
Leveraging microservice containers to provide tenant isolation in a multi-tenant API gateway
CN111279314A