Patent Publication Number: US-2023161776-A1

Title: Federation of data during query time in computing systems

Description:
CROSS-REFERENCE TO RELATED APPLICATION(S) 
     This application is a non-provisional of and claims priority to U.S. Provisional Application No. 63/281,795, filed on Nov. 22, 2021. 
    
    
     BACKGROUND 
     Distributed computing systems typically include routers, switches, bridges, and other types of network devices that interconnect large numbers of servers, network storage devices, or other computing devices. The individual servers can host one or more virtual machines (“VMs”), containers, virtual switches, or other virtualized functions. The virtual machines or containers can facilitate execution of suitable applications for individual users to provide to the users desired cloud services or other suitable computing services. 
     SUMMARY 
     This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. 
     Datacenters or other large-scale distributed computing systems can provide computing resources such as processing power and data storage as computing services accessible to tenants via a computer network. To facilitate ready access, data relevant to a user, group, or site of a tenant such as an organization can be stored in a dedicated network location referred to as a shard. The shard can be a physical and/or logical storage location that contains emails, chats, instant messages, documents, or other types of data with which the user, group, or site has interacted. During operation, copies of a file relevant to multiple users, groups, or sites can be replicated to respective shards such that each shard can contain a copy of the same file for ready access. For example, copies of a document initially created by a first user and subsequently modified by a second user can be replicated to the shards of both the first and second users. Thus, both the first and second users can readily query for and access the modified document in respective shards. 
     Though dedicated shards for individual users can facilitate fast and efficient query of and access to stored data, data replication to the shards may not always be possible. When a user is a part of a tenant across multiple geographic regions, company policies and/or legal requirements may prevent some or all user data to be copied from one geographic region to another. For example, the European Union does not permit automatic copying of user data from Europe to Asia. Instead, user data can only be copied from Europe to Asia in response to a user request, such as during query time. This restriction can negatively impact accuracy of query results when some data relevant to a user may be absent in the shard of the user. For instance, a user resides in Asia and has created or modified files in Europe may not have ready access to the created or modified files in Europe because of the restriction of proactively copying of the files from Europe to the user&#39;s shard in Asia. 
     Several embodiments of the disclosed technology can address certain aspects of the foregoing drawback by implementing (1) a tenant-wide shard that is configured to store data that cannot be proactively copied from one geographic region to another; and (2) a file reference in a shard of a user in one geographic region for locating a copy of a file stored in the tenant-wide shard in another geographic region during query time. In certain implementations, a file management system can be configured to provide a file tracker configured to detect that a file has been created, modified, viewed, commented on, or otherwise interacted with in a geographic region. In response to detecting a user interaction with a file, the file tracker can register the file as revised in, for instance, a file database. In other implementations, the file tracker can provide notification of the detected file interaction to other components of the file management system automatically or in other suitable manners. 
     The file management system can also provide a file processor that is configured to monitor for any revised files registered in the file database. Upon detecting that a revised file is registered in the file database by the file tracker, the file processor can be configured to (1) identify a physical location of the file; and (2) determine whether the file is to be replicated to other physical location(s). For instance, in the example above, upon detecting that the user residing in Asia has modified a file residing in Europe, the file processor can be configured to determine that a copy of the modified file may be replicated to the user&#39;s shard in Asia. 
     Upon determining that replication of the file may be performed, the file processor can be configured to determine whether such replication is permitted under company policies and/or legal requirements based on the identified physical location of the file and the physical location of a replication destination such as the user&#39;s shard. Upon determining that replication of the file is permitted, for instance, the file and the user&#39;s shard are co-located in a single geographic region, a copy of the file can be replicated to the user&#39;s shard. On the other hand, as in the example above in which the file is modified in Europe while the user&#39;s shard is in Asia, the file processor can determine that replication is not permitted under European Union regulations or other suitable requirements. 
     In response, the file processor can be configured to (1) store the modified file in a tenant-wide shard in Europe; and (2) creating a file reference to the stored file in the shard of the user in Asia. The tenant-wide shard can be configured to contain data that the file processor has determined that replication to other geographic regions is not permitted. In certain embodiments, a tenant (e.g., a corporation) can have a single tenant-wide shard in a geographic region for multiple users of the tenant. In other embodiments, a single tenant-wide shard can be configured to contain data from multiple geographic regions that may not be replicated to additional geographic regions. For instance, a single tenant-wide shard may be configured to contain data from both North America and South America. In further embodiments, the tenant can have multiple tenant-wide shards located in a single geographic region. 
     In certain embodiments, the created file reference can include a file identification string/number, a Universal Resource Locator (URL) of the stored file in the tenant-wide shard, or other suitable types of identifiers or pointers to the corresponding file stored in the tenant-wide shard in another geographic region. In other embodiments, the file reference can also include metadata, such as a file name, a date/time of creation/modification, created by, last modified by, or other suitable information permitted under applicable regulations. The file processor can also be configured to attach metadata to the file stored at the tenant-wide shard to indicate that a file reference to the file has been created in the user&#39;s shard in another geographic region, such as Asia. 
     The file reference created in the user shard and the file stored in the tenant-wide shard can facilitate ready query and access of the file by the user across different geographic regions. For example, a user can submit a query to a search engine of the file management system for any files recently modified by the user. In response, the search engine can be configured to search all files and file references in the user&#39;s shard. Upon identifying a file reference during the search, the search engine can be configured to use the file reference to retrieve a copy of or “hydrate” the corresponding file in an ad hoc basis. For instance, in the example above, upon identifying the file reference, the search engine can submit a query to the tenant-wide shard in Europe with the file reference. In response, the tenant-wide shard can provide a copy of the corresponding file to the search engine to be output to the user. As such, the file reference stored in the user&#39;s shard in Asia and the file stored in the tenant-wide shard in Europe are combined or “federated” during query time to provide ready access of the file to the user. Subsequently, information in the file reference can be combined with the received file and the file reference can be deleted from the user shard. 
     Several embodiments of the disclosed technology can thus provide efficient query and access to files stored across geographic regions while complying with applicable company policies and/or legal regulations in one or more of the geographic regions. Instead of replicating all files interacted with by a user into the user&#39;s shard in a geographic region, file references of certain files can be used as placeholders for non-replicable files. To facilitate ready hydration of such non-replicable files during query time, the tenant-wide shard can be configured as a single point of access. As such, fan-out operations to locate non-replicable files during query time can be avoided to reduce latency of hydrating such non-replicable files. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG.  1    is a schematic diagram illustrating a distributed computing system implementing federation of data during query time in accordance with embodiments of the disclosed technology. 
         FIGS.  2 A- 2 D  are schematic diagrams illustrating example operations of the distributed computing system  100  in  FIG.  1    for federating data during query time in accordance with embodiments of the disclosed technology. 
         FIGS.  3 A and  3 B  are flowcharts illustrating processes of federating of data during query time in accordance with embodiments of the disclosed technology. 
         FIG.  4    is a computing device suitable for certain components of the distributed computing system in  FIG.  1   . 
     
    
    
     DETAILED DESCRIPTION 
     Certain embodiments of systems, devices, components, modules, routines, data structures, and processes for federating data during query time in datacenters or other suitable distributed computing systems are described below. In the following description, specific details of components are included to provide a thorough understanding of certain embodiments of the disclosed technology. A person skilled in the relevant art will also understand that the technology can have additional embodiments. The technology can also be practiced without several of the details of the embodiments described below with reference to  FIGS.  1 - 4   . 
     As described herein, a distributed computing system can include an interconnected computer network having a plurality of network devices that interconnect a plurality of servers or hosts to one another or to external networks (e.g., the Internet). At least some of the servers or hosts can be in, for example, different datacenters at diverse geographic locations. A network device can include a physical or virtual network device, examples of which include physical or virtual routers, switches, hubs, bridges, load balancers, security gateways, or firewalls. A host can include a computing device configured to implement, for instance, one or more virtual machines, containers, or other suitable virtualized components. For example, a host can include a server having a hypervisor configured to support one or more virtual machines. In another example, a host can include a virtual machine hosting one or more containers or other suitable types of virtual components. 
     Computer system resource or computing resource can include any physical or virtual component of limited availability within a distributed computing system. Example computing resource can include processor capacities (e.g., CPU), network capacities (e.g., network connections and network bandwidth), and computer readable storage capacities (e.g., memory blocks in solid state devices). Executing an application in a computer system can consume various amount of computing assets. For example, executing an application for voice-over-IP conference can consume an amount of computing and network assets. In another example, executing an application of database management can consume an amount of processor capacities and storage capacities. 
     A computing service can provide computing resources to users over a computer network such as the Internet. Common examples of computing services include software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS). SaaS is a software distribution technique in which software applications are hosted by a cloud service provider in, for instance, datacenters, and accessed by users over a computer network. PaaS generally refers to delivery of operating systems and associated services over the computer network without requiring downloads or installation. IaaS generally refers to outsourcing equipment used to support storage, hardware, servers, network devices, or other components, all of which are made accessible over a computer network. 
       FIG.  1    is a schematic diagram illustrating a distributed computing system  100  implementing federation of data during query time in accordance with embodiments of the disclosed technology. As shown in  FIG.  1   , the distributed computing system  100  can include a computer network  104  interconnecting client devices  102  corresponding to users  101 , a file management server  106 , a directory server  112 , and one or more web servers  118 . The computer network  104  can include an enterprise intranet, a wide area network, the Internet, or other suitable types of networks. 
     In certain embodiments, the file management server  106 , the directory server  112 , and the web servers  118  can each include one or more interconnected computer servers, as shown in  FIG.  1   . In other embodiments, the foregoing components of the distributed computing system  100  can each include a cloud-based service hosted on one or more remote computing facilities such as datacenters. In further embodiments, certain components (e.g., the web servers  118 ) may be omitted from the distributed computing system  100  in  FIG.  1   , and the corresponding functions can be provided by external computing systems (not shown). 
     The distributed computing system  100  can also include a network repository  108  operatively coupled to the web servers  118  and a network storage  114  operatively coupled to the directory server  112 . As shown in  FIG.  1   , the network repository  108  can be configured to store records of user files  110  accessible to the users  101  via the client devices  102  and the computer network  104 . The user files  110  can include any suitable application data created, used, interacted with, or otherwise accessible to the users  110 . For example, examples of the user files  110  can include documents, images, videos, or other suitable types of digital objects. 
     The network storage  114  can be configured to store records of user account data  116 . Example user account data  116  include usernames, user locations, user alias, user pictures, user contact information, access control credentials, and/or other suitable types of user information. In accordance with embodiments of the disclosed technology, the user account data  116  can also include data representing a geographic location in which a dedicated storage location or “shard” (shown in  FIGS.  2 A- 2 D ) corresponding to each of the users  101  is located. The geographic location can identity a geographic region (e.g., the European Union), a country (e.g., Ireland), a state/province (e.g., Connacht), a county (e.g., Roscommon), a city (e.g., Dublin), a datacenter, one or more racks in a datacenter, or other suitable location. In certain embodiments, an administrator (not shown) can configure the geographic location for each user  101  when the user account data  116  is created and/or modified. In other embodiments, the geographic location for each user  101  can be automatically set, at least initially, to a default geographic location of the user  101 . In further embodiments, the geographic location can be set, reset, or modified by the users  101  and/or the administer in other suitable manners. 
     Even though particular components and associated arrangements of the distributed computing system  100  are shown in  FIG.  1   , in other embodiments, the distributed computing system  100  can include additional and/or different components. For example, in certain embodiments, the network repository  108  and the network storage  114  can be combined into a single physical or logical storage space accessible via the computer network  104 . In further embodiments, the distributed computing system  100  can also include additional servers, network storages, load balancers, or other suitable components. 
     The client devices  102  can individually include a computing device that facilitates access to the network repository  108  via the computer network  104  by the users  101  (identified as first, second, and third users  101   a - 101   c , respectively). For example, in the illustrated embodiment, the first client device  102   a  is a laptop computer. The second client device  102   b  is a desktop computer. The third client device  102   c  is a tablet computer. In other embodiments, the client devices  102  can also include smartphones, tablets, or other suitable computing devices. Even though three users  101   a - 101   c  are shown in  FIG.  1    for illustration purposes, in other embodiments, the distributed computing system  100  can facilitate any suitable number of users  101  access to the network repository  108  via the computer network  104 . 
     The web servers  118  can be configured to provide the user files  110  to the users  101  via the computer network  104 . For example, in one embodiment, the web servers  118  can be configured to provide an enterprise internal website that allows the users  101  to securely exchange information and to cooperate on performing tasks or executing a project. In other embodiments, the web servers  118  can also be configured to provide a social network website that allows the users  101  to post user files  110 , comment on one another&#39;s user files  110 , share and/or recommend user files  110  with additional users  101 , or perform other suitable actions. In certain embodiments, the web servers  118  can also be configured to receive and store the user files  110  in the network repository  108  in cooperation with the file management server  106 . In other embodiments, the distributed computing system  100  can further include a database server (not shown) or other suitable components configured to perform the foregoing functions. 
     The directory server  112  can be configured to maintain the user account data  116  for the users  101  and facilitate various account related operations, such as access control, data queries, etc. For example, in one embodiment, the directory server  112  can implement access control policies such that certain class, type, category, or other suitable grouping of the user files  110  can be accessible to specified users  101 . In another embodiment, the directory server  112  can also be configured to share with various file management servers  106  data representing the geographic locations of the shards corresponding to the various users  101 . 
     The file management server  106  can be configured to facilitate efficient storage, management, and retrieval of the user files  110  by using the shards corresponding to the users  101 . For example, to facilitate ready access, data relevant to a user, group, or site of a tenant in an organization can be stored in a dedicated shard. The shard can be a physical and/or logical storage location that contains emails, chats, instant messages, documents, or other types of data with which the user  101 , group, or site has interacted. During operation, copies of a file relevant to multiple users  101 , groups, or sites can be replicated to respective shards such that each shard can contain a copy of the same file for ready access. For example, copies of a document initially created by a first user  101   a  and subsequently modified by a second user  101   b  can be replicated to the shards of both the first and second users  101   a  and  101   b . Thus, both the first and second users  101   a  and  101   b  can readily query for and access the modified document in respective shards. 
     Though dedicated shards for individual users  101  can facilitate fast and efficient query and access of stored user files  110 , data replication to the shards may not always be possible. When a user  101  is a part of a tenant across multiple geographic regions, company policies and/or legal requirements may prevent some or all user files  110  to be copied to from one geographic region to another. For example, the European Union does not permit automatic copying of user data from Europe to Asia. Instead, the user data can only be copied from Europe to Asia in response to a user request, such as during query time. This restriction can negatively impact accuracy of query results when some data relevant to a user  101  may be absent in the shard of the user  101 . For instance, a user  101  resides in Asia and has modified files in Europe may not have ready access to the modified files because of the restriction of proactively copying of the files from Europe to the user&#39;s shard in Asia. Several embodiments of the disclosed technology can address certain aspects of the foregoing drawback by implementing (1) a tenant-wide shard that is configured to store data that cannot be proactively copied from one geographic region to another; and (2) a file reference in a shard of a user  101  in one geographic region for locating a copy of a file in the tenant-wide shard in another geographic region during query time, as described in more detail below with reference to  FIGS.  2 A- 2 D . 
     As shown in  FIG.  2 A , a tenant can have computing resources located across multiple geographic regions  105  and interconnected with one another via the computer network  104 . In the example of  FIG.  2 A , three geographic regions  105  shown as “Geo  1 ,” “Geo  2 ,” and “Geo  3 ” are used for illustration purposes. In other examples, the tenant may include computing resources spanning two, four, or any other suitable number of geographic regions  105 . As shown in  FIG.  2 A , each geographic region  105  can include instances of the file management server  106 , a tenant-wide shard  120  for the respective geographic region  105 , and one or more user shards  122  corresponding to the users  101  of the tenant. 
     Though the user  101  can access all the computing resources in any of the geographic regions  105 , user files  110  located in one geographic region  105  may not be permitted to be automatically replicated to a user shard  122  in another geographic region  105 . For instance, as shown in  FIG.  2 A , a user  101  can utilize computing resources in a first geographic region  105 ′ (e.g., “Geo  1 ”) to create, modify, or otherwise interact with a user file  110 . However, the user shard  122  corresponding to the user  101  is in a second geographic region  105 ″ (i.e., “Geo  2 ”). A legal regulation in the first geographic region  105 ′ may not permit the user file  110  to be automatically replicated from the first geographic region  105 ′ to another geographic region  105 , such as the second geographic region  105 ″. 
     As shown in  FIG.  2 A , to address the foregoing difficulty, in certain implementations, the file management server  106 ′ can be configured to provide a file tracker  132  configured to detect that a user file  110  has been created, modified, viewed, commented on, or otherwise interacted with in the first geographic region  105 ′. In response to detecting a user interaction with the user file  110 , the file tracker  132  can register the user file  110  as revised in, for instance, a file database (not shown). In other implementations, the file tracker  132  can provide notification of the detected user file  110  to other components of the file management server  106 ′ automatically or in other suitable manners. 
     The file management server  106 ′ can also provide a file processor  134  that is configured to monitor for any revised user file  110  registered in the file database. Upon detecting that a revised user file  110  is registered in the database by the file tracker  132 , the file processor  134  can be configured to (1) identify a physical location of the user file  110  by retrieving or otherwise receiving user account data  116  from the directory server  112 ; and (2) determine whether the user file  110  is to be replicated to other physical location(s). For instance, in the example in  FIG.  2 A , upon detecting that the user  101  residing in the second geographic region  105 ″ (e.g., Asia) has modified the user file  110  in the first geographic region (e.g., Europe), the file processor  134  can be configured to determine that a copy of the modified user file  110  may be replicated to the user&#39;s shard  122  in Asia. 
     Upon determining that replication of the user file  110  may be performed, the file processor  134  can be configured to determine whether such replication is permitted under company policies and/or legal requirements based on the identified physical location of the user file  110  and a physical location of a replication destination such as the user&#39;s shard  122 . Upon determining that replication of the user file  110  is permitted, a copy of the user file  110  can be replicated to the user&#39;s shard  122  in the second geographic region  105 ″, as shown in  FIG.  2 A . 
     On the other hand, as shown in  FIG.  2 B , upon determining that replication of the user file  110  is not permitted, the file processor  134  can be configured to (1) store the modified user file  110  in a tenant-wide shard  120  in the first geographic region  105 ′ (e.g., Europe); and (2) creating a file reference  111  to the stored user file  110  in the user shard  122  of the user located in the second geographic region  105 ″ (e.g., Asia). The tenant-wide shard  120  can be configured to contain data that the file processor  134  has determined that replication to other geographic regions is not permitted. In certain embodiments, a tenant (e.g., a corporation) can have a single tenant-wide shard  120  in a geographic region for multiple users  101  of the tenant. In other embodiments, a single tenant-wide shard  120  can be configured to contain data from multiple geographic regions  105  that may not be replicated to additional geographic regions  105 . For instance, a single tenant-wide shard  120  may be configured to contain data from both North America and South America. In further embodiments, a tenant can include multiple tenant-wide shards in a single geographic area  105 . 
     In certain embodiments, the created file reference  111  can include a file identification string/number, a Universal Resource Locator (URL) of the stored file in the tenant-wide shard, or other suitable types of identifiers or pointers to the user file  110  stored in the tenant-wide shard  120  in another geographic region  105 . In other embodiments, the file reference  111  can also include metadata, such as a file name, a date/time of creation/modification, created by, last modified by, or other suitable information permitted under applicable regulations. The file processor  134  can also be configured to attach metadata to the user file  110  stored at the tenant-wide shard  120  in the first geographic region  105 ′ to indicate that a file reference  111  to the user file  110  has been created in the user shard  122  in the second geographic region  105 ″, such as Asia. 
     The file reference  111  created in the user shard  122  and the user file  110  stored in the tenant-wide shard  120  can facilitate ready query and access of the user file  110  by the user  101 . For example, as shown in  FIG.  2 C , the user  101  can submit a query  113  to a search engine  136  of another instance of the file management server  106 ″ in the second geographic region  105 ″ for any user files  110  recently modified by the user  101 . In response, the search engine  136  can be configured to search all user files  110  and file references  111  in the user shard  122  of the user  101 . Upon identifying a file reference  111  during the search, the search engine  136  can be configured to use the file reference  111  to retrieve a copy of or “hydrate” the corresponding user file  110  in an ad hoc basis. For instance, in the example shown in  FIG.  2 C , for retrieving the user file  110  modified by the user  110  in the first geographic region  105 ′, the search engine  136  can submit a request  115  to the tenant-wide shard  120  in the first geographic region  105 ′ with the file reference  111 . In response, the tenant-wide shard  120  in the first geographic region  105 ′ can provide a copy of the corresponding user file  110  to the search engine  136  to be output to the user  110 , as shown in  FIG.  2 D . As such, the file reference  111  stored in the user shard  122  in the second geographic region  105 ″ and the user file  110  stored in the first geographic region  105 ′ are combined or “federated” during query time to provide ready access of the user file  110  to the user  101 . Subsequently, information in the file reference  111  can be combined with the received user file  110  and the file reference  111  can be deleted from the user shard  122 . 
     Several embodiments of the disclosed technology can thus provide efficient query and access to user files  110  stored in various geographic regions  105  while complying with applicable company policies and/or legal regulations in one or more of the geographic regions  105 . Instead of replicating all user files  110  interacted with by a user  101  into the user&#39;s shard  122  in a geographic region  105 , file references  111  of certain files  110  can be used as placeholders for non-replicable files. To facilitate ready hydration of such non-replicable files during query time, the tenant-wide shard  120  can be configured as a single point of access. As such, fan-out operations to locate non-replicable files during query time can be avoided to reduce latency of hydrating such non-replicable files. 
       FIGS.  3 A and  3 B  are flowcharts illustrating processes of federating of data during query time in accordance with embodiments of the disclosed technology. Though embodiments of the processes are described below in the context of the distributed computing system  100  of  FIGS.  1 - 2 D , in other embodiments, the processes may be implemented in computing systems with additional and/or different components. 
     As shown in  FIG.  3 A , a process  200  can include monitoring for file interactions at stage  202 . Example file interactions can include file creation, modification, viewing, commenting, forwarding, liking, or other suitable types of interactions. The process  200  can then include a decision stage  204  to determine whether a file interaction is detected. In response to determining that no file interaction is detected, the process  200  revert to monitoring for file interaction at stage  202 . Otherwise, the process  200  proceeds to registering a file for user interaction at stage  206 . In certain embodiments, registering the file for user interaction can include appending metadata indicating the detected interaction to the file. In other embodiments, registering the file can also include listing the file in a database along with the detected interaction or in other suitable manners. 
     The process  200  can then include another decision stage  208  to determine whether replication of the file from a current location to a replication destination is allowed. For example, when the current location of the file is the same as the replication destination, the process  200  can indicate that replication is allowed. In another example, when the current location of the file is different than the replication destination, and a company policy and/or legal regulation does not permit automatic replication to the replication destination, the process  200  can indicate that replication is not allowed. Example operations of determining whether replication is allowed are described in more detail above with reference to  FIGS.  2 A- 2 D . 
     In response to determining that replication is allowed, the process  200  proceeds to replicating the file to the replication destination, e.g., a user shard. Otherwise, the process  200  proceeds to storing the file in a tenant-wide shard in the current location of the file at stage  212  and creating a file reference to the stored file in the replication destination, e.g., the user shard at stage  214 . The file stored in the tenant-wide shard and the file reference can then be used to facilitate efficient access to the file, as described in more detail below with reference to  FIG.  3 B . 
     As shown in  FIG.  3 B , a process  220  of accessing a file can include receiving a query from a user for one or more files at stage  222 . The process  220  can then include a decision stage  224  to determine whether a query result is a file or a file reference. In response to determining that a query result is file, the process  220  can include outputting the file to the user at stage  228 . Otherwise, the process  220  includes retrieving a copy of the file using the file reference from the tenant-wide shard in another geographic region at stage  226  before outputting the file to the user at stage  228 . 
       FIG.  4    is a computing device  300  suitable for certain components of the distributed computing system  100  in  FIG.  1   . For example, the computing device  300  can be suitable for the client devices  102 , file management server  106 , the directory server  112 , or the web server  118  of  FIG.  1   . In a very basic configuration  302 , the computing device  300  can include one or more processors  304  and a system memory  306 . A memory bus  308  can be used for communicating between processor  304  and system memory  306 . 
     Depending on the desired configuration, the processor  304  can be of any type including but not limited to a microprocessor (μP), a microcontroller (μC), a digital signal processor (DSP), or any combination thereof. The processor  304  can include one more level of caching, such as a level-one cache  310  and a level-two cache  312 , a processor core  314 , and registers  316 . An example processor core  314  can include an arithmetic logic unit (ALU), a floating-point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. An example memory controller  318  can also be used with processor  304 , or in some implementations memory controller  318  can be an internal part of processor  304 . 
     Depending on the desired configuration, the system memory  306  can be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.) or any combination thereof. The system memory  306  can include an operating system  320 , one or more applications  322 , and program data  324 . The operating system  320  can include a hypervisor  140  for managing one or more virtual machines  144 . This described basic configuration  302  is illustrated in  FIG.  8    by those components within the inner dashed line. 
     The computing device  300  can have additional features or functionality, and additional interfaces to facilitate communications between basic configuration  302  and any other devices and interfaces. For example, a bus/interface controller  330  can be used to facilitate communications between the basic configuration  302  and one or more data storage devices  332  via a storage interface bus  334 . The data storage devices  332  can be removable storage devices  336 , non-removable storage devices  338 , or a combination thereof. Examples of removable storage and non-removable storage devices include magnetic disk devices such as flexible disk drives and hard-disk drives (HDD), optical disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid state drives (SSD), and tape drives to name a few. Example computer storage media can include volatile and nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. The term “computer readable storage media” or “computer readable storage device” excludes propagated signals and communication media. 
     The system memory  306 , removable storage devices  336 , and non-removable storage devices  338  are examples of computer readable storage media. Computer readable storage media include, but not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other media which can be used to store the desired information, and which can be accessed by computing device  300 . Any such computer readable storage media can be a part of computing device  300 . The term “computer readable storage medium” excludes propagated signals and communication media. 
     The computing device  300  can also include an interface bus  340  for facilitating communication from various interface devices (e.g., output devices  342 , peripheral interfaces  344 , and communication devices  346 ) to the basic configuration  302  via bus/interface controller  330 . Example output devices  342  include a graphics processing unit  348  and an audio processing unit  350 , which can be configured to communicate to various external devices such as a display or speakers via one or more NV ports  352 . Example peripheral interfaces  344  include a serial interface controller  354  or a parallel interface controller  356 , which can be configured to communicate with external devices such as input devices (e.g., keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (e.g., printer, scanner, etc.) via one or more I/O ports  358 . An example communication device  346  includes a network controller  360 , which can be arranged to facilitate communications with one or more other computing devices  362  over a network communication link via one or more communication ports  364 . 
     The network communication link can be one example of a communication media. Communication media can typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and can include any information delivery media. A “modulated data signal” can be a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media can include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), microwave, infrared (IR) and other wireless media. The term computer readable media as used herein can include both storage media and communication media. 
     The computing device  300  can be implemented as a portion of a small-form factor portable (or mobile) electronic device such as a cell phone, a personal data assistant (PDA), a personal media player device, a wireless web-watch device, a personal headset device, an application specific device, or a hybrid device that include any of the above functions. The computing device  300  can also be implemented as a personal computer including both laptop computer and non-laptop computer configurations. 
     From the foregoing, it will be appreciated that specific embodiments of the disclosure have been described herein for purposes of illustration, but that various modifications may be made without deviating from the disclosure. In addition, many of the elements of one embodiment may be combined with other embodiments in addition to or in lieu of the elements of the other embodiments. Accordingly, the technology is not limited except as by the appended claims.