Hypervisor controller and method for assigning application identifier to specific application running on virtual machine
The hypervisor controller uses application identifiers generated from processor registers to address memory management challenges in virtual machines, ensuring precise application tracking and efficient resource allocation, thereby improving system performance and security.
Patent Information
- Application Number
- PCT/EP2024/060051
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-04-12
- Publication Date
- 2025-10-16
AI Technical Summary
Existing hypervisor controllers struggle to identify and distinguish application-specific memory within a virtual machine's physical address space, particularly when multiple diverse applications are running concurrently, leading to inefficiencies in memory management and resource allocation.
A hypervisor controller assigns a unique application identifier to each application running on a virtual machine based on the registers of an emulated processor, using a hash function to generate identifiers that enable precise identification and tracking, facilitating efficient memory allocation and resource management.
The solution allows for accurate identification and tracking of applications, enhancing security, isolation, and resource allocation, resulting in a robust and secure execution environment with improved performance and efficiency in virtualized systems.
Smart Images

Figure EP2024060051_16102025_PF_FP_ABST
Abstract
Description
[0001] HYPERVISOR CONTROLLER AND METHOD FOR ASSIGNING APPLICATION IDENTIFIER TO SPECIFIC APPLICATION RUNNING ON VIRTUAL MACHINE
[0002] TECHNICAL FIELD
[0003] The present disclosure relates generally to the field of virtualization and cloud computing and, more specifically, to a hypervisor controller and a method for the hypervisor controller configured to assign an application identifier to a specific application running on a virtual machine.
[0004] BACKGROUND
[0005] Virtualization enables the running of multiple virtual machines (VMs) on the same physical hardware. The VMs boot and run a regular operating system on a virtual hardware, same as the corresponding VMs are running on the physical hardware. Generally, a hypervisor is used to implement the virtual hardware that enables the VMs to run concurrently and safely on the same physical hardware. In addition, the hypervisor is also used to provide an isolation between the VMs, and multiplexes that share resources. The VMs enable efficient resource allocation, scalability, and flexibility of the computing resources. However, challenges exist in seamlessly extending and managing resources within running virtual machines (VMs), such as memory management, accurate memory prefetching, delay in execution time of an application, and the like.
[0006] Currently, certain attempts have been made to manage memory resources efficiently and accurately, such as by either focusing on low-level hardware prefetching techniques, or prefetching the memory of a single application, and the like. However, such attempts for memory management fail to handle noise for prefetching algorithms, particularly when virtual machines (VMs) run multiple diverse applications independently, which is not desirable. Thus, there exists a technical problem of how to identify and distinguish application-specific memory within the virtual machine's physical address space in a virtualized environment.
[0007] Therefore, in light of the foregoing discussion, there exists a need to overcome the aforementioned drawbacks associated with the conventional hypervisor controllers.
[0008] SUMMARY
[0009] The present disclosure provides a hypervisor controller and a method for the hypervisor controller configured to assign an application identifier to a specific application running on a virtual machine. The present disclosure provides a solution to the existing problem of how to identify and distinguish application-specific memory within the virtual machine's physical address space in a virtualized environment. An objective of the present disclosure is to provide a solution that overcomes at least partially the problems encountered in the prior art and provides an improved hypervisor controller and an improved method for the hypervisor controller configured to assign the application identifier to the specific application running on the virtual machine, such as by providing a method for fingerprinting application's memory inside the virtual machine, from the hypervisor's perspective.
[0010] One or more objectives of the present disclosure are achieved by the solutions provided in the enclosed independent claims. Advantageous implementations of the present disclosure are further defined in the dependent claims.
[0011] In one aspect, the present disclosure provides a hypervisor controller configured to assign an application identifier to a specific application running on a virtual machine in response to a transfer of control from the virtual machine to the hypervisor, wherein the virtual machine runs a plurality of applications of which the specific application is one, wherein the hypervisor controller is further configured to generate the application identifier based on one or more registers of an emulated processor of the virtual machine.
[0012] Advantageously, the hypervisor controller is configured to assign the application identifier to the specific application from the plurality of applications running on the virtual machine, based on one or more registers of the emulated processor in order to create a unique identifier for each application. The application identifier allows precise identification and tracking of the specific application within the virtual machine, streamlining control and resource allocation processes. The hypervisor controller is configured to identify the specific application efficiently, effectively, and accurately in order to make informed decisions regarding the memory allocation, and resource prioritization. The utilization of the application identifiers enhances security and isolation within the virtualized environment in order to enforce policies or restrictions specific to each of the applications, contributing to a robust and secure execution environment for diverse workloads. As a result, the hypervisor controller is configured to provide a robust, secure, and efficient framework for managing the plurality of applications that are executed on the virtual machine, contributing to a high-performance virtualized environment.
[0013] In another aspect, there is provided a method for a hypervisor controller, the method comprising assigning an application identifier to a specific application running on a virtual machine in response to a transfer of control from the virtual machine to the hypervisor, wherein the virtual machine runs a plurality of applications of which the specific application is one, wherein the method further comprises generating the application identifier based on one or more registers of an emulated processor of the virtual machine.
[0014] The disclosed method achieves all the advantages and technical effects of the hypervisor controller of the present disclosure.
[0015] It has to be noted that all devices, elements, circuitry, units, and means described in the present application could be implemented in the software or hardware elements or any kind of combination thereof. All steps which are performed by the various entities described in the present application as well as the functionalities described to be performed by the various entities, are intended to mean that the respective entity is adapted to or configured to perform the respective steps and functionalities. Even if, in the following description of specific embodiments, a specific functionality or step to be performed by external entities is not reflected in the description of a specific detailed element of that entity, which performs that specific step or functionality, it should be clear for a skilled person that these methods and functionalities can be implemented in respective software or hardware elements or any kind of combination thereof. It will be appreciated that features of the present disclosure are susceptible to being combined in various combinations without departing from the scope of the present disclosure as defined by the appended claims.
[0016] Additional aspects, advantages, features, and objects of the present disclosure would be made apparent from the drawings and the detailed description of the illustrative implementations construed in conjunction with the appended claims that follow.
[0017] BRIEF DESCRIPTION OF THE DRAWINGS
[0018] The summary above, as well as the following detailed description of illustrative embodiments, is better understood when read in conjunction with the appended drawings. For the purpose of illustrating the present disclosure, exemplary constructions of the disclosure are shown in the drawings. However, the present disclosure is not limited to specific methods and instrumentalities disclosed herein. Moreover, those in the art will understand that the drawings are not to scale. Wherever possible, like elements have been indicated by identical numbers. Embodiments of the present disclosure will now be described, by way of example only, with reference to the following diagrams wherein:
[0019] FIG. 1 is a block diagram of a hypervisor controller configured to assign an application identifier to a specific application running on a virtual machine, in accordance with an embodiment of the present disclosure;
[0020] FIG. 2 is a flowchart that illustrates a method for the hypervisor controller, in accordance with an embodiment of the present disclosure; and
[0021] FIG. 3 is a diagram depicting a page fault pipeline with a prefetcher for generating an application identifier, in accordance with an embodiment of the present disclosure.
[0022] In the accompanying drawings, an underlined number is employed to represent an item over which the underlined number is positioned or an item to which the underlined number is adjacent. A non-underlined number relates to an item identified by a line linking the non-underlined number to the item. When a number is non-underlined and accompanied by an associated arrow, the non-underlined number is used to identify a general item at which the arrow is pointing.
[0023] DETAILED DESCRIPTION OF EMBODIMENTS
[0024] The following detailed description illustrates embodiments of the present disclosure and ways in which they can be implemented. Although some modes of carrying out the present disclosure have been disclosed, those skilled in the art would recognize that other embodiments for carrying out or practising the present disclosure are also possible.
[0025] FIG. 1 is a block diagram of a hypervisor controller configured to assign an application identifier to a specific application running on a virtual machine, in accordance with an embodiment of the present disclosure. With reference to FIG. 1, there is shown a block diagram 100 that depicts a hypervisor controller 104 that is configured to assign an application identifier 108 to a specific application running on a virtual machine 114. There is further shown a hypervisor 102, a communication network 112, and the virtual machine 114. The hypervisor 102 further includes the hypervisor controller 104, a memory 106, the application identifier 108, and a network interface 110.
[0026] The hypervisor 102 is configured to control the virtual machine 114 in order to generate and assign the application identifier 108 to the application running on the virtual machine 114. Moreover, the hypervisor 102 includes the hypervisor controller 104 that is configured to assign the application identifier 108 to a specific application running on the virtual machine 114. Examples of the hypervisor controller 104 may include, but are not limited to, a microcontroller, a microprocessor, a central processing unit (CPU), a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a data processing unit, and other processors or control circuitry. In an implementation, the application identifier 108 represents an abstract identification of the specific application from a plurality of applications 120 that are running on the virtual machine 114.
[0027] The emulated processor 116 is included in the virtual machine 114. Examples of the emulated processor 116 may include, but are not limited to, a microcontroller, a microprocessor, a central processing unit (CPU), a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a data processing unit, and other processors or control circuitry.
[0028] The communication network 112 includes a medium (e.g., a communication channel) through which the hypervisor controller 104 communicates with the virtual machine 114. Examples of the communication network 112 may include, but are not limited to, the Internet, a Local Area Network (LAN), a wireless personal area network (WPAN), a Wireless Local Area Network (WLAN), a wireless wide area network (WWAN), a cloud network, a Long-Term Evolution (LTE) network, a plain old telephone service (POTS), a Metropolitan Area Network (MAN), and / or the Internet.
[0029] The virtual machine (VM) 114 corresponds to a virtualization of a computer system. The virtual machine 114 is based on computer architectures and provides the functionality of a physical computer. The implementations of the virtual machine 114 may involve specialized hardware, software, or a combination of the two. The virtual machine 114 may be part of a local computing environment or geographically distributed across a network. The virtual machine 114 includes the plurality of applications 120, and the emulated processor 116 further includes one or more registers 118.
[0030] The emulated processor 116 is configured to run the plurality of applications 120 on the virtual machine 114. The examples of the emulated processor 116 may include but are not limited to a central data processing device, a microprocessor, a microcontroller, a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a state machine, and other processors or control circuitry.
[0031] The plurality of applications 120 refers to applications that are simultaneously running in the virtual machine 114. In an example, a first application 120A is running in the virtual machine 114. In another example, a second application 120B is running in the virtual machine 114. In yet another example, nth application 120N is running in the virtual machine 114. In an implementation, each of the plurality of applications 120 are running independently of each other in the virtual machine 114. In another implementation, one or more applications, such as the first application 120A and the second application 120B are running together in the virtual machine 114.
[0032] In accordance with an embodiment, one register is a CR3 register, a CPL register, or a FBASE register of the emulated processor. In an implementation, the one register is the control register 3 (CR3) corresponds to a register that is configured to hold a base physical address of a page directory and is used for managing the translation of virtual addresses to physical addresses. Moreover, the CR3 register is a page table register that is configured to identify which address space the application accessing the memory belongs to. In another implementation, the one register is a current privilege level (CPL) register that is configured to hold the privilege level of a currently executing code so that the hypervisor controller 104 can determine if the guest kernel or guest user space is accessing the memory 106 or not. In yet another implementation, the one register is a frame base (FBASE) register that is configured to point to a thread-local structure that can be used to identify different threads inside a single application. However, other registers, such as an address space identification (ASID) register, and a code segment (CS) register can also be used without affecting the scope of the present disclosure. As a result, the one or more registers 118 of the emulated processor 116 is used to manage the virtualized environment effectively and efficiently.
[0033] In operation, the hypervisor controller 104 is configured to assign the application identifier 108 to a specific application running on the virtual machine 114 in response to a transfer of control from the virtual machine 114 to the hypervisor 102. Firstly, the virtual machine 114 is configured to transfer the control to the hypervisor 102. Thereafter, the hypervisor controller 104 is configured to assign the application identifier 108 to the specific application running on the virtual machine 114. The application identifier 108 refers to a unique identifier that is assigned to a specific application running in the virtual machine 114 in order to differentiate one application from another. Moreover, the virtual machine 114 runs the plurality of applications 120 of which the specific application is one. For example, the hypervisor controller 104 is configured to assign a first application identifier to the first application 120A that is running in the virtual machine 114. Similarly, the hypervisor controller 104 is configured to assign a second application identifier to the second application 120B, which is running in the virtual machine 114. Therefore, the assignment of the application identifier 108 is performed to enhance the management, monitoring, and controlling of the plurality of applications 120 that are running in the virtual machine 114. Additionally, the assignment of the application identifier 108 allows the hypervisor controller 104 to precisely recognize and track the specific application from the plurality of applications 120 that is actively running in the virtual machine 114.
[0034] In accordance with an embodiment, the hypervisor controller 104 is further configured to determine that there has been a page fault, and in response thereto generate the application identifier 108. Moreover, the transfer of control from the virtual machine 114 to the hypervisor 102 is caused by the page fault. The page fault in the virtual machine 114 indicates that the plurality of applications 120 is attempting to access a portion of the memory 106 that was not currently in physical random access memory (RAM) but is potentially stored in another location, such as swap space or secondary storage . Each application from the plurality of applications 120 running within the virtual machine 114 is assigned a unique identifier (i.e., the application identifier 108), enabling the hypervisor controller 104 to distinguish between different applications and ensure an efficient and effective tracking and managing of the plurality of applications 120 within the virtual machine 114. Firstly, the hypervisor controller 104 is configured to recognize and determine that the page fault has taken place within the virtual machine 114. After that, the hypervisor controller 104 is configured to generate the application identifier 108. By virtue of determining the page faults, generating the application identifiers for each of the plurality of applications 120, and triggering the transfer of control to maintain the integrity and optimal performance of the virtualized system, ensuring that memory-related issues are promptly addressed at the application level.
[0035] The hypervisor controller 104 is further configured to generate the application identifier 108 based on the one or more registers 118 of the emulated processor 116 of the virtual machine 114. The hypervisor controller 104 utilizes the information that is stored in the one or more registers 118 of the emulated processor 116 of the virtual machine 114 in order to identify the specific application, such as by generating the application identifier 108 to each of the plurality of applications 120 that are running on the virtual machine 114. In an implementation, the one or more registers are configured to classify the memory region at the time of the input / output (IO) page fault inside the hypervisor 102. As a result, the generation of the application identifier 108 is to enhance the identification, management, and control of the plurality of applications 120 that are running within the virtual machine 114.
[0036] In accordance with an embodiment, the hypervisor controller 104 is further configured to generate the application identifier 108 based on the one or more registers 118 of the emulated processor 116 of the virtual machine 114 by performing a hash function on the one or more registers 118 of the emulated processor 116 of the virtual machine 114. The hash function corresponds to a function that transforms input data, such as the data received from the one or more registers 118 into a fixed- size string of characters (or hash values). Moreover, the application identifier 108 is set to be the result of the hash function. For example, at the time of the IO page fault, the hypervisor controller 104 is configured to generate the application identifier 108, such as application ID = hash(CR3 + CS), where the application ID represents the generated and assigned application identifier for the specific application, which is running on the virtual machine 114 and the hash(CR3+ CS) represents a result of a hash function that is performed on the one or more registers that are the CR3 register and the CS register. By performing the hash function on the one or more registers 118, the generated application identifier is unique for different combinations of register values that are further utilized to ensure that each application running in the virtual machine 114 can be distinguished from the other applications of the plurality of applications 120. As a result, the hypervisor controller 104 is configured to establish a reliable and efficient means of uniquely identifying applications within the virtual machine 114, facilitating operations, such as prefetching, memory allocation, and resource management.
[0037] In accordance with an embodiment, the hypervisor controller 104 is further configured to perform the hash function on multiple registers of the emulated processor 116 of the virtual machine 114. Moreover, the application identifier 108 is set to the result of the hash function. In an example, the hypervisor controller 104 is configured to perform the hash function on a first register and a second register of the emulated processor 116 of the virtual machine 114 in order to generate the application identifier 108. Similarly, the hypervisor controller 104 is configured to perform the hash function on the first register, the second register, and a third register of the emulated processor 116 of the virtual machine 114 in order to generate the application identifier 108. Moreover, instead of relying on a single register, the hypervisor controller 104 is configured to consider multiple registers in the emulated processor 116 for the generation of the application identifier 108 after which the hash function is applied collectively to the content of the corresponding multiple registers. As a result, the hypervisor controller 104 is configured to generate the application identifier 108, contributing to the accurate and unique identification of the plurality of applications 120 within the virtual machine 114.
[0038] In accordance with an embodiment, the hypervisor controller 104 is further configured to maintain an application state for the specific application based on the generated application identifier. Each application from the plurality of applications 120 may have unique requirements and application states. Therefore, by maintaining the application state for the specific application, the hypervisor controller 104 can take further actions that are required for resource allocation, optimization, or any other such management tasks thereby, contributing to an efficient use of resources within the virtual machine 114.
[0039] In accordance with an embodiment, the application state includes a memory access history for the specific application based on the generated application identifier. The hypervisor controller 104 updates and maintains the memory access history for each application from the plurality of applications 120 based on the generated application identifier. In an implementation, the memory access history for the specific application includes logging memory-related activities, timestamps, and relevant details that are required to create a comprehensive historical record. As a result, by including the memory access history in the application state allows the hypervisor controller 104 to make an informed and strategic decision regarding resource management, performance optimization, and anomaly detection, enhancing the overall efficiency and security of the virtual machine 114.
[0040] In accordance with an embodiment, the hypervisor controller 104 is further configured to execute a memory prefetching algorithm for the specific application based on the generated application identifier and the application state. In an implementation, the prefetching algorithm refers to a technique that is used for reducing memory access latency, such as by prefetching memory ahead of its use by the specific application. The prefetching algorithm is used to load the memory portion into the RAM when the specific application starts serving new requests. For example, if the first application 120A accesses the memory blocks in an order of 'I', '5', '3', and '2', then, in that case, the prefetching algorithm starts loading the memory blocks from '5', '3', and then '2' as soon as the memory block T is accessed. Advantageously, the memory prefetching algorithm for each of the specific applications based on the generated application identifier is used to predict and proactively load data into the memory 106 in order to minimize the latency associated while accessing data thereby optimizing the overall performance of the virtual machine 114. Additionally, the execution of the memory prefetching algorithm is also used to ensure efficient and reliable resource utilization.
[0041] In accordance with an embodiment, the hypervisor controller 104 is further configured to determine a predictability score for the memory prefetching algorithm for the specific application based on the generated application identifier. The predictability score serves as a metric to evaluate the accuracy of the memory accessibility patterns. In addition, during the swap, the hypervisor controller 104 can prefetch memory for the application with the memory access history in order to reduce the swapin latency for the application. As a result, the hypervisor controller 104 is configured to ensure an efficient and reliable memory allocation.
[0042] In accordance with an embodiment, the hypervisor controller 104 is further configured to execute a memory -cleaning process for the specific application based on the memory access history. The memory cleaning process involves managing the allocation and retention of the memory resources that are associated with the specific application from the plurality of applications 120 running on the virtual machine 114. In other words, the hypervisor controller 104 is configured to analyse the memory access history to determine which portions of the memory 106 have lower usage frequencies or exhibit predictable patterns. Thereafter, the hypervisor controller 104 is configured to execute the memory cleaning process. As a result, the execution of the memory cleaning process for the specific application enables the hypervisor controller 104 to make informed decisions about the memory optimization, thereby reducing contention, and enhancing the responsiveness of the virtual machine 114 leads to an efficient resource utilization and improved performance, especially during fluctuating workloads and varying memory access patterns.
[0043] In accordance with an embodiment, the memory -cleaning process includes swapping and / or migration. In an implementation, the memory cleaning process includes swapping. The swapping includes those portions of the memory 106 that move between the fast, volatile RAM and a slower, non-volatile storage medium, for example, a hard disk or a solid storage device (SSD). In another implementation, the memory cleaning process includes migration. Moreover, the migration includes relocation of the memory 106 from one host to another host within the virtual environment, such as for load balancing or freeing up resources on a particular host. In yet another implementation, the memory cleaning process includes swapping and migration. The incorporation of the swapping and / or the migration in the memory cleaning process provides flexibility and adaptability in managing the memory resources and allows the hypervisor controller 104 to dynamically respond to changing workload demands and allocate memory efficiently, contributing to enhanced performance and responsiveness of the plurality of applications 120 miming on the virtual machine 114. In an implementation, the transfer of the control from the guest to the hypervisor does not cause a trigger. Moreover, the hypervisor is configured to monitor memory access and memorize which part of the memory was accessed by which application identifier, such as from past accesses.
[0044] Advantageously, the hypervisor controller 104 is configured to assign the application identifier 108 to the specific application from the plurality of applications 120 miming on the virtual machine 114, based on the one or more registers 118 of the emulated processor 116 in order to create a unique identifier for each application. The application identifier 108 allows precise identification and tracking of the specific application within the virtual machine 114, streamlining control and resource allocation processes. The hypervisor controller 104 is configured to identify the specific application efficiently, effectively, and accurately in order to make informed decisions regarding the memory allocation, and resource prioritization. The utilization of the application identifier 108 enhances security and isolation within the virtualized environment in order to enforce policies or restrictions specific to each of the applications, contributing to a robust and secure execution environment for diverse workloads. As a result, the hypervisor controller 104 is configured to provide a robust, secure, and efficient framework for managing the plurality of applications 120 that are executed on the virtual machine 114, contributing to a high-performance virtualized environment.
[0045] FIG. 2 is a flowchart that illustrates a method for the hypervisor controller, in accordance with an embodiment of the present disclosure. FIG. 2 is described in conjunction with elements from FIG. 1. With reference to FIG. 2, there is shown a flowchart of a method 200 for the hypervisor controller 104 (of FIG. 1). The method 200 includes steps 202-204 for the hypervisor controller 104. Moreover, the hypervisor controller 104 (of FIG. 1) is configured to execute the method 200.
[0046] At step 202, the method 200 includes assigning the application identifier 108 to a specific application miming on the virtual machine 114 in response to a transfer of control from the virtual machine 114 to the hypervisor 102. Firstly, the virtual machine 114 is configured to transfer the control to the hypervisor 102. Thereafter, the hypervisor controller 104 is configured to assign the application identifier 108 to the specific application miming on the virtual machine 114. The application identifier 108 refers to a unique identifier that is assigned to a specific application miming in the virtual machine 114 in order to differentiate one application from another. Moreover, the virtual machine 114 mns the plurality of applications 120 of which the specific application is one. The assignment of the application identifier 108 is performed to enhance the management, monitoring, and controlling of the plurality of applications 120 that are miming in the virtual machine 114. Additionally, the assignment of the application identifier 108 allows the hypervisor controller 104 to precisely recognize and track the specific application from the plurality of applications 120 that is actively miming in the virtual machine 114. At step 204, the method 200 includes generating the application identifier 108 based on the one or more registers 118 of the emulated processor 116 of the virtual machine 114. As a result, the generation of the application identifier 108 is to enhance the identification, management, and control of the plurality of applications 120 that are running within the virtual machine 114.
[0047] Advantageously, the method 200 is used to assign the application identifier 108 to the specific application from the plurality of applications 120 running on the virtual machine 114, based on the one or more registers 118 of the emulated processor 116 in order to create a unique identifier for each application. The application identifier 108 allows precise identification and tracking of the specific application within the virtual machine 114, streamlining control and resource allocation processes. The method 200 is used to identify the specific application efficiently, effectively, and accurately in order to make informed decisions regarding the memory allocation, and resource prioritization. The utilization of the application identifier 108 enhances security and isolation within the virtualized environment in order to enforce policies or restrictions specific to each of the applications, contributing to a robust and secure execution environment for diverse workloads. As a result, the method 200 is used to provide a robust, secure, and efficient framework for managing the plurality of applications 120 that are executed on the virtual machine 114, contributing to a high-performance virtualized environment.
[0048] The steps 202 to 204 are only illustrative, and other alternatives can also be provided where one or more steps are added, one or more steps are removed, or one or more steps are provided in a different sequence without departing from the scope of the claims herein.
[0049] There is further provided a computer program product comprising program instructions for performing the method 200 when executed by one or more processors in a hypervisor system. The computer program product is implemented as an algorithm, embedded in software stored in a non-transitory computer-readable storage medium. The non-transitory computer-readable storage means may include but are not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. Examples of implementation of computer-readable storage medium, but are not limited to, Electrically Erasable Programmable Read-Only Memory (EEPROM), Random Access Memory (RAM), Read Only Memory (ROM), Hard Disk Drive (HDD), Flash memory, a Secure Digital (SD) card, Solid-State Drive (SSD), a computer-readable storage medium, and / or CPU cache memory.
[0050] FIG. 3 is a diagram depicting a page fault pipeline with a prefetcher for generating an application identifier, in accordance with an embodiment of the present disclosure. FIG. 3 is described in conjunction with elements from FIG. 1 and FIG. 2. With reference to FIG. 3 there is shown a diagram that depicts a flowchart 300 depicting a page fault pipeline with prefetcher for generating the application identifier 108. The hypervisor controller 104 is configured to execute operations depicted in the flowchart 300.
[0051] In an implementation scenario, the hypervisor controller 104 is configured to receive a page fault, such as at operation 302. Furthermore, at operation 304, the hypervisor controller 104 is configured to generate an application ID (or the application identifier 108 of FIG. 1) based on the guest registers, (e.g., based on CR3 register and CS register). Thereafter, at operation 306, the hypervisor controller 104 is configured to update the internal history of the hypervisor 102 for an application for which the application ID is generated. In addition, the hypervisor controller 104 is configured to verify if the page is already prefetched or not, such as at operation 308. In case the page is already prefetched, then in that case, operation 310 is executed and if the page is not prefetched, then operation 314 is executed. At operation 310, the hypervisor controller 104 is configured to process the page fault. However, at operation 314, the hypervisor controller 104 is configured to read a page from SWAP and then process the page fault. In other words, after retrieving the required page from SWAP, the hypervisor controller 104 processes the page fault, making the data available in RAM for the specific application. Furthermore, at operation 312, the hypervisor controller 104 is configured to increase the application ID and at operation 316, the hypervisor controller 104 is configured to decrease the application ID. After that, at operation 318, the hypervisor controller 104 is configured to check if the prefetching accuracy is sufficient or not. In case, the prefetching accuracy is sufficient, then, the hypervisor controller 104 (or a prefetcher) is configured to prefetch more pages from application ID from a disk, such as at operation 320. Finally, at operation 322, the application ID is generated in order to improve the accuracy and efficiency of the hypervisor controller 104 (or the prefetcher). Modifications to embodiments of the present disclosure described in the foregoing are possible without departing from the scope of the present disclosure as defined by the accompanying claims. Expressions such as “including”, “comprising”, “incorporating”, “have”, and “is” used to describe, and claim the present disclosure are intended to be constmed in a nonexclusive manner, namely allowing for items, components, or elements not explicitly described also to be present. Reference to the singular is also to be constmed to relate to the plural. The word “exemplary” is used herein to mean “serving as an example, instance, or illustration”. Any embodiment described as “exemplary” is not necessarily to be constmed as preferred or advantageous over other embodiments or to exclude the incorporation of features from other embodiments. The word “optionally” is used herein to mean “is provided in some embodiments and not provided in other embodiments”. It is appreciated that certain features of the present disclosure, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of the disclosure, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable combination or as suitable in any other described embodiment of the disclosure.
Claims
CLAIMS1. A hypervisor controller (104) configured to assign an application identifier (108) to a specific application running on a virtual machine (114) in response to a transfer of control from the virtual machine (114) to the hypervisor (102), wherein the virtual machine (114) runs a plurality of applications (120) of which the specific application is one, wherein the hypervisor controller (104) is further configured to generate the application identifier (108) based on one or more registers (118) of an emulated processor (116) of the virtual machine (116).
2. The hypervisor controller (104) according to claim 1, wherein the hypervisor controller (104) is further configured to generate the application identifier (108) based on one or more registers (118) of an emulated processor (116) of the virtual machine (114) by performing a hash function on the one or more registers (118) of an emulated processor (116) of the virtual machine (114), wherein the application identifier (108) is set to be the result of the hash function.
3. The hypervisor controller (104) according to claim 1 or 2, wherein the hypervisor controller (104) is further configured to: performing the hash function on multiple registers of an emulated processor (116) of the virtual machine (114), wherein the application identifier (108) is set to the result of the hash function.
4. The hypervisor controller (104) according to claim 1 or 2, wherein one register is a CR3 register, a CPL register, or a FBASE register of the emulated processor.
5. The hypervisor controller (104) according to any preceding claim, wherein the hypervisor controller (104) is further configured to: maintain an application state for the specific application based on the generated application identifier.
6. The hypervisor controller (104) according to claim 5, wherein the application state comprises a memory access history for the specific application based on the generated application identifier.
7. The hypervisor controller (104) according to claim 5, wherein the hypervisor controller (104) is further configured to: determine that there has been a page fault, and in response thereto generate the application identifier, wherein the transfer of control from the virtual machine (114) to the hypervisor is caused by the page fault.
8. The hypervisor controller (104) according to claim 7, wherein the hypervisor controller (104) is further configured to: execute a memory prefetching algorithm for the specific application based on the generated application identifier and the application state.
9. The hypervisor controller (104) according to claim 8, wherein the hypervisor controller (104) is further configured to: determine a predictability score for the memory prefetching algorithm for the specific application based on the generated application identifier.
10. The hypervisor controller (104) according to claim 5 or 6, wherein the hypervisor controller (104) is further configured to: execute a memory cleaning process for the specific application based on the memory access history.
11. The hypervisor controller (104) according to claim 10, wherein the memory cleaning process comprises swapping and / or migration.
12. The hypervisor controller (104) according to claim 10 or 11, wherein the hypervisor controller (104) is further configured to: determine that there has been PLEASE INSERT TRIGGER FOR MEMORY CLEANING, and in response thereto generate the application identifier.
13. A method (200) for a hypervisor controller (104), the method (200) comprising assigning an application identifier (108) to a specific application running on a virtual machine (114) in response to a transfer of control from the virtual machine (114) to the hypervisor (102), wherein the virtual machine (114) runs a plurality of applications (120) of which the specific application is one, wherein the method (200) further comprises generating the application identifier (108) based on one or more registers (118) of an emulated processor (116) of the virtual machine (114).
14. A computer program product comprising program instructions for performing the method (200) according to claim 13, when executed by one or more processors in a hypervisor system.
Citation Information
Patent Citations
Method and apparatus for managing virtual addresses
US20060224816A1
Cited By
Electronic controller and abnormality determination method
US20240241747A1