WO2024098795A1 - 内存管理方法、装置和相关设备 - Google Patents

内存管理方法、装置和相关设备 Download PDF

Info

Publication number
WO2024098795A1
WO2024098795A1 PCT/CN2023/104186 CN2023104186W WO2024098795A1 WO 2024098795 A1 WO2024098795 A1 WO 2024098795A1 CN 2023104186 W CN2023104186 W CN 2023104186W WO 2024098795 A1 WO2024098795 A1 WO 2024098795A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
performance
service
performance parameter
data
Prior art date
Application number
PCT/CN2023/104186
Other languages
English (en)
French (fr)
Inventor
徐逸凡
杨瑞
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Publication of WO2024098795A1 publication Critical patent/WO2024098795A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria

Definitions

  • the present application relates to the field of computer technology, and in particular to a memory management method, apparatus and related equipment.
  • Hybrid memory systems usually include multiple memories with different performances.
  • the present application provides a memory management method, apparatus and related devices to improve the performance of a hybrid memory system.
  • a memory management method is provided.
  • the method is applicable to a hybrid memory system including a first memory and a second memory, and the performance of the first memory is higher than that of the second memory.
  • the method comprises: obtaining a performance parameter set of a process running in the hybrid memory system, the performance parameter set comprising performance parameters associated with more than two processes, each performance parameter being used to indicate the service performance of the associated process; determining a first process that does not meet a service quality requirement based on the performance parameter set, the service quality requirement being used to indicate the performance requirement of the first process, where the first process is one of the processes running in the hybrid memory system; and adjusting the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process respectively.
  • a performance parameter set of the running processes is obtained, that is, the performance parameters associated with each running process are obtained. Since each performance parameter is used to indicate the service performance of the associated process, the first process that does not meet the service quality requirements can be determined based on the performance parameters associated with the process and the service quality requirements, and then the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process are adjusted respectively. It can be seen from the above method that the present application can determine the process that does not meet the service quality requirements based on the performance parameters associated with the process, and then adjust the size of the storage space of the high-performance memory associated with the process.
  • a dynamic memory allocation method is implemented, which can dynamically adjust the size of the storage space of the high-performance memory associated with the process in combination with the current service performance of the process, so that multiple processes running in the hybrid memory system can meet the service quality requirements while fully utilizing the storage space of the high-performance memory, thereby improving the user experience of multiple users.
  • the size of different memories associated with the process can be dynamically adjusted according to the current service performance of the process, the use efficiency of the high-performance memory is also improved.
  • determining the first process that does not meet the service quality requirements based on a performance parameter set includes: determining the process associated with the first performance parameter in the performance parameter set as the first process, wherein the first performance parameter is less than the first performance parameter threshold specified in the service level agreement (SLA); or, determining the process associated with the second performance parameter in the performance parameter set as the first process, wherein the second performance parameter is greater than the second performance parameter threshold specified in the SLA; or, determining the process associated with the third performance parameter in the performance parameter set as the first process, wherein the relationship between the service performance indicated by the third performance parameter and the service performance indicated by the fourth performance parameter in the performance parameter set does not meet the priority condition, and the priority condition includes: the service performance indicated by the performance parameters of the process of the first priority is better than the service performance indicated by the performance parameters of the process of the second priority, wherein the first priority is higher than the second priority; or, the service performance indicated by the performance parameters of two processes of the same priority are the same.
  • SLA service level agreement
  • the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process are adjusted respectively.
  • the first process can meet the service quality requirements through one data migration.
  • more than two data migrations are required to make the first process meet the service quality requirements.
  • Each time data migration is performed between the first memory and the second memory according to the performance parameters and service quality requirements associated with the first process it can be implemented in the following manner: when the performance parameters associated with the first process indicate that the service performance of the first process is lower than the performance requirement indicated by the service quality requirement, the amount of data to be migrated is determined, and part of the data of the first process is migrated from the second memory to the first memory according to the determined amount of data to be migrated, so as to increase the size of the storage space of the first memory associated with the first process and reduce the size of the storage space of the second memory associated with the first process; or, when the performance parameters associated with the first process indicate that the service performance of the first process is higher than the performance requirement indicated by the service quality requirement, the amount of data to be migrated is determined, and part of the data of the first process is migrated from the first memory to the second memory according to the determined amount of data to be migrated, so as to reduce the size of the storage space of the first memory associated with the first process and increase the size of the storage space of the second
  • part of the data of the first process is migrated from the second memory to the first memory, including: migrating the data in the first target memory page in the second memory to the first memory, the heat of the first target memory page is higher than the heat of the non-first target memory page in the second memory, and here, the first target memory page and the non-first target memory page are both associated with the first process.
  • Selecting the data to be migrated according to the heat of the memory page related to the first process in the second memory and migrating the data in the memory page with higher heat in the second memory to the first memory is conducive to reducing the memory access latency of the first process and further improving the service performance of the first process.
  • part of the data of the first process is migrated from the first memory to the second memory, including: migrating the data in the second target memory page in the first memory to the second memory, the heat of the second target memory page is lower than the heat of the non-second target memory page in the first memory, and here, the second target memory page and the non-second target memory page are both associated with the first process.
  • the data to be migrated is selected according to the heat of the memory page related to the first process in the first memory, and the data in the memory page with lower heat in the first memory is migrated to the second memory, so as to avoid excessive impact on the memory access latency of the first process, which is conducive to further improving the service performance of the first process.
  • the data migration is performed between the first memory and the second memory according to the performance parameters and the service quality requirement of the first process for the Xth time, if the service performance indicated by the performance parameters of the first process is closer to the performance requirement indicated by the service quality requirement than before the Xth data migration, the data migration is performed between the first memory and the second memory for the X+1th time according to the performance parameters and the service quality requirement of the first process, where X is a positive integer. In this way, the next data migration can be performed when each data migration is helpful to improve the service performance of the first process.
  • the amount of data to be migrated is determined based on the gap between the service performance indicated by the performance parameter associated with the first process and the performance requirement indicated by the service quality requirement.
  • the larger the gap the larger the amount of data to be migrated; the smaller the gap, the smaller the amount of data to be migrated. Since the amount of data to be migrated is larger, the storage space size of the first memory associated with the first process and the storage space size of the second memory associated with the first process change faster, and the performance parameter of the first process also changes faster, so that the service performance of the first process can be quickly adjusted to improve efficiency.
  • the amount of data to be migrated is a set value. A fixed amount of data is migrated each time, which is simple to implement and helps to simplify the algorithm process.
  • the amount of data to be migrated is determined according to the sensitivity of the first process, and the sensitivity of the first process is used to indicate the sensitivity of the instruction execution speed of the first process to the change in the storage space size of the first memory associated with the first process. For example, when the sensitivity of the first process is greater than the sensitivity threshold, it indicates that the application type of the first process is a sensitive application, and when the sensitivity of the first process is less than or equal to the sensitivity threshold, it indicates that the application type of the first process is a non-sensitive application, and the amount of data to be migrated corresponding to the sensitive application is greater than the amount of data to be migrated of the non-sensitive application.
  • the storage space size of the first memory associated with the first process needs to be increased, and there are no free memory pages in the first memory, or the size of the storage space corresponding to the free memory pages in the first memory is smaller than the storage space size of the first memory to be increased by the first process, before migrating part of the data of the first process from the second memory to the first memory, it is necessary to first migrate part of the data of the second process from the first memory to the second memory, and the second process is another process running in the hybrid memory system, and the second process satisfies at least one of the following conditions: the priority of the second process is lower than the priority of the first process; the sensitivity of the second process is less than the sensitivity threshold; the service performance indicated by the performance parameters of the second process is higher than the performance requirement indicated by the quality of service requirement.
  • the sensitivity of the second process is used to indicate the second process.
  • the sensitivity of the instruction execution speed to the change of the storage space size of the first memory associated with the second process.
  • the greater the sensitivity the more sensitive the instruction execution speed of the second process is to the change of the storage space size of the first memory associated with the second process; conversely, the smaller the sensitivity, the less sensitive the instruction execution speed of the second process is to the change of the storage space size of the first memory associated with the second process.
  • the method further includes: controlling data migration between the first memory and the second memory according to the heat information of the memory page in the hybrid memory system.
  • Performing data migration according to the heat information of the memory page can easily cause the process to fail to meet the service quality. Therefore, after controlling the data migration between the first memory and the second memory according to the heat information of the memory page in the hybrid memory system, it is particularly necessary to determine whether the process meets the service quality requirements based on the performance parameters and service quality requirements of the process.
  • a performance parameter set of the process running in the hybrid memory system can be obtained. Determine whether there is a process that does not meet the quality of service requirements based on the obtained performance parameter set. If there is a process that does not meet the quality of service requirements, first control the data migration between the first memory and the second memory based on the heat information of the memory page in the hybrid memory system. After controlling the data migration between the first memory and the second memory based on the heat information of the memory page in the hybrid memory system, obtain the performance parameter set of the process running in the hybrid memory system again. Determine whether there is a process that does not meet the quality of service requirements based on the performance parameter set obtained again.
  • a memory management device is provided.
  • the device is applicable to a hybrid memory system including a first memory and a second memory, and the performance of the first memory is higher than that of the second memory.
  • the device includes: an acquisition module, a determination module, and an adjustment module.
  • the acquisition module is used to obtain a performance parameter set of a process running in the hybrid memory system, and the performance parameter set includes performance parameters associated with more than two processes, and each performance parameter is used to indicate the service performance of the associated process;
  • the determination module is used to determine a first process that does not meet the service quality requirement based on the performance parameter set and the service quality requirement, and the service quality requirement is used to indicate the performance requirement of the first process, and the first process is one of the processes running in the hybrid memory system;
  • the adjustment module is used to adjust the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process, respectively.
  • the determination module is used to determine the first process in any of the following ways: determining the process associated with the first performance parameter in the performance parameter set as the first process, wherein the first performance parameter is less than the first performance parameter threshold specified in the SLA; or, determining the process associated with the second performance parameter in the performance parameter set as the first process, wherein the second performance parameter is greater than the second performance parameter threshold specified in the SLA; or, determining the process associated with the third performance parameter in the performance parameter set as the first process, wherein the relationship between the service performance indicated by the third performance parameter and the service performance indicated by the fourth performance parameter in the performance parameter set does not meet the priority condition, and the priority condition includes: the service performance indicated by the performance parameters of the process of the first priority is better than the service performance indicated by the performance parameters of the process of the second priority, wherein the first priority is higher than the second priority; and the service performance indicated by the performance parameters of two processes of the same priority are the same.
  • the adjustment module is used to migrate data between the first memory and the second memory according to performance parameters and service quality requirements associated with the first process until the first process meets the service quality requirements.
  • the adjustment module is used to determine the amount of data to be migrated when the performance parameters associated with the first process indicate that the service performance of the first process is lower than the performance requirement indicated by the service quality requirement, and migrate part of the data of the first process from the second memory to the first memory according to the amount of data to be migrated, so as to increase the size of the storage space of the first memory associated with the first process and reduce the size of the storage space of the second memory associated with the first process.
  • the adjustment module is used to migrate data in the first target memory page in the second memory to the first memory, the heat of the first target memory page is higher than the heat of the non-first target memory page in the second memory, and the first target memory page and the non-first target memory page are both associated with the first process.
  • the adjustment module is used to determine the amount of data to be migrated when the performance parameters associated with the first process indicate that the service performance of the first process exceeds the performance requirement indicated by the service quality requirement, and migrate part of the data of the first process from the first memory to the second memory according to the amount of data to be migrated, so as to reduce the size of the storage space of the first memory associated with the first process and increase the size of the storage space of the second memory associated with the first process.
  • the adjustment module is used to migrate data in the second target memory page in the first memory to the second memory, the heat of the second target memory page is lower than the heat of the non-second target memory page in the first memory, and the second target memory page and the non-second target memory page are both associated with the first process.
  • the adjustment module is used to determine the amount of data to be migrated in any of the following ways:
  • the amount of data to be migrated is determined by the gap between the indicated service performance and the performance requirement indicated by the service quality requirement; or, a set value is used as the amount of data to be migrated.
  • the adjustment module is also used to migrate part of the data of the second process from the first memory to the second memory before migrating part of the data of the first process from the second memory to the first memory, the second process being another process in the processes running in the hybrid memory system, and the second process satisfies at least one of the following conditions: the priority of the second process is lower than the priority of the first process; the sensitivity of the second process is less than a sensitivity threshold, and the sensitivity of the second process is used to indicate the sensitivity of the instruction execution speed of the second process to changes in the storage space size of the first memory associated with the second process; the service performance indicated by the performance parameters of the second process is higher than the performance requirement indicated by the quality of service requirement.
  • the adjustment module when the adjustment module needs to execute data migration between the first memory and the second memory according to the performance parameters and service quality requirements associated with the first process more than twice, the adjustment module is used to perform data migration between the first memory and the second memory according to the performance parameters and service quality requirements of the first process for the Xth time, when the service performance indicated by the performance parameters of the first process is closer to the performance requirement indicated by the service quality requirements than before the Xth data migration, perform data migration between the first memory and the second memory according to the performance parameters and service quality requirements of the first process for the X+1th time, where X is a positive integer.
  • the performance parameter set includes at least one performance parameter, and the at least one performance parameter is selected from: instruction execution speed related parameters, memory access latency, and memory access bandwidth.
  • the instruction execution speed related parameters may be instructions per cycle (IPC) or cycles per instruction (CPI). IPC and memory access bandwidth are positively correlated with service performance; CPI and memory access latency are negatively correlated with service performance.
  • the first memory includes dynamic random access memory (DRAM), and the second memory includes storage class memory (SCM).
  • DRAM dynamic random access memory
  • SCM storage class memory
  • a memory management system which includes a processor and a memory; the memory is used to store software programs, and the processor executes the software programs stored in the memory so that the memory management system implements any possible implementation method of the first aspect.
  • a computer-readable storage medium stores computer instructions.
  • the computer device executes a method of any possible implementation of the first aspect.
  • a computer program product comprising instructions, which, when executed on a computer device, enables the computer device to execute a method of any possible implementation of the first aspect.
  • a chip including a processor and a power supply circuit, wherein the power supply circuit is used to power the processor, and the processor is used to implement a method in any possible implementation manner of the first aspect above.
  • another chip comprising: an input interface, an output interface, a processor and a memory, wherein the input interface, the output interface, the processor and the memory are connected via an internal connection path, and the processor is used to execute at least one program code in the memory, and when the at least one program code is executed, the processor is used to execute the method in any possible implementation manner of the above-mentioned first aspect.
  • FIG1 is a schematic diagram of a structure of an application scenario provided by the present application.
  • FIG2 is a flow chart of a memory management method provided by the present application.
  • FIG. 3 is a schematic diagram of another flow chart of adjusting the storage space size of the memory associated with the first process in the memory management method provided by the present application;
  • FIG4 is a schematic diagram of the structure of a memory management device provided by the present application.
  • FIG5 is a schematic diagram of the structure of a computer device provided by the present application.
  • the present application proposes a memory management method, which first determines the first process that does not meet the service quality requirements based on the performance parameter set and service quality requirements of each process running in the hybrid memory system, and then adjusts the size of the storage space of the memory with different performance associated with the first process respectively, so that the first process meets the service quality requirements.
  • FIG. 1 is a schematic diagram of an application scenario provided by the present application.
  • the memory management method provided by the present application is applicable to a hybrid memory system.
  • the hybrid memory system refers to a computer system including a hybrid memory, which can be implemented as a server or a desktop computer.
  • the hybrid memory system includes at least a processor 101 , a memory 102 , and a controller 103 .
  • the processor 101 is a central processing unit (CPU) for processing data from outside the hybrid memory system or data generated inside the hybrid memory system.
  • the processor 101 includes at least one core 1011 and a cache 1012.
  • the processor 101 shown in FIG. 1 includes two cores 1011.
  • the cache 1012 is a layer of cache structure located between the core 1011 of the processor and the memory 102.
  • the cache 1012 includes a first-level data cache (L1data cache, L1D-cache) (i.e., L1-D in FIG. 1), a first-level instruction cache (L1instruction cache, L1I-cache) (i.e., L1-I in FIG.
  • the first-level data cache, the first-level instruction cache and the second-level cache are all private caches of the corresponding core 1011, and the LLC is a shared cache between multiple cores 1011, which is used to reduce the overhead of inter-core communication.
  • the processor 101 is used to obtain frequently used data from the cache 1012 for processing, or it can also directly obtain data from the memory 102 for processing.
  • the cache 1012 is used to store data pre-fetched from the memory 102 for the processor 101 to obtain, thereby reducing the latency of the processor 101 obtaining data from the memory 102.
  • Memory 102 refers to a memory with which the processor 101 can exchange data. It can read and write data at any time, and at a very high speed, and serves as a temporary data storage for an operating system or other running programs.
  • Memory 102 includes at least two storage media with different performances.
  • memory 102 includes a first memory 1021 and a second memory 1022, and the performance of the first memory 1021 is higher than the performance of the second memory 1022.
  • the performance of the memory can be considered from aspects such as access speed and/or access latency.
  • the memory 102 may also include a third memory (not shown) with performance different from that of the first memory and the second memory. This embodiment does not limit the number and type of memories, as long as it includes at least two memories with different performances.
  • the first memory 1021 may be a DRAM
  • the second memory 1022 may be an SCM.
  • DRAM is a semiconductor memory, and like most RAMs, is a volatile memory device.
  • SCM is a composite storage technology that combines the characteristics of a traditional storage device and a memory. SCM can provide faster read and write speeds than a hard disk, but has a slower access speed than DRAM, and is cheaper than DRAM.
  • SCM phase change random access memory
  • FeRAM ferroelectric random access memory
  • MRAM magnetic random access memory
  • PRAM resistive random access memory
  • NRAM nanotube random access memory
  • PCM phase change random access memory
  • the first memory 1021 can also be a dual in-line memory module or a dual-line memory module (DIMM), that is, a module composed of dynamic random access memory (DRAM), and the second memory 1022 can also be a solid state drive (Solid State Disk, SSD) and the like.
  • DIMM dual in-line memory module
  • DIMM dual-line memory module
  • SSD Solid State Disk
  • the memory 102 may also include other RAMs, such as static random access memory (SRAM).
  • the memory 102 may include not only RAM but also read-only memory (ROM).
  • ROM read-only memory
  • ROM may be programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), etc.
  • first memory 1021 as DRAM
  • second memory 1022 as SCM
  • the memory 102 can be configured to have a power-saving function.
  • the power-saving function means that when the system loses power and then powers on again, the data stored in the memory will not be lost.
  • the memory with the power-saving function is called a non-volatile memory.
  • the memory 102 can be connected to the processor 101 through a consistency interface such as a compute express link (CXL) interface.
  • a consistency interface such as a compute express link (CXL) interface.
  • the controller 103 may also be referred to as a memory controller, and is used to control the reading or writing of the memory 102.
  • the controller 103 may also perform data migration between various memories according to the data migration instruction of the processor 101. It is worth noting that the controller 103 may be a part of the processor 101 in addition to being an independent device outside the processor 101 as shown in FIG. 1 .
  • the controller 103 may include a storage module 1031, a page table mapping module 1032, a statistics module 1033, a migration module 1034, an arbitration module 1035, a first memory controller 1036, and a second memory controller 1037.
  • the storage module 1031 is used to store a transaction queue, a page table, and page table statistics.
  • the transaction queue includes a plurality of first memory access requests from the processor 101, and the first memory access request may be a read request or a write request.
  • the first memory access request carries a global address, which is obtained based on the logical address conversion.
  • the page table mapping module 1032 is used to query the page table to obtain the media address corresponding to the global address in the first memory access request; and after replacing the global address in the first memory access request with the media address, it is sent to the arbitration module 1035.
  • a logical address refers to an address visible to an application, which may also be called a virtual address;
  • a global address refers to an address obtained by uniformly addressing different types of storage media, which facilitates the operating system to directly allocate resources to a process;
  • a medium address is a physical address of a storage medium. Address refers to the specific location where the data is to be written.
  • the statistics module 1033 is used to count the heat of the page table according to the global address corresponding to the first memory access request in the transaction queue to obtain the heat information of the page table.
  • the heat information of the page table includes the heat of each page table.
  • a page table corresponds to multiple media addresses.
  • the heat of the page table can be determined based on the access records of all media addresses contained in the page table. For example, the sum of the number of accesses of all media addresses contained in a page table can be used as the heat of the page table.
  • the statistics module 1033 is also used to send the page table statistics information to the processor 101.
  • the processor 101 generates a data migration instruction according to the heat information of the page table and the data migration strategy, and sends the data migration instruction to the controller 103.
  • the data migration instruction is used to instruct to migrate the data of the source memory to the destination memory. For example, the data in the first memory is migrated to the second memory, or the data in the second memory is migrated to the first memory.
  • the migration module 1034 in the controller 103 is used to convert the data migration instruction into a second memory access instruction, and send the second memory access instruction to the arbitration module 1035.
  • the migration module 1034 is also used to modify the mapping relationship between the global address and the medium address in the page table according to the data migration instruction, so that the global address related to the data migration instruction is mapped to the new medium address.
  • the arbitration module 1035 is used to send memory access instructions corresponding to different memories to corresponding memory controllers, and control the execution order of memory access instructions. For example, the read and write requests of the first memory are sent to the first memory controller 1036, and the read and write requests of the second memory are sent to the second memory controller 1037.
  • the first memory controller 1036 is used to control the read and write of the first memory
  • the second memory controller 1037 is used to control the read and write of the second memory.
  • each module in the controller 103 can be implemented by an integrated circuit chip, for example, a field programmable gate array (FPGA). Since the controller 103 is mainly used to control the migration of data in the first memory and the second memory, it can also be called a migration device.
  • FPGA field programmable gate array
  • the hybrid memory system may also include other storage devices such as a hard disk, which is not limited in this embodiment of the present application.
  • FIG2 is a flow chart of a memory management method provided by the present application.
  • the method can be executed by the processor 101 in the aforementioned hybrid memory system (for example, the migration background process in the processor 101), or by the controller 103.
  • the following is an exemplary description using the execution by the processor 101 as an example.
  • the method includes the following process.
  • Step 201 The processor obtains memory allocation information of a first process.
  • the memory allocation information of the first process is used to indicate the storage space size of the first memory and the storage space size of the second memory corresponding to the first process.
  • Step 201 can be performed when the processor obtains a memory allocation request of the first process.
  • the memory allocation request is used to request to allocate memory space for the first process.
  • the memory allocation request may include the total storage space size requested.
  • the memory allocation information of the first process includes a set ratio specified by a user to which the first process belongs, and the set ratio is used to indicate the ratio of the storage space size of the first memory and the ratio of the storage space size of the second memory in the total storage space size requested by the process.
  • the total storage space size requested is XG
  • it is assumed to be q% of the set ratio specified by the user to which process A belongs then the storage space size of the first memory corresponding to process A is X*q%G, and the storage space size of the second memory corresponding to process A is X*(1-q)%G.
  • the set ratios specified for all users may be the same. In other examples, the set ratios specified for different users may be different. For example, the set ratio corresponding to a user with a high priority is larger than the set ratio corresponding to a user with a low priority.
  • the total storage space requested by the process is allocated from the first memory or the second memory by default.
  • Step 202 The processor allocates memory to the first process according to the memory allocation information.
  • the step 202 includes: the processor determines whether the storage space size corresponding to the free memory page in the first memory is greater than or equal to the storage space size of the first memory indicated by the memory allocation information. If there are free memory pages in the first memory, and the storage space size of the free memory pages is greater than or equal to the storage space size of the first memory indicated by the memory allocation information, then a storage space of a corresponding size is directly divided out from the free memory pages of the first memory and allocated to the first process.
  • the storage space size of the free memory pages in the first memory is less than the storage space size of the first memory indicated by the memory allocation information, or even if there are no free memory pages in the first memory, it is necessary to first migrate the data in the occupied memory pages in the first memory, and then divide out a storage space of a corresponding size from the free memory pages of the first memory and allocate it to the first process.
  • the data can be selected according to the number of running processes, the storage space size of the first memory associated with the running processes, and the priority of the user to whom the running processes belong.
  • at least one other process is also running at the same time.
  • running at the same time refers to the process of running data in the same hybrid memory.
  • the hybrid memory system may be executed by a CPU in the hybrid memory system, for example, by the same core of the same CPU in the hybrid memory system, or by different cores of the same CPU in the hybrid memory system; or by different CPUs in the hybrid memory system.
  • the storage space size of the first memory indicated by the memory allocation information can be evenly divided according to the number of running processes to obtain the amount of data that needs to be migrated for each process; then, according to the amount of data that needs to be migrated for each process, the data with lower popularity of the corresponding process is migrated from the first memory to the second memory.
  • the user process with a lower priority than the user to which the first process belongs can be first determined from the running processes; then, the storage space size of the first memory indicated by the memory allocation information can be evenly divided according to the determined number of processes to obtain the amount of data that needs to be migrated for each low-priority user process; finally, according to the amount of data that needs to be migrated for each process, the data with lower popularity of the corresponding process is migrated from the first memory to the second memory.
  • the step 202 also includes: the processor determines whether the storage space size corresponding to the free memory page in the second memory is greater than or equal to the storage space size of the second memory indicated by the memory allocation information. If there is a free memory page in the second memory, and the storage space size corresponding to the free memory page is greater than the size of the second memory indicated by the memory allocation information, a storage space of a corresponding size is divided from the free memory page of the second memory and allocated to the first process.
  • the storage space size of the second memory indicated by the memory allocation information can be directly divided from the free memory pages of the second memory.
  • the processor may first allocate a first memory to the first process, and then allocate a second memory to the first process; or, the processor may first allocate a second memory to the first process, and then allocate a first memory to the first process, and this application does not impose any restrictions on this.
  • allocating the storage space of the first memory to the first process means storing the data associated with the first process in the corresponding storage space of the first memory, and saving the mapping relationship between the medium address and the global address of the storage space after the data is stored in the page table.
  • Allocating the storage space of the second memory to the first process means storing the data associated with the first process in the corresponding storage space of the second memory, and saving the mapping relationship between the medium address and the global address of the storage space after the data is stored in the page table. In this way, the first process can run normally based on the allocated memory.
  • the memory allocation information may be determined based on a mapping relationship between an identifier (PID) of the first process and the memory allocation information. For example, the processor may first determine the user to which the first process belongs based on the PID of the first process, and then obtain the memory allocation information of the user from the user's contract information.
  • the contract information may be stored locally in the hybrid memory system or obtained from other external servers.
  • Step 203 Obtain a set of performance parameters of a process running in the hybrid memory system.
  • the performance parameter set includes performance parameters associated with multiple processes running simultaneously. Each performance parameter is used to indicate the service performance of the associated process.
  • the performance parameter set includes at least one performance parameter, and the at least one performance parameter is selected from a parameter related to instruction execution speed, a memory access latency, and a memory access bandwidth.
  • the parameter related to instruction execution speed may be an IPC or a CPI.
  • IPC represents the number of computer instructions executed per clock cycle.
  • CPI represents the average number of clock cycles required to execute each computer instruction.
  • the IPC can be periodically obtained by using the resource director technology (RDT) of Intel's Xeon CPU.
  • RDT resource director technology
  • CPI is the derivative of IPC and can be calculated based on IPC.
  • the memory access bandwidth can be obtained in the following manner: first, obtain the number of cache misses of the first process per unit time and the size of data to be accessed corresponding to each miss (e.g., the number of bytes); then, calculate the memory access bandwidth of the first process according to the number of cache misses and the size of data to be accessed corresponding to each miss. For example, the ratio of the product of the number of cache misses of the first process and the size of data to be accessed corresponding to each miss to the unit time is the memory access bandwidth corresponding to the first process.
  • a miss in the cache means that the memory needs to be accessed to obtain the corresponding data, so the number of misses in the cache is the number of memory access instructions.
  • the size of data to be accessed corresponding to each miss is related to the computer architecture. For example, for an X86 system, the size of data to be accessed corresponding to each miss is 64 bytes.
  • the memory access latency can be obtained in the following way: first, count the number of memory access instructions of the first process in different latency ranges.
  • the latency range can be expressed in terms of the number of clock cycles, such as 0 ⁇ a1, a1 ⁇ a2..., where a1, a2... are integers representing the number of clock cycles; then determine the memory access latency of the first process based on the number of memory access instructions of the first process in each latency range.
  • the number of memory access instructions of the first process in different delay ranges can be counted by a performance analysis tool, such as perf of a Linux system.
  • Step 204 Determine whether there is a process that does not meet the quality of service requirement in the hybrid memory system according to the performance parameter set obtained in step 203. If there is no process that does not meet the quality of service requirement in the hybrid memory system, exit the current process. If there is a process that does not meet the quality of service requirement in the hybrid memory system, execute step 205.
  • the quality of service requirement is used to indicate the performance requirement of the corresponding process.
  • the following first describes the method for determining whether the first process meets the service quality requirements.
  • the method for determining whether other processes meet the service quality requirements is the same as the method for determining whether the first process meets the service quality requirements, and will not be described again.
  • the following description will be expanded by taking the case where the first process does not meet the service quality requirements as an example.
  • other processes do not meet the service quality requirements, they can be processed by referring to the processing method for the first process.
  • the service quality requirement may include a relative quality requirement.
  • the relative quality requirement is used to indicate that the relationship between the service performance of two processes needs to meet a priority condition.
  • the priority condition includes: the service performance of the process corresponding to the high-priority user is better than the service performance of the process corresponding to the low-priority user; the service performance of the process corresponding to the same priority user is the same.
  • the first process does not meet the relative quality requirement.
  • the relationship between the service performance of the first process and the service performance of another process meets the priority condition, it means that the first process meets the relative quality requirement.
  • the relationship between the service performance of the first process and the second process satisfies the priority condition as an example for explanation.
  • the relationship between the service performance of the first process and the second process satisfies the priority condition mainly in the following three cases:
  • the priority of the user to which the first process belongs is higher than the priority of the user to which the second process belongs, and the service performance of the first process is better than the service performance of the second process.
  • Case 3 the priority of the user to which the first process belongs is the same as the priority of the user to which the second process belongs, and the service performance of the first process is the same as the service performance of the second process.
  • the relationship between the service performance of the first process and the service performance of the second process can be determined according to the relationship between the performance parameters associated with the first process and the performance parameters associated with the second process.
  • the performance parameters associated with the first process and the performance parameters associated with the second process are the same performance parameters.
  • the quality of service requires that the performance parameter variation range be divided into multiple intervals.
  • the performance parameter associated with the first process and the performance parameter associated with the second process are in the same interval, it indicates that the service performance of the first process is the same as the service performance of the second process.
  • the better the service performance when any value in the interval where the performance parameter associated with the first process is located is greater than any value in the interval where the parameter associated with the second process is located, it indicates that the service performance of the first process is better than the service performance of the second process; and when any value in the interval where the performance parameter associated with the first process is located is less than any value in the interval where the parameter associated with the second process is located, it indicates that the service performance of the first process is worse than the service performance of the second process.
  • the better the service performance when any value in the interval where the performance parameter associated with the first process is located is less than any value in the interval where the parameter associated with the second process is located, it indicates that the service performance of the first process is better than the service performance of the second process; and when any value in the interval where the performance parameter associated with the first process is located is greater than any value in the interval where the parameter associated with the second process is located, it indicates that the service performance of the first process is worse than the service performance of the second process.
  • the difference between the performance parameter associated with the first process and the performance parameter associated with the second process is greater than or equal to the first set value, it indicates that the service performance of the first process is the same as the service performance of the second process.
  • the first set value may be set to be relatively small, for example, it may be equal to 0.
  • the better the service performance when the difference between the performance parameter associated with the first process and the performance parameter associated with the second process is greater than the first set value, and the performance parameter associated with the first process is greater than the performance parameter associated with the second process, it indicates that the service performance of the first process is better than the service performance of the second process; and when the difference between the performance parameter associated with the first process and the performance parameter associated with the second process is greater than the first set value, and the performance parameter associated with the first process is smaller than the performance parameter associated with the second process, it indicates that the service performance of the first process is worse than the service performance of the second process.
  • the service performance of the first process is better than the service performance of the second process
  • the difference between the performance parameter associated with the first process and the performance parameter associated with the second process is greater than the first set value, and the performance parameter associated with the first process is smaller than the performance parameter associated with the second process, it means that the service performance of the first process is better than the service performance of the second process; and when the difference between the performance parameter associated with the first process and the performance parameter associated with the second process is greater than the first set value, and the performance parameter associated with the first process is larger than the performance parameter associated with the second process, it means that the service performance of the first process is worse than the service performance of the second process.
  • the service quality requirement may include an absolute quality requirement, where the absolute quality requirement is used to indicate that the service performance of the process needs to meet the performance parameter index specified in the SLA.
  • the service quality requirement is an absolute quality requirement, it can be determined whether the service performance of the first process meets the service quality requirement according to the relationship between the performance parameter of the first process and the performance parameter threshold specified in the SLA.
  • the performance parameter of the first process When the performance parameter of the first process is greater than or equal to the first performance parameter threshold specified in the SLA, it indicates that the first process meets the service quality requirement. When the performance parameter of the first process is less than the first performance parameter threshold specified in the SLA, it indicates that the first process does not meet the service quality requirement.
  • the performance parameter of the first process When the performance parameter of the first process is less than or equal to the second performance parameter threshold specified in the SLA, it indicates that the first process meets the service quality requirement. When the performance parameter of the first process is greater than the second performance parameter threshold specified in the SLA, it indicates that the first process does not meet the service quality requirement.
  • the first performance parameter threshold may be a performance parameter upper limit, such as an upper limit of memory access latency or an IPC upper limit.
  • the second performance parameter threshold may be a performance parameter lower limit, such as a memory access bandwidth lower limit or a CPI lower limit.
  • the memory access latency of the first process is greater than the upper limit of the memory access latency specified in the SLA, it is determined that the first process does not meet the service quality requirements; and when the memory access latency of the first process is less than or equal to the upper limit of the memory access latency specified in the SLA, it is determined that the first process meets the service quality requirements.
  • the memory access bandwidth of the first process is less than the memory access bandwidth lower limit specified in the SLA, it is determined that the first process does not meet the service quality requirements; and when the memory access bandwidth of the first process is greater than or equal to the memory access bandwidth lower limit specified in the SLA, it is determined that the first process meets the service quality requirements.
  • the IPC of the first process when the IPC of the first process is less than the IPC lower limit specified in the SLA, it is determined that the first process does not meet the service quality requirements; and when the IPC of the first process is greater than or equal to the IPC lower limit specified in the SLA, it is determined that the first process meets the service quality requirements.
  • the values of performance parameter indicators corresponding to different user priorities are different.
  • the upper limit of memory access latency for users with higher priority is less than the upper limit of memory access latency for users with lower priority.
  • the lower limit of memory access bandwidth for users with higher priority is greater than the lower limit of memory access bandwidth for users with lower priority.
  • the lower limit of IPC for users with higher priority is greater than the lower limit of IPC for users with lower priority.
  • the user priority may be pre-set.
  • the user priority may be obtained from the user contract information, and the user contract information may be stored locally or in other servers.
  • the service quality requirement includes the aforementioned relative quality requirement and absolute quality requirement.
  • the relationship between the service performance of the first process and the other service performances satisfies the priority condition, and the performance parameter of the first process meets the performance parameter threshold specified in the SLA, it means that the first process meets the service quality requirement.
  • the performance parameter of the first process meets the performance parameter threshold specified in the SLA, it means that the first process meets the service quality requirement.
  • Step 205 The processor obtains the temperature information of the memory page in the first memory and the temperature information of the memory page in the second memory.
  • the heat information of the memory page in the first memory is used to indicate the access heat of the data in each memory page contained in the first memory.
  • the heat information of the memory page in the second memory is used to indicate the access heat of the data in each memory page contained in the second memory.
  • the access heat of the data in the memory page is referred to as the heat of the memory page hereinafter.
  • the heat of a memory page indicates the possibility that the memory page will be frequently accessed in the future.
  • the higher the heat of a memory page the more likely it is to be frequently accessed. Conversely, the lower the heat of a memory page, the less likely it is to be frequently accessed.
  • the historical access information of a memory page can be used to predict the possibility that the memory page will be frequently accessed in the future, that is, to measure the heat of the memory page.
  • the historical access information includes at least one of the last access time of the memory page and the number of accesses to the memory page in a statistical period.
  • the last access time refers to the time when the memory page was last accessed up to the current time, or the last access time within a preset time period.
  • the number of accesses to the memory page in a statistical period is equal to the sum of the number of accesses to each global address in the memory page in the statistical period.
  • the length of the statistical period can be set according to actual needs, and the embodiments of the present application do not limit this.
  • Step 206 Perform data migration between the first memory and the second memory according to the heat information of the memory page in the first memory and the heat information of the memory page in the second memory.
  • the data migration between the first memory and the second memory includes migrating data in a cold memory page in the first memory to the second memory, or migrating data in a hot memory page in the second memory to the first memory.
  • the data in the cold memory pages in the first memory may be migrated to the second memory using the least recently used (LRU) algorithm or the least frequently used (LFU) algorithm.
  • LRU refers to giving priority to eliminating or replacing the memory pages in the first memory that have not been used for the longest time, that is, a certain time is preset, and the memory pages in the first memory that have not been accessed within the preset time are regarded as cold memory pages, and the data in the cold memory pages in the first memory are migrated to the second memory.
  • LFU algorithm It refers to eliminating or replacing the memory page with the least number of accesses in a certain period of time (i.e.
  • the aforementioned statistical period) in the first memory that is, a certain time length and number of accesses are preset, and the memory page in the first memory whose number of accesses within the preset time length does not exceed the first preset number of accesses is used as a cold memory page, and the data in the cold memory page in the first memory is migrated to the second memory.
  • a memory page in the second memory whose number of accesses in the latest preset time period exceeds a second preset number of accesses can be used as a hot memory page, and data in the hot memory page in the second memory can be migrated to the first memory.
  • the first preset access times corresponding to different processes may be the same or different, and the second preset access times corresponding to different processes may be the same or different.
  • the first preset access times corresponding to the same process may be less than the second preset access times.
  • the global address of the data is not changed. Instead, after the data to be migrated is transferred from the memory of the source end to the memory of the destination end, a mapping relationship is established between the global address of the data and the new medium address, and the mapping relationship is saved in the page table.
  • data migration may be performed between the first memory and the second memory only for the data of the first process according to the heat information of the memory page in the first memory and the heat information of the memory page in the second memory associated with the first process.
  • data migration is not performed between the first memory and the second memory to avoid a large amount of data migration occupying system resources.
  • Step 207 Obtain a set of performance parameters of the process running in the hybrid memory system.
  • step 206 the memory pages with higher temperature among the memory pages associated with each process are migrated to the first memory, causing the performance parameters associated with each process to change. Therefore, it is necessary to obtain the performance parameter set of the processes running in the hybrid memory system again to determine whether each process meets the service quality requirements.
  • Step 208 According to the performance parameter set obtained in step 207, it is determined that the first process in the hybrid memory system does not meet the quality of service requirement.
  • step 208 refers to step 204 .
  • the first process is taken as an example in step 204 and step 208 as a process that does not meet the service quality requirement.
  • the processes that do not meet the service quality requirement determined at different times may not be the same process.
  • Each process is adjusted in the same manner as the first process, and a detailed description is omitted here.
  • Step 209 Compare the performance parameters and the service quality requirements associated with the first process.
  • steps 210a to 213a are executed; when the performance parameter of the first process indicates that the service performance of the first process is higher than the performance requirement indicated by the service quality requirement, steps 210b to 212b are executed (see FIG. 3 ).
  • steps 210b to 212b are executed (see FIG. 3 ).
  • the performance parameter of the first process indicates that the service performance of the first process is lower than the performance requirement indicated by the service quality requirement and the performance parameter of the first process indicates that the service performance of the first process is higher than the performance requirement indicated by the service quality requirement, both of which mean that the service performance of the first process does not meet the service quality requirement.
  • Step 210a Determine the amount of data to be migrated corresponding to the first process.
  • the amount of data to be migrated is a set value.
  • the set value is an integer multiple of the storage space size of a memory page. Migrating a fixed amount of data each time is simple to implement and helps to simplify the algorithm process.
  • the amount of data to be migrated can be determined based on the gap between the performance parameter of the first process and the performance requirement indicated by the service quality requirement. The larger the gap, the larger the amount of data to be migrated; the smaller the gap, the smaller the amount of data to be migrated. Since the amount of data to be migrated is larger, the storage space size of the first memory associated with the first process and the storage space size of the second memory associated with the first process change faster, and the performance parameter of the first process changes faster, so that the service performance of the first process can be quickly adjusted to improve efficiency.
  • the amount of data to be migrated may be determined according to a difference between a performance parameter associated with the first process and a performance parameter indicator corresponding to a user to which the first process belongs. For example, the greater the difference between the performance parameter associated with the first process and the performance parameter indicator corresponding to the user to which the first process belongs, the greater the amount of data to be migrated.
  • the relationship between the difference and the amount of data to be migrated can be saved in advance.
  • the relationship can include multiple difference value ranges and the amount of data corresponding to each value range. Different difference value ranges correspond to different migration amounts.
  • the amount of data to be migrated can be determined according to the difference between the memory access latency associated with the first process and the upper limit of the memory access latency corresponding to the user to which the first process belongs, or according to the difference between the memory access bandwidth of the first process and the lower limit of the memory access bandwidth corresponding to the user to which the first process belongs. Or it is determined according to the difference between the IPC of the first process and the IPC lower limit corresponding to the user to which the first process belongs.
  • the amount of data to be migrated may be determined based on a difference between a performance parameter associated with the first process and an average value of performance parameters of all processes at a target priority.
  • the target priority is a priority corresponding to a user to which the first process belongs. For example, the greater the difference between the performance parameter associated with the first process and the average value, the greater the amount of data to be migrated.
  • the amount of data to be migrated may be determined according to the application type corresponding to the first process.
  • the application type includes sensitive applications and non-sensitive applications.
  • the amount of data to be migrated corresponding to sensitive applications is greater than the amount of data to be migrated corresponding to non-sensitive applications. And the higher the sensitivity of the sensitive application, the larger the corresponding amount of data to be migrated.
  • the method may further include: determining the application type of the first process according to the amount of data migration of any data migration (which may be data migration performed according to service quality requirements and performance parameters, or data migration performed according to the heat of memory pages) and the IPC change of the first process before and after the data migration.
  • the IPC change of the first process before and after the data migration is equal to the IPC of the first process after the data migration minus the IPC of the first process before the data migration.
  • the data migration amount of any data migration and the IPC change of the first process before and after the data migration can include: first, calculating the sensitivity of the first process according to the data migration amount of any data migration and the IPC change of the first process before and after the data migration; determining the application type of the first process according to the sensitivity of the first process and the sensitivity threshold.
  • the sensitivity represents the sensitivity of the instruction execution speed of the process to the change of the storage space size of the first memory associated with the process.
  • the sensitivity threshold can be set according to actual needs.
  • the sensitivity can be calculated in the following way: the first step is to divide the migration amount of data migration by the unit migration amount to obtain a ratio, where the unit migration amount is an integer multiple of the storage space size of the memory page and can be set according to actual needs; the second step is to divide the IPC change of the first process before and after the data migration by the ratio to obtain the sensitivity, that is, the IPC change corresponding to the unit migration amount.
  • the IPC change corresponding to the unit migration amount can indirectly reflect the impact of the latency change on the IPC change.
  • Step 211a The processor determines whether the size of the storage space corresponding to the free memory page in the first memory is greater than or equal to the size of the data to be migrated. If the size of the storage space corresponding to the free memory page in the first memory is less than the size of the data to be migrated, steps 212a to 213a are executed; if the size of the storage space corresponding to the free memory page in the first memory is greater than or equal to the size of the data to be migrated, step 213a is directly executed.
  • Step 212a The processor instructs to migrate part of the data of the second process from the first memory to the second memory.
  • the second process can be selected based on at least one of the priority of the user to which the process belongs, the sensitivity of the process, and the relationship between the service performance indicated by the performance parameter of the process and the performance requirement indicated by the service quality requirement.
  • the first method is to determine the second process according to the priority of the user to which the process belongs. For example, a process whose priority is lower than the priority of the user to which the first process belongs is used as the second process, that is, the priority of the user to which the second process belongs is lower than the priority of the user to which the first process belongs.
  • the second method is to determine the second process according to the sensitivity of the process. For example, a process whose sensitivity is less than a sensitivity threshold is taken as the second process, that is, the sensitivity of the second process is less than the sensitivity threshold.
  • the sensitivity of the second process is used to indicate the sensitivity of the instruction execution speed of the second process to the change of the storage space size of the first memory associated with the second process. The greater the sensitivity, the higher the sensitivity of the instruction execution speed of the second process to the change of the storage space size of the first memory associated with the second process; conversely, the smaller the sensitivity, the lower the sensitivity of the instruction execution speed of the second process to the change of the storage space size of the first memory associated with the second process.
  • the third method is to determine the second process according to the relationship between the service performance indicated by the performance parameter of the process and the performance requirement indicated by the service quality requirement. For example, a process whose service performance indicated by the performance parameter is higher than the performance requirement indicated by the service quality requirement is used as the second process. That is, the service performance indicated by the performance parameter of the second process is higher than the performance requirement indicated by the service quality requirement.
  • the first process does not meet the absolute quality requirement
  • a process having a service performance higher than that indicated by the service quality requirement is preferred.
  • the process that can be required can be used as the second process.
  • a process with a service performance higher than the performance requirement indicated by the service quality requirement is preferentially selected as the second process under the target priority. That is, for performance parameters positively correlated with service performance, other processes with performance parameters higher than the average performance parameters of each process under the target priority are preferentially selected; and for performance parameters negatively correlated with service performance, other processes with performance parameters lower than the average performance parameters of each process under the target priority are preferentially selected.
  • the situations where the second process is determined based on at least two factors include the following:
  • the process of the user whose priority is lower than the priority of the user to which the first process belongs and whose sensitivity is less than the sensitivity threshold can be preferentially selected as the second process; when there is no process of the user whose priority is lower than the priority of the user to which the first process belongs and whose sensitivity is less than the sensitivity threshold, the process of the user whose priority is lower than the priority of the user to which the first process belongs but whose sensitivity is greater than or equal to the sensitivity threshold is selected as the second process.
  • the service quality of the process of the high-priority user can be preferentially guaranteed, and the impact on the service quality of the low-priority user can be minimized.
  • the process corresponding to the non-sensitive application whose service performance is higher than the performance requirements indicated by the service quality requirements is preferentially selected as the second process; if there is no process corresponding to the non-sensitive application whose service performance is higher than the performance requirements indicated by the service quality requirements, the process corresponding to the non-sensitive application is selected as the second process.
  • the process corresponding to the non-sensitive application although the memory access delay increases, the change in its instruction execution speed is small. Therefore, by selecting such a process as the second process, the storage space of the first memory associated with the second process is reduced, and its service performance is less affected. In this way, the impact on the service quality of the second process can be minimized.
  • the priority of the user to which the process belongs is given priority, then the sensitivity of the process is given, and finally the relationship between the service performance indicated by the performance parameters of the process and the performance requirements indicated by the service quality requirements is given.
  • a process with a lower priority than the priority of the user to which the first process belongs a process corresponding to a non-sensitive application and having a service performance higher than the performance requirements indicated by the service quality requirements and having a service performance higher than the performance requirements indicated by the service quality requirements can be given priority as the second process.
  • a process corresponding to a non-sensitive application in a process with a lower priority than the priority of the user to which the first process belongs is selected as the second process. If there is no process corresponding to a non-sensitive application in a process with a lower priority than the priority of the user to which the first process belongs, then a process with a lower priority than the priority of the user to which the first process belongs, a process with a service performance higher than the performance requirements indicated by the service quality requirements and having a service performance higher than the performance requirements indicated by the service quality requirements is selected as the second process.
  • the second process is selected from the processes of the user with the same priority as the user to which the first process belongs.
  • the selection method is the same as selecting the second process from the process of a user whose priority is lower than the priority of the user to which the first process belongs. In this way, the service quality of the process of the high-priority user can be guaranteed first, and the impact on the service quality of the low-priority user can be minimized.
  • step 212a the processor sends a data migration instruction to the memory controller, where the data migration instruction is used to instruct to migrate data in the storage space of the first memory associated with the second process to the second memory.
  • Step 213a The processor instructs to migrate part of the data of the first process from the second memory to the first memory according to the amount of data to be migrated determined in step 210a, so as to increase the size of the storage space of the first memory associated with the first process and reduce the size of the storage space of the second memory associated with the first process.
  • the processor may send a first data migration instruction to the memory controller, the first data migration instruction being used to instruct data in the storage space of the first memory associated with the first process to be migrated to the second memory.
  • the size of the storage space of the first memory associated with the first process can be reduced and the size of the storage space of the second memory associated with the first process can be increased.
  • data in a first target memory page in the second memory can be migrated to the first memory, the heat of the first target memory page is higher than the heat of a non-first target memory page in the second memory, and both the first target memory page and the non-first target memory page are associated with the first process, that is, the non-first target memory page is a memory page in the second memory that belongs to the first process except the first target memory page.
  • the amount of data corresponding to the first target memory page is equal to the aforementioned amount of data to be migrated.
  • the size of the storage space of the first memory associated with the first process can be increased and the size of the storage space of the second memory associated with the first process can be reduced, thereby improving the service performance of the first process.
  • the memory pages associated with the first process in the second memory may be sorted in descending order of heat, and the first N memory pages may be used as the first target memory pages (ie, hot memory pages), where N is a set value.
  • the global address of the memory space allocated is certain. Therefore, there is a mapping relationship between the process identification (PID) and the global address. According to the mapping relationship between the process identification and the global address, the corresponding address of the first process can be determined.
  • the global address can sort the memory pages associated with the first process in the second memory in descending order of heat according to the memory type and heat information corresponding to the global address corresponding to the first process.
  • Step 210b The processor determines the size of the amount of data to be migrated corresponding to the first process.
  • step 210b can refer to step 210a, and the detailed description is omitted here.
  • Step 211b The processor determines whether the size of the storage space corresponding to the free memory page in the second memory is greater than or equal to the size of the data to be migrated.
  • step 212b is directly executed.
  • the storage space size corresponding to the free memory page in the first memory is smaller than the size of the data to be migrated, it indicates that the capacity of the hybrid memory system may be insufficient, and the current process can be exited.
  • a prompt message can be output, which is used to remind the user that the capacity of the hybrid memory system may be insufficient.
  • Step 212b The processor instructs to migrate part of the data of the first process from the first memory to the second memory according to the amount of data to be migrated determined in step 210b, so as to reduce the size of the storage space of the first memory associated with the first process and increase the size of the storage space of the second memory associated with the first process.
  • data in the second target memory page in the first memory can be migrated to the second memory, and the heat of the second target memory page is lower than the heat of the non-second target memory page in the first memory.
  • the second target memory page and the non-second target memory page are both associated with the first process
  • the non-second target memory page is the memory page in the first memory that belongs to the first process except the second target memory page.
  • the amount of data corresponding to the second target memory page is equal to the aforementioned amount of data to be migrated.
  • the size of the storage space of the first memory associated with the first process can be reduced, and the size of the storage space of the second memory associated with the first process can be increased, thereby reducing the service performance of the first process.
  • the memory pages associated with the first process in the first memory may be sorted in order of heat from low to high, and the first M memory pages may be used as the second target memory pages (ie, cold memory pages), where M is a set value.
  • the processor may send a second data migration instruction to the memory controller, wherein the second data migration instruction is used to instruct to migrate data in the storage space of the second memory associated with the first process to the first memory, thereby increasing the size of the storage space of the first memory associated with the first process and reducing the size of the storage space of the second memory associated with the first process.
  • the storage space of the first memory associated with the first process can be associated with at least one other process; or, the storage space of the first memory released by the first process is temporarily idle, and the storage space of the first memory associated with other processes does not change.
  • the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process can be adjusted respectively by performing data migration between the first memory and the second memory according to the performance parameters and service quality requirements associated with the first process. After performing data migration between the first memory and the second memory according to the performance parameters and service quality requirements associated with the first process, the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process change.
  • the first process can make full use of the high-performance first memory to improve processing efficiency, thereby providing better service quality.
  • the size of the storage space of the first memory associated with the first process refers to the size of the storage space occupied by the data of the first process in the first memory; the size of the storage space of the second memory associated with the first process refers to the size of the storage space occupied by the data of the first process in the second memory.
  • the first process can meet the quality of service requirement by performing a data migration between the first memory and the second memory according to the performance parameters and the quality of service requirement associated with the first process, and then exit the current process.
  • the first process may still not meet the quality of service requirement, and it is necessary to migrate data between the first memory and the second memory again according to the performance parameters and the quality of service requirement associated with the first process after the data migration... until the first process meets the quality of service requirement.
  • the first process after each data migration between the first memory and the second memory according to the performance parameters associated with the first process and the service quality requirements, it is determined whether the first process meets the service quality requirements according to the performance parameters associated with the first process after the data migration. If the first process does not meet the service quality requirements after the data migration, and the service performance indicated by the performance parameters associated with the first process is closer to the performance requirement indicated by the service quality requirements than the service performance corresponding to the performance parameters associated with the first process before the data migration, the first process is again determined according to the performance parameters associated with the first process after the data migration.
  • the performance parameters and service quality requirements associated with the first process are migrated between the first memory and the second memory, if after the data migration, the first process does not meet the service quality requirements, and the gap between the service performance indicated by the performance parameters associated with the first process and the service performance indicated by the performance parameters associated with the first process before the current data and the performance requirements indicated by the service quality requirements increases or remains unchanged, exit the current process.
  • the service performance corresponding to the performance parameters associated with the first process after data migration is closer to the performance requirements than the service performance corresponding to the performance parameters of the first process before data migration, indicating that the method of adjusting the size of the storage space of the first memory associated with the first process is effective, but still fails to meet the service quality requirements. Therefore, the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process can be adjusted in the same way.
  • the service performance corresponding to the performance parameters associated with the first process after data migration has a larger or unchanged gap with the performance requirements indicated by the service quality requirements, indicating that continuing to adjust the size of the storage space of the first memory associated with the first process has no significant effect on improving the service quality, and there is no need to perform data migration to save control resources of the storage system.
  • a set of performance parameters of the running processes is obtained, that is, the performance parameters associated with each running process are obtained. Since each performance parameter is used to indicate the service performance of the associated process, the first process that does not meet the service quality requirements can be determined based on the performance parameters associated with the process and the service quality requirements, and then the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process are adjusted respectively. It can be seen from the above method that the present application can determine the process that does not meet the service quality requirements based on the performance parameters associated with the process, and then adjust the size of the storage space of the high-performance memory associated with the process.
  • a dynamic memory allocation method is implemented, which can dynamically adjust the size of the storage space of the high-performance memory associated with the process in combination with the current service performance of the process, so that multiple processes running in the hybrid memory system can meet the service quality requirements while fully utilizing the storage space of the high-performance memory, thereby improving the user experience of multiple users.
  • the size of different memories associated with the process can be dynamically adjusted according to the current service performance of the process, the use efficiency of the high-performance memory is also improved.
  • FIG4 is a schematic diagram of the structure of a memory management device provided by the present application.
  • the device is applicable to the aforementioned hybrid memory system.
  • the device 300 includes: an acquisition module 301, a determination module 302, and an adjustment module 303.
  • the acquisition module 301 is used to obtain a set of performance parameters of a process running in the hybrid memory system
  • the performance parameter set includes performance parameters associated with more than two processes
  • each performance parameter is used to indicate the service performance of the associated process.
  • the determination module 302 is used to determine a first process that does not meet the service quality requirement based on the performance parameter set
  • the service quality requirement is used to indicate the performance requirement of the first process
  • the first process is one of the processes running in the hybrid memory system.
  • the adjustment module 303 is used to adjust the size of the storage space of the first memory associated with the first process and the size of the storage space of the second memory associated with the first process, respectively.
  • the determination module 302 is used to determine the first process in any of the following ways: determining the process associated with the first performance parameter in the performance parameter set as the first process, wherein the first performance parameter is less than the first performance parameter threshold specified in the SLA; or, determining the process associated with the second performance parameter in the performance parameter set as the first process, wherein the second performance parameter is greater than the second performance parameter threshold specified in the SLA; or, determining the process associated with the third performance parameter in the performance parameter set as the first process, wherein the relationship between the service performance indicated by the third performance parameter and the service performance indicated by the fourth performance parameter in the performance parameter set does not satisfy a priority condition, the priority condition including: the service performance indicated by the performance parameters of the process of the first priority is better than the service performance indicated by the performance parameters of the process of the second priority, wherein the first priority is higher than the second priority; and the service performance indicated by the performance parameters of two processes of the same priority are the same.
  • the adjustment module 303 is configured to perform data migration between the first memory and the second memory according to the performance parameters and service quality requirements associated with the first process until the first process meets the service quality requirements.
  • the adjustment module 303 is used to determine the amount of data to be migrated when a performance parameter associated with the first process indicates that the service performance of the first process is lower than the performance requirement indicated by the service quality requirement, and migrate part of the data of the first process from the second memory to the first memory according to the amount of data to be migrated, so as to increase the size of the storage space of the first memory associated with the first process and reduce the size of the storage space of the second memory associated with the first process.
  • the adjustment module 303 is used to migrate data in the first target memory page in the second memory to the first memory, the heat of the first target memory page is higher than the heat of the non-first target memory page in the second memory, and the first target memory page and the non-first target memory page are both associated with the first process.
  • the adjustment module 303 is used to determine the amount of data to be migrated when a performance parameter associated with the first process indicates that the service performance of the first process is higher than the performance requirement indicated by the service quality requirement, and migrate part of the data of the first process from the first memory to the second memory according to the amount of data to be migrated, so as to reduce the size of the storage space of the first memory associated with the first process and increase the size of the storage space of the second memory associated with the first process.
  • the adjustment module 303 is used to migrate data in the second target memory page in the first memory to the second memory, the heat of the second target memory page is lower than the heat of the non-second target memory page in the first memory, and the second target memory page and the non-second target memory page are both associated with the first process.
  • the adjustment module 303 is used to determine the amount of data to be migrated in any of the following ways: determining the amount of data to be migrated based on the gap between the service performance indicated by the performance parameters associated with the first process and the performance requirement indicated by the service quality requirement; or, using a set value as the amount of data to be migrated.
  • the adjustment module 303 is also used to migrate part of the data of the second process from the first memory to the second memory before migrating part of the data of the first process from the second memory to the first memory, where the second process is another process running in the hybrid memory system, and the second process satisfies at least one of the following conditions: the priority of the second process is lower than the priority of the first process; the sensitivity of the second process is less than a sensitivity threshold, and the sensitivity of the second process is used to indicate the sensitivity of the instruction execution speed of the second process to changes in the storage space size of the first memory associated with the second process; the service performance indicated by the performance parameters of the second process is higher than the performance requirement indicated by the quality of service requirement.
  • the adjustment module 303 when the adjustment module 303 needs to execute data migration between the first memory and the second memory according to the performance parameters and service quality requirements associated with the first process more than twice, the adjustment module 303 is used to perform data migration between the first memory and the second memory according to the performance parameters and service quality requirements of the first process for the Xth time, when the service performance indicated by the performance parameters of the first process is closer to the performance requirement indicated by the service quality requirements than before the Xth data migration, perform data migration between the first memory and the second memory according to the performance parameters and service quality requirements of the first process for the X+1th time, where X is a positive integer.
  • the memory management device provided in the above embodiment performs memory management
  • only the division of the above functional modules is used as an example.
  • the above functions can be assigned to different functional modules as needed, that is, the internal structure of the device is divided into different functional modules to complete all or part of the functions described above.
  • the memory management device provided in the above embodiment and the memory management method embodiment belong to the same concept. The specific implementation process is detailed in the method embodiment and will not be repeated here.
  • each functional module in each embodiment of the present application may be integrated into a processor, or may exist physically separately, or two or more modules may be integrated into one module.
  • the above-mentioned integrated modules may be implemented in the form of hardware or in the form of software functional modules.
  • the integrated module is implemented in the form of a software function module and sold or used as an independent product, it can be stored in a computer-readable storage medium.
  • the technical solution of the present application is essentially or the part that contributes to the prior art or all or part of the technical solution can be embodied in the form of a software product.
  • the computer software product is stored in a storage medium, including several instructions to enable a terminal device (which can be a personal computer, mobile phone, or communication device, etc.) or a processor (processor) to execute all or part of the steps of the method of each embodiment of the present application.
  • the aforementioned storage medium includes: various media that can store program codes, such as USB flash drives, mobile hard drives, ROM, RAM, magnetic disks, or optical disks.
  • FIG5 exemplarily provides a possible architecture diagram of a computer device 400 .
  • the computer device 400 includes a memory 401, a processor 402, a communication interface 403 and a bus 404.
  • the memory 401, the processor 402 and the communication interface 403 are connected to each other through the bus 404.
  • the memory 401 may be a ROM, a static storage device, a dynamic storage device or a RAM.
  • the memory 401 may store a program. When the program stored in the memory 401 is executed by the processor 402, the processor 402 and the communication interface 403 are used to execute the device access method.
  • the memory 401 may also store a data set. For example, a portion of the storage resources in the memory 401 is divided into a data storage module for storing data corresponding to an IO request, etc.
  • Processor 402 can adopt a general-purpose CPU, a microprocessor, an application-specific integrated circuit (ASIC), a graphics processing unit (GPU) or one or more integrated circuits.
  • ASIC application-specific integrated circuit
  • GPU graphics processing unit
  • the processor 402 may also be an integrated circuit chip having signal processing capabilities. Some or all of the functions can be completed by the hardware integrated logic circuit or software instructions in the processor 402.
  • the above-mentioned processor 402 can also be a general-purpose processor, a digital signal processor (digital signal dr uxing, DSP), an ASIC, an FPGA or other programmable logic device, a discrete gate or transistor logic device, a discrete hardware component.
  • DSP digital signal processor
  • ASIC application-specific integrated circuit
  • FPGA field-programmable gate circuit
  • the various methods disclosed in the above-mentioned embodiments of the present application can be implemented or executed.
  • the general-purpose processor can be a microprocessor or the processor can also be any conventional processor, etc.
  • the steps of the method disclosed in the embodiment of the present application can be directly embodied as a hardware decoding processor to be executed, or a combination of hardware and software modules in the decoding processor can be executed.
  • the software module can be located in a mature storage medium in the field such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory or an electrically erasable programmable memory, a register, etc.
  • the storage medium is located in the memory 401, and the processor 402 reads the information in the memory 401, and completes part of the functions of the memory management device of the embodiment of the present application in combination with its hardware.
  • the communication interface 403 uses a transceiver module such as but not limited to a transceiver to implement communication between the computer device 400 and other devices or communication networks.
  • a transceiver module such as but not limited to a transceiver to implement communication between the computer device 400 and other devices or communication networks.
  • Bus 404 may include a path for transmitting information between various components of computer device 400 (eg, memory 401 , processor 402 , communication interface 403 ).
  • a computer-readable storage medium which stores computer instructions.
  • the computer device executes the memory management method provided above.
  • a computer program product including instructions is also provided, which, when executed on a computer device, enables the computer device to execute the memory management method provided above.
  • a chip which includes a processor and a power supply circuit, the power supply circuit is used to power the processor, and the processor is used to execute the memory management method shown in Figure 2.
  • the chip further includes a memory, in which computer instructions are stored, and the processor is used to execute the computer instructions stored in the memory to implement the memory management method shown in Figure 2.
  • the memory includes at least the aforementioned first memory and second memory.
  • the chip may further include a controller (eg, controller 103 in FIG. 1 ), which is configured to migrate data between the first memory and the second memory under the control of the processor.
  • a controller eg, controller 103 in FIG. 1
  • the processor in the chip is used to implement the memory management method shown in Figure 2, and to control data migration between the first memory and the second memory, that is, the processor 101 and the controller 103 in Figure 1 are integrated together and implemented using FPGA or other programmable logic devices.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

一种内存管理方法、装置和相关设备,涉及计算机领域。该方法适用于包括第一内存和第二内存的混合内存系统,其中,第一内存的性能高于第二内存的性能。该方法包括:获取混合内存系统中运行的进程的性能参数集合,性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;根据性能参数集合确定不满足服务质量要求的第一进程,服务质量要求用于指示第一进程的性能需求,第一进程为混合内存系统中运行的进程中的一个进程;分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。有利于使第一进程满足服务质量要求,提升用户体验。

Description

内存管理方法、装置和相关设备
本申请要求于2022年11月11日提交的申请号为202211415701.2、发明名称为“内存管理方法、装置和相关设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,特别涉及一种内存管理方法、装置和相关设备。
背景技术
混合内存技术作为提高计算机整体性能的重要手段之一,近年来受到了广泛关注。混合内存系统通常包括多种性能不同的内存。
当混合内存系统中存在两个以上的进程同时运行时,往往根据业务需求为进程分配内存空间,此时,部分进程可能会同时关联不同内存的存储空间。由于不同内存介质的性能的差异会影响进程处理效率,因此,进程关联的高性能的内存的存储空间越大,该进程的服务性能也就越好。但是,进程在运行过程中并非持续使用内存中的所有数据,当被频繁访问的数据位于低性能的内存中时,高性能的内存无法充分发挥其性能优势,导致进程不能满足服务质量要求,并且影响了整个系统的性能。另一方面,对于其他进程而言,高性能的内存空间持续被部分进程占用,这就导致其他进程能够借助上述高性能进程提升读写效率的机会减少,一定程度上也影响了整个系统的处理效率和性能。因此,如何提供一种满足高性能需求的混合内存系统中内存管理方法成为亟待解决的技术问题。
发明内容
本申请提供了一种内存管理方法、装置和相关设备,以提高混合内存系统的性能。
第一方面,提供了一种内存管理方法。该方法适用于包括第一内存和第二内存的混合内存系统,第一内存的性能高于第二内存的性能。该方法包括:获取混合内存系统中运行的进程的性能参数集合,该性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;根据该性能参数集合确定不满足服务质量要求的第一进程,该服务质量要求用于指示第一进程的性能需求,这里,第一进程为所述混合内存系统中运行的进程中的一个进程;分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。
当混合内存系统中同时运行两个以上进程时,获取运行的进程的性能参数集合,即获取运行的各个进程关联的性能参数。由于每个性能参数用于指示关联进程的服务性能,所以可以根据进程关联的性能参数和服务质量要求,确定出不满足服务质量要求的第一进程,再分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。由上述方法可知,本申请可根据进程关联的性能参数,确定出不满足服务质量要求的进程,进而调整该进程关联的高性能的内存的存储空间的大小。实现了一种动态内存分配方法,可以结合进程的当前服务性能动态调整其关联的高性能内存的存储空间的大小,以在充分利用高性能内存的存储空间的情况下,使混合内存系统中运行的多个进程均能够满足服务质量要求,提高多用户的用户体验。另一方面,由于可根据进程的当前服务性能动态调整进程关联的不同内存的大小,对高性能内存而言,也提升了其使用效率。
作为一种可能的实现方式,根据性能参数集合确定不满足服务质量要求的第一进程,包括:将该性能参数集合中的第一性能参数所关联的进程确定为第一进程,其中,该第一能参数小于服务等级协议(service level agreement,SLA)中规定的第一性能参数阈值;或者,将该性能参数集合中的第二性能参数所关联的进程确定为第一进程,其中,该第二性能参数大于SLA中规定的第二性能参数阈值;或者,将性能参数集合中的第三性能参数所关联的进程确定为第一进程,其中,该第三性能参数所指示的服务性能和该性能参数集合中第四性能参数所指示的服务性能之间的优劣关系不满足优先级条件,该优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,第一优先级高于第二优先级;或者,相同优先级的两个进程的性能参数所指示的服务性能相同。
在本申请中,通过根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,来分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。在一些示例中,通过一次数据迁移,即可使得第一进程满足服务质量要求。在另一些示例中,需要通过两次以上的数据迁移才能使第一进程满足服务质量要求。通过数据迁移的方式,使得第一进程运行所需的总存储空间大小中,第一内存的存储空间和第二内存的存储空间的占比发生了变化,从而可以使得第一进程的性能参数发生变化。
对于每一次根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,可以采用以下方式实现:当第一进程关联的性能参数指示第一进程的服务性能低于服务质量要求指示的性能需求时,确定待迁移的数据量,按照确定出的待迁移的数据量将第一进程的部分数据从第二内存迁移至第一内存,以增大第一进程关联的第一内存的存储空间的大小,并减小第一进程关联的第二内存的存储空间的大小;或者,当第一进程关联的性能参数指示第一进程的服务性能高于服务质量要求指示的性能需求时,确定待迁移的数据量,按照确定出的待迁移的数据量将第一进程的部分数据从第一内存迁移至所述第二内存,以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小。
作为另一种可能的实现方式,将所述第一进程的部分数据从第二内存迁移至第一内存,包括:将第二内存中第一目标内存页中的数据迁移至第一内存中,第一目标内存页的热度高于第二内存中非第一目标内存页的热度,这里,第一目标内存页和非第一目标内存页均与第一进程关联。根据第二内存中第一进程相关的内存页的热度来选择需要迁移的数据,将第二内存中热度较高的内存页中的数据迁移至第一内存,有利于减小第一进程的内存访问时延,进一步提升第一进程的服务性能。
作为另一种可能的实现方式,将第一进程的部分数据从第一内存迁移至第二内存,包括:将第一内存中第二目标内存页中的数据迁移至所述第二内存中,第二目标内存页的热度低于第一内存中非第二目标内存页的热度,这里,第二目标内存页和非第二目标内存页均与第一进程关联。根据第一内存中第一进程相关的内存页的热度来选择需要迁移的数据,将第一内存中热度较低的内存页中的数据迁移至第二内存,避免对第一进程的内存访问时延的影响过大,有利于进一步提升第一进程的服务性能。
当需要通过两次以上的数据迁移才能使第一进程满足服务质量要求时,在第X次根据所第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移之后,如果第一进程的性能参数指示的服务性能比第X次数据迁移之前更接近服务质量要求所指示的性能需求,则进行第X+1次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,其中,X为正整数。这样,可以在每次数据迁移对提升第一进程的服务性能有帮助的情况下,再进行下一次数据迁移。
作为另一种可能的实现方式,待迁移的数据量根据第一进程关联的性能参数所指示的服务性能和服务质量要求所指示的性能需求之间的差距确定。该差距越大,则待迁移的数据量越大;该差距越小,则待迁移的数据量越小。由于迁移的数据量越大,第一进程关联的第一内存的存储空间大小和第一进程关联的第二内存的存储空间大小变化越快,而第一进程的性能参数的变化也越快,这样,可以快速调整第一进程的服务性能,提高效率。
作为另一种可能的实现方式,待迁移的数据量为设定值。每次迁移固定的数据量,实现方式简单,有利于简化算法流程。
作为另一种可能的实现方式,待迁移的数据量根据第一进程的敏感度确定,第一进程的敏感度用于指示第一进程的指令执行速度随第一进程关联的第一内存的存储空间大小变化的敏感程度。例如,当第一进程的敏感度大于敏感度阈值时,表示第一进程的应用类型为敏感型应用,当第一进程的敏感度小于或者等于敏感度阈值时,表示第一进程的应用类型为非敏感型应用,敏感型应用对应的待迁移的数据量大于非敏感型应用的待迁移的数据量。
当需要增大第一进程关联的第一内存的存储空间大小,而第一内存中已经不存在空闲内存页,或者,第一内存中的空闲内存页对应的存储空间的大小小于第一进程待增大的第一内存的存储空间大小时,在将第一进程的部分数据从第二内存迁移至第一内存之前,需要先将第二进程的部分数据从第一内存迁移至第二内存,该第二进程为该混合内存系统中运行的进程中的另一个进程,且第二进程满足以下条件中的至少一项:第二进程的优先级低于第一进程的优先级;第二进程的敏感度小于敏感度阈值;第二进程的性能参数所指示的服务性能高于服务质量要求所指示的性能需求。这里,第二进程的敏感度用于指示第二进程的 指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度。敏感度越大,第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度越高;反之,敏感度越小,第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度越低。
可选地,该方法还包括:根据混合内存系统中内存页的热度信息,控制第一内存和第二内存之间的数据迁移。根据内存页的热度信息进行数据迁移容易使进程出现不满足服务质量的情况,因此,在根据混合内存系统中内存页的热度信息,控制第一内存和第二内存之间的数据迁移之后,尤其需要根据进程的性能参数和服务质量要求来确定进程是否满足服务质量要求。
作为另一种可能的实现方式,在为第一进程分配第一内存的存储空间和第二内存的存储空间之后,可以获取混合内存系统中运行的进程的性能参数集合。根据获取到的性能参数集合确定是否存在不满足服务质量要求的进程。如果存在不满足服务质量要求的进程,则先根据混合内存系统中内存页的热度信息,控制第一内存和第二内存之间的数据迁移。在根据混合内存系统中内存页的热度信息,控制第一内存和第二内存之间的数据迁移之后,再次获取混合内存系统中运行的进程的性能参数集合。根据再次获取到的性能参数集合确定是否存在不满足服务质量要求的进程。对于不满足服务质量要求的第一进程,再按照前述方式分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。这样,可以先保证第一进程关联的数据中,热度较高的数据均位于第一内存中,在此基础上再调整第一进程关联的第一内存的存储空间的大小和第二内存关联的存储空间的大小,调整效率更高,有利于快速将第一进程满足服务质量要求。
第二方面,提供了一种内存管理装置。该装置适用于包括第一内存和第二内存的混合内存系统,第一内存的性能高于第二内存的性能。该装置包括:获取模块、确定模块和调整模块。其中,获取模块用于获取该混合内存系统中运行的进程的性能参数集合,该性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;确定模块用于根据性能参数集合和服务质量要求确定不满足该服务质量要求的第一进程,该服务质量要求用于指示第一进程的性能需求,第一进程为混合内存系统中运行的进程中的一个进程;调整模块用于分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。
可选地,确定模块用于采用如下方式中的任一种确定第一进程:将性能参数集合中的第一性能参数所关联的进程确定为第一进程,其中,第一能参数小于SLA中规定的第一性能参数阈值;或者,将性能参数集合中的第二性能参数所关联的进程确定为第一进程,其中,第二性能参数大于SLA中规定的第二性能参数阈值;或者,将性能参数集合中的第三性能参数所关联的进程确定为第一进程,其中,第三性能参数所指示的服务性能和性能参数集合中第四性能参数所指示的服务性能之间的优劣关系,不满足优先级条件,该优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,第一优先级高于第二优先级;以及相同优先级的两个进程的性能参数所指示的服务性能相同。
可选地,调整模块用于根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,直至第一进程满足服务质量要求。
作为另一种可能的实现方式,调整模块用于当第一进程关联的性能参数指示第一进程的服务性能低于服务质量要求指示的性能需求时,确定待迁移数据量,按照待迁移数据量将第一进程的部分数据从第二内存迁移至第一内存,以增大第一进程关联的第一内存的存储空间的大小,并减小第一进程关联的第二内存的存储空间的大小。
例如,调整模块用于将第二内存中第一目标内存页中的数据迁移至第一内存中,第一目标内存页的热度高于第二内存中非第一目标内存页的热度,第一目标内存页和非第一目标内存页均与第一进程关联。
作为另一种可能的实现方式,调整模块用于当第一进程关联的性能参数指示第一进程的服务性能超过服务质量要求指示的性能需求时,确定待迁移数据量,按照待迁移数据量将第一进程的部分数据从第一内存迁移至第二内存,以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小。
例如,调整模块用于将第一内存中第二目标内存页中的数据迁移至第二内存中,第二目标内存页的热度低于第一内存中非第二目标内存页的热度,第二目标内存页和非第二目标内存页均与第一进程关联。
可选地,调整模块用于采用以下方式中的任一种确定待迁移数据量:根据第一进程关联的性能参数所 指示的服务性能和服务质量要求所指示的性能需求之间的差距确定待迁移数据量;或者,将设定值作为待迁移数据量。
可选地,调整模块还用于在将第一进程的部分数据从第二内存迁移至第一内存之前,将第二进程的部分数据从第一内存迁移至第二内存,第二进程为混合内存系统中运行的进程中的另一个进程,且第二进程满足以下条件中的至少一项:第二进程的优先级低于第一进程的优先级;第二进程的敏感度小于敏感度阈值,第二进程的敏感度用于指示第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度;第二进程的性能参数所指示的服务性能高于服务质量要求所指示的性能需求。
可选地,当调整模块需要执行两次以上根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移时,调整模块,用于在第X次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移之后,当第一进程的性能参数指示的服务性能比第X次数据迁移之前更接近服务质量要求所指示的性能需求时,进行第X+1次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,其中,X为正整数。
作为另一种可能的实现方式,性能参数集合包括至少一种性能参数,至少一种性能参数选自:指令执行速度相关参数、内存访问时延和访存带宽。其中,指令执行速度相关参数可以为每周期指令数(instruction per cycle,IPC)或者每指令周期数(cycles per instruction,CPI)。其中,IPC和访存带宽与服务性能正相关;CPI和内存访问时延与服务性能负相关。
作为另一种可能的实现方式,第一内存包括动态随机存取存储器(Dynamic Random Access Memory,DRAM),第二内存包括存储级存储器(Storage Class Memory,SCM)。
第三方面,提供了一种内存管理系统,所述内存管理系统包括处理器和存储器;所述存储器用于存储软件程序,所述处理器通过执行存储在所述存储器内的软件程序,以使得所述内存管理系统实现第一方面的任一种可能的实施方式的方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算机设备执行时,使得计算机设备执行第一方面的任一种可能的实施方式的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述第一方面的任一种可能的实施方式的方法。
第六方面,提供了一种芯片,包括处理器和供电电路,供电电路用于对处理器进行供电,处理器用于实现上述第一方面的任一种可能的实施方式中的方法。
第七方面,提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的至少一条程序代码,当所述至少一条程序代码被执行时,所述处理器用于执行上述第一方面的任一种可能的实施方式中的方法。
附图说明
图1是本申请提供的一种应用场景的结构示意图;
图2是本申请提供的一种内存管理方法的流程示意图;
图3是本申请提供的内存管理方法中另一种调整第一进程关联的内存的存储空间大小的流程示意图;
图4是本申请提供的一种内存管理装置的结构示意图;
图5是本申请提供的一种计算机设备的结构示意图。
具体实施方式
为了解决混合内存系统中运行的进程不满足服务质量要求的问题,本申请提出一种内存管理方法,先根据混合内存系统中运行的各个进程的性能参数集合和服务质量要求确定出不满足服务质量要求的第一进程,然后再分别调整第一进程关联不同性能的内存的存储空间的大小,以使第一进程满足服务质量要求。
图1是本申请提供的一种应用场景的结构示意图。本申请提供的内存管理方法适用于混合内存系统。该混合内存系统是指包含有混合内存的计算机系统,可以实现为如服务器或者台式计算机等。
在硬件层面,如图1所示,该混合内存系统至少包括处理器101、内存102和控制器103。
其中,处理器101是中央处理器(central processing unit,CPU),用于处理来自混合内存系统外部的数据,或者混合内存系统内部生成的数据。处理器101包括至少一个核(core)1011和缓存1012。图1中所示的处理器101包括两个核1011。缓存1012是位于处理器的核1011与内存102之间的一层高速缓存结构。示例性地,缓存1012包括第一级数据缓存(L1data cache,L1D-cache)(即图1中的L1-D)、第一级指令缓存(L1instruction cache,L1I-cache)(即图1中的L1-I)、第二级缓存(L2cache)(即图1中的L2)以及最后一级缓存(last level cache,LLC)(也可以称为第三级缓存)。其中,第一级数据缓存、第一级指令缓存和第二级缓存均为对应的核1011的私有缓存,而LLC为多个核1011之间的共享缓存,用于降低核间通信的开销。
处理器101用于从缓存1012中获取频繁使用的数据进行处理,或者也可以直接从内存102中获取数据进行处理。缓存1012用于存储从内存102中预取到的数据,以备处理器101获取,减少处理器101从内存102中获取数据的时延。
内存102是指处理器101可交换数据的存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存102包括至少两种性能不同的存储介质。例如,内存102包括第一内存1021和第二内存1022,第一内存1021的性能高于第二内存1022的性能。在本申请实施例中,内存的性能可以从存取速度和/或访问时延等方面进行考量。除了第一内存1021和第二内存1022之外,内存102还可以包括性能与第一内存和第二内存均不同的第三内存(图未示)。本实施例不对内存的数量和类型进行限定,只要包括至少两种性能不同的内存即可。
举例来说,第一内存1021可以是DRAM,第二内存1022可以是SCM。DRAM是一种半导体存储器,与大部分RAM一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,SCM能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。其中,SCM的类型包括但不限于铁电随机存取内存(Ferroelectric random access memory,FeRAM)、磁随机存取内存(magnetoresistive random access memory,MRAM)、阻变随机存取内存(PRAM)、纳米管随机存取内存(nano random access memory,NRAM)和相变随机存取内存(phase change random access memory,PCM)等等。
这里,DRAM和SCM在本实施例中只是示例性的说明,可替代地,第一内存1021还可以是双列直插式存储器模块或双线存储器模块(Dual In-line Memory Module,DIMM),即由动态随机存取存储器(DRAM)组成的模块,第二内存1022还可以是固态硬盘(Solid State Disk,SSD)等。
内存102还可以包括其他RAM,例如静态随机存取存储器(Static Random Access Memory,SRAM)等。此外,内存102除了可以包括RAM,还可以包括只读存储器(Read Only Memory,ROM)。对于ROM,举例来说,可以是可编程只读存储器(Programmable Read Only Memory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。
为了便于描述,以下将以第一内存1021为DRAM,第二内存1022为SCM为例进行说明。
此外,可对内存102进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
在本申请实施例中,内存102可以通过计算快速链接(compute express link,CXL)接口等一致性接口与处理器101连接。
控制器103也可以被称为内存控制器,用于控制对内存102的读或写,控制器103还可以根据处理器101的数据迁移指令在各个内存之间进行数据迁移。值得说明的是,控制器103除了如图1所示为处理器101以外的独立器件外,也可以作为处理器101中一部分。
如图1所示,控制器103可以包括存储模块1031、页表映射模块1032、统计模块1033、迁移模块1034、仲裁模块1035、第一内存控制器1036和第二内存控制器1037。其中,存储模块1031用于存储事务队列、页表以及页表统计信息。事务队列包括来自处理器101的多个第一内存访问请求,该第一内存访问请求可以是读请求或者写请求。第一内存访问请求中携带有全局地址,该全局地址是基于逻辑地址转换得到的。页表映射模块1032用于查询页表,以获得第一内存访问请求中全局地址对应的介质地址;以及将第一内存访问请求中的全局地址替换为介质地址后,发送给仲裁模块1035。
在本申请实施例中,逻辑地址是指应用可见的地址,也可以称为虚拟地址;全局地址是指将不同类型的存储介质进行统一编址而得到的地址,便于操作系统为进程直接分配资源;介质地址是存储介质的物理 地址,指数据要被写入的具体位置。
统计模块1033用于根据事务队列中第一内存访问请求对应的全局地址,对页表的热度进行统计,得到页表的热度信息。这里,页表的热度信息包括每个页表的热度。通常,一个页表对应多个介质地址。页表的热度可以根据页表所包含的所有介质地址的访问记录确定。例如,可以将一个页表中包含的所有介质地址的被访问次数之和,作为该页表的热度。
统计模块1033还用于将该页表统计信息发送给处理器101。处理器101根据页表的热度信息以及数据迁移策略,生成数据迁移指令,并将数据迁移指令发送给控制器103。数据迁移指令用于指示将源内存的数据迁移至目的内存。例如,将第一内存中的数据迁移至第二内存,或者,将第二内存中的数据迁移至第一内存。
该控制器103中的迁移模块1034用于将数据迁移指令转换为第二内存访问指令。并将第二内存访问指令发送给仲裁模块1035。迁移模块1034还用于根据数据迁移指令修改页表中全局地址与介质地址之间的映射关系,以使数据迁移指令相关的全局地址映射到新的介质地址。
仲裁模块1035用于将不同内存对应的内存访问指令发送给对应的内存控制器,并且控制内存访问指令的执行顺序。例如,将第一内存的读写请求发送给第一内存控制器1036,将对第二内存的读写请求发送给第二内存控制器1037。第一内存控制器1036用于控制对第一内存的读和写,第二内存控制器1037用于控制对第二内存的读和写。
可选地,该控制器103中的各个模块可以采用集成电路芯片实现,例如,可以采用现场可编程门阵列(field programmable gate array,FPGA)实现。由于该控制器103主要用于控制第一内存和第二内存中的数据的迁移,所以也可以被称为迁移装置。
该混合内存系统还可以包括硬盘等其他存储设备,本申请实施例对此不做限制。
接下来,基于图1所示的混合内存的系统架构,结合图2详细解释本申请提供的内存管理方法。图2是本申请提供的一种内存管理方法的流程示意图。该方法可以由前述混合内存系统中的处理器101(例如处理器101中的迁移后台进程)执行,也可以由控制器103执行,下文中以由处理器101执行为例进行示例性说明。如图2所示,该方法包括以下过程。
步骤201:处理器获取第一进程的内存分配信息。
第一进程的内存分配信息用于指示第一进程对应的第一内存的存储空间大小和第二内存的存储空间大小。步骤201可以在处理器获取到第一进程的内存分配请求时执行。该内存分配请求用于请求为第一进程分配内存空间。示例性地,内存分配请求可以包括请求的总存储空间大小。
在一些示例中,第一进程的内存分配信息包括为第一进程所属的用户指定的设定比例,该设定比例用于指示在进程请求的总存储空间大小中,第一内存的存储空间大小所占的比例和第二内存的存储空间大小所占的比例。例如,对于进程A,请求的总存储空间大小为XG,假设为进程A所属用户指定的设定比例的q%,则进程A对应的第一内存的的存储空间大小为X*q%G,进程A对应的第二内存的的存储空间大小为X*(1-q)%G。
在一些示例中,为所有用户指定的设定比例可以相同。在另一些示例中,为不同用户指定的设定比例可以不同。例如,优先级高的用户对应的设定比例比优先级低的用户对应的设定比例大。
在另一些示例中,默认将进程请求的总存储空间均从第一内存或第二内存中分配。
步骤202:处理器根据内存分配信息为第一进程分配内存。
该步骤202包括:处理器确定第一内存中的空闲内存页对应的存储空间大小是否大于或者等于内存分配信息所指示的第一内存的存储空间大小。如果第一内存中存在空闲内存页,且空闲内存页的存储空间大小大于或者等于该内存分配信息所指示的第一内存的存储空间大小,则直接从第一内存的空闲内存页中划分出对应大小的存储空间分配给第一进程。如果第一内存中空闲内存页的存储空间大小小于内存分配信息所指示的第一内存的存储空间大小,甚至第一内存中不存在空闲内存页,则需要先对第一内存中已被占用的内存页中的数据进行迁移,然后再从第一内存的空闲内存页中划分出对应大小的存储空间分配给第一进程。
这里,对需要迁移的数据的选取方式不做限制,可以根据正在运行的进程数量、正在运行的进程关联的第一内存的存储空间大小以及正在运行的进程所属用户的优先级等进行选取。在本申请实施例中,混合内存系统中除了运行有第一进程之外,还同时运行有至少一个其他进程。这里,同时运行是指由同混合内 存系统中的一个CPU运行,例如,由混合内存系统的同一个CPU的同一个核运行,或者由混合内存系统的同一个CPU的不同的核运行;或者是指由混合内存系统中的不同CPU运行。
例如,可以将内存分配信息所指示的第一内存的存储空间大小按照正在运行的进程数量均分,得到每个进程需要迁移的数据量;然后按照每个进程需要迁移的数据量,将对应进程的热度较低的数据从第一内存迁移至第二内存中。又例如,可以先从正在运行的进程中,确定优先级比第一进程所属用户的优先级低的用户进程;然后,将内存分配信息所指示的第一内存的存储空间大小按照确定出的进程数量均分,得到每个优先级低的用户进程需要迁移的数据量;最后按照每个进程需要迁移的数据量,将对应进程的热度较低的数据从第一内存迁移至第二内存中。
该步骤202还包括:处理器确定第二内存中空闲内存页对应的存储空间大小是否大于或者等于内存分配信息所指示的第二内存的存储空间大小。如果第二内存中存在空闲内存页,且空闲内存页对应的存储空间大小大于内存分配信息所指示的第二内存的大小,则从第二内存的空闲内存页中划分出对应大小的存储空间分配给第一进程。
由于第二内存的容量较大,所以通常不会存在存储空间不足的情况,直接从第二内存的空闲内存页中划分出内存分配信息所指示的第二内存的存储空间大小即可。
可选地,处理器可以先为第一进程分配第一内存,再为第一进程分配第二内存;或者,处理器可以先为第一进程分配第二内存,再为第一进程分配第一内存,本申请对此不作限制。
这里,将第一内存的存储空间分配给第一进程,是指将第一进程关联的数据存储到对应的第一内存的存储空间中,并将存储数据后的存储空间的介质地址和全局地址之间的映射关系保存到页表中。将第二内存的存储空间分配给第一进程,是指将第一进程关联的数据存储到对应的第二内存的存储空间中,并将存储数据后的存储空间的介质地址和全局地址之间的映射关系保存到页表中。这样,第一进程可以基于分配到的内存正常运行。
该内存分配信息可以根据第一进程的标识(PID)与内存分配信息之间的映射关系确定。例如,处理器可以先根据第一进程的PID确定第一进程所属的用户,然后在用户的签约信息中获取该用户的内存分配信息。该签约信息可以保存在混合内存系统本地或者从其他外部服务器获取。
步骤203:获取混合内存系统中运行的进程的性能参数集合。
混合内存系统中,除了运行前述第一进程之外,还运行有至少一个其他进程。性能参数集合包括同时运行的多个进程关联的性能参数。每个性能参数用于指示关联进程的服务性能。
示例性地,性能参数集合中包括至少一种性能参数,该至少一种性能参数选自指令执行速度相关参数、内存访问时延和访存带宽。可选地,指令执行速度相关参数可以为IPC或者CPI。IPC表示每个时钟周期执行的计算机指令条数。CPI表示每条计算机指令执行所需的平均时钟周期数。
CPI越小,表示服务性能越好;反之CPI越大,表示服务性能越差。IPC越大,表示服务性能越好;反之,IPC越小,表示服务性能越差。内存访问时延越小,表示服务性能越好;反之,内存访问时延越大,表示服务性能越差。访存带宽越大,表示服务性能越好;反之,访存带宽越小,表示服务性能越差。
下面对这几种性能参数的获取方式分别进行说明。
在本申请实施例中,可以利用英特尔(Intel)的Xeon CPU的资源调配技术(resource director technology,RDT)等等周期性获取IPC。CPI为IPC的导数,可以基于IPC计算。
访存带宽可以采用以下方式获取:首先,获取单位时间内,第一进程在缓存中的未命中(miss)次数和每次未命中对应的需要访问的数据大小(例如字节数);然后,根据缓存的未命中次数和每次未命中对应的需要访问的数据大小计算第一进程的访存带宽。例如,第一进程在缓存中的未命中次数与每次未命中对应的需要访问的数据大小的乘积与单位时间的比值,即为第一进程对应的访存带宽。这里,在缓存中未命中,表示需要访问内存获得对应的数据,因此,在缓存中未命中的次数即内存访问指令的数量。获取单位时间内缓存的未命中(miss)次数可以通过性能分析工具实现,例如,Linux系统的perf等。每次未命中对应的需要访问的数据大小与计算机架构相关,例如,对于X86系统,每次未命中对应的需要访问的数据大小为64字节。
内存访问时延可以采用以下方式获取:首先,统计不同时延范围内,第一进程的内存访问指令的数量,时延范围可以采用时钟周期数量表示,例如0~a1、a1~a2……,其中,a1,a2……为整数,表示时钟周期的数量;然后根据各个时延范围内第一进程的内存访问指令的数量,确定第一进程的内存访问时延。这里, 对确定第一进程的内存访问时延的计算公式不做限制。不同时延范围内,第一进程的内存访问指令的数量可以通过性能分析工具统计,例如,Linux系统的perf等。
步骤204:根据步骤203中获取到的性能参数集合,确定混合内存系统中是否存在不满足服务质量要求的进程。如果混合内存系统中不存在不满足服务质量要求的进程,则退出当前流程。如果混合内存系统中存在不满足服务质量要求的进程,则执行步骤205。
其中,服务质量要求用于指示对应进程的性能需求。
下面先对第一进程是否满足服务质量要求的判断方式进行说明,其他进程是否满足服务质量要求的判断方式与第一进程是否满足服务质量要求的判断方式相同,下文将不再重复描述。并且,下面将以第一进程不满足服务质量要求为例展开说明,当其他进程不满足服务质量要求时,可以参照针对第一进程的处理方式进行处理。
在一些示例中,服务质量要求可以包括相对质量要求。相对质量要求用于指示两个进程的服务性能之间的优劣关系需要满足优先级条件。这里,优先级条件包括:高优先级用户对应的进程的服务性能比低优先级用户对应的进程的服务性能好;相同优先级用户对应的进程的服务性能对应的服务性能相同。当第一进程的服务性能与另一进程的服务性能之间的优劣关系不满足该优先级条件时,第一进程不满足该相对质量要求。当第一进程的服务性能与另一进程的服务性能之间的优劣关系满足该优先级条件时,表示第一进程满足该相对质量要求。
这里,以第一进程和第二进程的服务性能之间的优劣关系满足优先级条件为例,进行说明,第一进程和第二进程的服务性能之间的优劣关系满足优先级条件主要包括以下三种情况:
情况1,第一进程所属用户的优先级低于第二进程所属用户的优先级,第一进程的服务性能比第二进程的服务性能差。
情况2,第一进程所属用户的优先级高于第二进程所属用户的优先级,第一进程的服务性能比第二进程的服务性能好。
情况3,第一进程所属用户的优先级与第二进程所属用户的优先级相同,第一进程的服务性能与第二进程的服务性能相同。
在本申请实施例中,可以根据第一进程关联的性能参数和第二进程关联的性能参数之间的关系,确定第一进程的服务性能和第二进程的服务性能之间的优劣关系。这里,第一进程关联的性能参数和第二进程关联的性能参数是同种性能参数。
在一种可能的实施方式中,服务质量要求将性能参数变化范围划分为多个区间。当第一进程关联的性能参数和第二进程关联的性能参数位于同一个区间时,表示第一进程的服务性能和第二进程的服务性能相同。如果性能参数越大,服务性能越好,则当第一进程关联的性能参数所在的区间中的任一值均大于第二进程关联的参数所在的区间中的任一值时,表示第一进程的服务性能比第二进程的服务性能好;而当第一进程关联的性能参数所在的区间中的任一值均小于第二进程关联的参数所在的区间中的任一值时,表示第一进程的服务性能比第二进程的服务性能差。如果性能参数越小,服务性能越好,则当第一进程关联的性能参数所在的区间中的任一值均小于第二进程关联的参数所在的区间中的任一值时,表示第一进程的服务性能比第二进程的服务性能好;而当第一进程关联的性能参数所在的区间中的任一值均大于第二进程关联的参数所在的区间中的任一值时,表示第一进程的服务性能比第二进程的服务性能差。
在另一种可能的实施方式中,当第一进程关联的性能参数与第二进程关联的性能参数之间的差值大于或者等于第一设定值时,表示第一进程的服务性能与第二进程的服务性能相同。该第一设定值可以设置地较小,例如,可以等于0等。如果性能参数越大,服务性能越好,则当第一进程关联的性能参数与第二进程关联的性能参数之间的差值大于第一设定值、且第一进程关联的性能参数比第二进程关联的性能参数大时,表示第一进程的服务性能比第二进程的服务性能好;而当第一进程关联的性能参数与第二进程的关联的性能参数之间的差值大于第一设定值、且第一进程关联的性能参数比第二进程关联的性能参数小时,表示第一进程的服务性能比第二进程的服务性能差。如果性能参数越小,服务性能越好,则当第一进程关联的性能参数与第二进程关联的性能参数之间的差值大于第一设定值、且第一进程关联的性能参数比第二进程关联的性能参数小时,表示第一进程的服务性能比第二进程的服务性能好;而当第一进程关联的性能参数与第二进程的关联的性能参数之间的差值大于第一设定值、且第一进程关联的性能参数比第二进程关联的性能参数大时,表示第一进程的服务性能比第二进程的服务性能差。
在另一些示例中,服务质量要求可以包括绝对质量要求,绝对质量要求用于指示进程的服务性能需要满足SLA规定的性能参数指标。
当服务质量要求为绝对质量要求时,可以根据第一进程的性能参数和SLA规定的性能参数阈值之间的关系,确定第一进程的服务性能是否满足服务质量要求。
当第一进程的性能参数大于或者等于SLA规定的第一性能参数阈值时,表示第一进程满足服务质量要求。当第一进程的性能参数小于SLA规定的第一性能参数阈值时,表示第一进程不满足服务质量要求。
当第一进程的性能参数小于或者等于SLA规定的第二性能参数阈值时,表示第一进程满足服务质量要求。当第一进程的性能参数大于SLA规定的第二性能参数阈值时,表示第一进程不满足服务质量要求。
这里第一性能参数阈值可以是性能参数上限,例如,内存访问时延的上限值或者IPC上限值。第二性能参数阈值可以是性能参数下限,例如,访存带宽下限值或者CPI下限值。
例如,当第一进程的内存访问时延大于SLA规定的内存访问时延上限时,确定第一进程不满足服务质量要求;而当第一进程的内存访问时延小于或者等于SLA规定的内存访问时延上限时,确定第一进程满足服务质量要求。
又例如,当第一进程的访存带宽小于SLA规定的访存带宽下限时,确定第一进程不满足服务质量要求;而当第一进程的访存带宽大于或者等于SLA规定的访存带宽下限时,确定第一进程满足服务质量要求。
再例如,当第一进程的IPC小于SLA规定的IPC下限时,确定第一进程不满足服务质量要求;而当第一进程的IPC大于或者等于SLA规定的IPC下限时,确定第一进程满足服务质量要求。
在一些示例中,不同的用户优先级对应的性能参数指标的取值不同。例如,优先级较高的用户的内存访问时延上限小于优先级较低的用户的内存访问时延上限。又例如,优先级较高的用户的访存带宽下限大于优先级较低的用户的访存带宽下限。再例如,优先级较高的用户的IPC下限大于优先级较低的用户的IPC下限。
在本申请实施例中,用户优先级可以是预先设置的。示例性地,用户优先级可以从用户签约信息中获取,用户签约信息可以存储在本地或者存储在其他服务器中。
在又一些示例中,服务质量要求包括前述相对质量要求和绝对质量要求。这种情况下,第一进程的服务性能与其他服务性能之间的优劣关系满足优先级条件,且第一进程的性能参数满足SLA规定的性能参数阈值时,表示第一进程满足服务质量要求。或者,第一进程性能参数满足SLA规定的性能参数阈值时,表示第一进程满足服务质量要求。
步骤205:处理器获取第一内存中内存页的热度信息和第二内存中内存页的热度信息。
第一内存中内存页的热度信息用于指示第一内存所包含的每个内存页中数据的访问热度。第二内存中内存页的热度信息用于指示第二内存所包含的每个内存页中数据的访问热度。下文将内存页中数据的访问热度称为内存页的热度。
内存页的热度表示该内存页在未来一段时间内被频繁访问的可能性。内存页的热度越高,则被频繁访问的可能性越大。反之,内存页的热度越低,则被频繁访问的可能性越小。可以使用内存页的历史访问信息来预测该内存页在未来被频繁访问的可能性,即衡量该内存页的热度。
在一些示例中,历史访问信息包括内存页的最近一次访问时间和在一个统计周期内存页的访问次数中的至少一种。其中,最近一次访问时间是指截止到当前时间为止,内存页的最后一次被访问的时间,或者说预设时间段内的最后一次被访问时间。一个统计周期内内存页的访问次数等于该统计周期内,内存页中各个全局地址的访问次数之和。统计周期的长度可以根据实际需要设置,本申请实施例对此不做限制。
步骤206:根据第一内存中内存页的热度信息和第二内存中内存页的热度信息,在第一内存和第二内存之间进行数据迁移。
其中,在第一内存和第二内存之间进行数据迁移,包括将第一内存中冷内存页中的数据迁移至第二内存中,或者,将第二内存中热内存页中的数据迁移至第一内存中。
在一些示例中,可以采用最近最少使用(Least recently used,LRU)算法或者最不经常使用(least frequently used,LFU)算法等将第一内存中冷内存页中的数据迁移至第二内存中。其中,LRU算法是指优先淘汰或者置换出第一内存中最长时间未被使用的内存页,即预设一定的时长,将第一内存中最近在预设时长内未被访问的内存页作为冷内存页,并将第一内存中冷内存页中的数据迁移至第二内存中。LFU算法 指的是淘汰或者置换第一内存中一定时期内(即前述统计周期)访问次数最少的内存页,即预设一定的时长和访问次数,将第一内存中最近在预设时长内访问次数未超过第一预设访问次数的内存页作为冷内存页,并将第一内存中冷内存页中的数据迁移至第二内存中。
类似的,可以将第二内存中最近在预设时长内访问次数超过第二预设访问次数的内存页作为热内存页,并将第二内存中热内存页中的数据迁移至第一内存中。
实际应用中,不同进程对应的第一预设访问次数可以相同或者不同,不同进程对应的第二预设访问次数可以相同或者不同。同一进程对应的第一预设访问次数小于第二预设访问次数。
需要说明的是,本申请对内存页的热度的统计方式不做限制。
当在第一内存和第二内存之间进行数据迁移时,不更改该数据的全局地址,而是将待迁移数据从源端的内存传输到目的端的内存后,将该数据的全局地址与新的介质地址之间建立映射关系,并将该映射关系保存在页表中。
可选地,当第一进程不满足服务质量要求时,可以仅针对第一进程的数据,根据第一进程关联的第一内存中内存页的热度信息和第二内存中内存页的热度信息,在第一内存和第二内存之间进行数据迁移。对于满足服务质量要求的进程的数据,不在第一内存和第二内存之间进行数据迁移,以避免大量数据迁移占用系统资源。
步骤207:获取混合内存系统中运行的进程的性能参数集合。
在步骤206之后,各个进程关联的内存页中热度较高的内存页被迁移至第一内存中,使得各个进程关联的性能参数发生变化,所以需要再次获取混合内存系统中运行的进程的性能参数集合,以便判断各个进程是否满足服务质量要求。
步骤208:根据步骤207中获取到的性能参数集合,确定混合内存系统中第一进程不满足服务质量要求。
步骤208的实现方式参见步骤204。
需要说明的是,为了便于描述,步骤204和步骤208中均以第一进程为不满足服务质量要求的进程为例进行说明。实际应用中,不同次确定出来的不满足服务质量要求的进程可以不是同一进程。每个进程都按照第一进程相同的方式进行调整,在此省略详细描述。
步骤209:比较第一进程关联的性能参数和服务质量要求。
当第一进程的性能参数指示第一进程的服务性能低于服务质量要求所指示的性能需求时,执行步骤210a~213a;当第一进程的性能参数指示第一进程的服务性能高于服务质量要求所指示的性能需求时,执行步骤210b~212b(参见图3)。当第一进程的性能参数指示第一进程的服务性能等于服务质量要求所指示的性能需求时,退出当前流程。
其中,第一进程的性能参数指示第一进程的服务性能低于服务质量要求所指示的性能需求和第一进程的性能参数指示第一进程的服务性能高于服务质量要求所指示的性能需求均表示第一进程的服务性能不满足服务质量要求。
步骤210a:确定第一进程对应的待迁移的数据量的大小。
在一些示例中,待迁移的数据量为设定值。该设定值为一个内存页的存储空间大小的整数倍。每次迁移固定的数据量,实现方式简单,有利于简化算法流程。
在另一些示例中,待迁移的数据量可以根据第一进程的性能参数和服务质量要求所指示的性能需求之间的差距确定。该差距越大,则待迁移的数据量越大;该差距越小,则待迁移的数据量越小。由于迁移的数据量越大,第一进程关联的第一内存的存储空间大小和第一进程关联的第二内存的存储空间大小变化越快,而第一进程的性能参数的变化也越快,这样,可以快速调整第一进程的服务性能,提高效率。
可选地,当服务质量要求包括绝对质量要求时,待迁移的数据量可以根据第一进程关联的性能参数与第一进程所属用户对应的性能参数指标之间的差值确定。例如,第一进程关联的性能参数与第一进程所属用户对应的性能参数指标之间的差值越大,则待迁移的数据量越大。
差值与待迁移的数据量之间的关系可以预先保存。该关系可以包括多个差值的取值区间以及每个取值区间对应的数据量。不同的差值的取值范围对应不同的迁移量。
例如,待迁移的数据量可以根据第一进程关联的访存时延与第一进程所属的用户对应的访存时延上限之间的差值,或者,根据第一进程的访存带宽与第一进程所属的用户对应的访存带宽下限之间的差值确定, 或者根据第一进程的IPC与第一进程所属的用户对应的IPC下限之间的差值确定。第一进程的访存时延与第一进程所属的用户对应的访存时延上限之间的差值或者第一进程的访存带宽与第一进程所属的用户对应的访存带宽下限之间的差值,或者第一进程的IPC与第一进程所属的用户对应的IPC下限之间的差值越大,则对应的迁移的数据量越大。
可选地,当服务质量要求包括相对质量要求时,待迁移的数据量可以根据第一进程关联的性能参数与目标优先级下的所有进程的性能参数的平均值之间的差值确定。目标优先级为第一进程所属用户对应的优先级。例如,第一进程关联的性能参数与平均值之间的差值越大,则待迁移的数据量越大。
在又一些示例中,待迁移的数据量可以根据第一进程对应的应用类型确定。这里,应用类型包括敏感型应用和非敏感型应用。敏感型应用对应的迁移的数据量大于非敏感型应用对应的迁移的数据量。且敏感型应用的敏感度越高,则对应的迁移的数据量越大。
当数据的迁移量根据第一进程对应的应用类型确定时,该方法还可以包括:根据任一次数据迁移(可以是根据服务质量要求和性能参数进行的数据迁移,也可以是根据内存页的热度进行的数据迁移)的数据迁移量和数据迁移前后第一进程的IPC变化量,确定第一进程的应用类型。其中,数据迁移前后第一进程的IPC变化量等于数据迁移后第一进程的IPC减去数据迁移前第一进程的IPC。
根据任一次数据迁移的数据迁移量和数据迁移前后第一进程的IPC变化量,可以包括:首先,根据任一次数据迁移的数据迁移量和数据迁移前后第一进程的IPC变化量,计算第一进程的敏感度;根据第一进程的敏感度和敏感度阈值,确定第一进程的应用类型。这里,敏感度表示进程的指令执行速度随进程关联的第一内存的存储空间大小变化的敏感程度。当敏感度大于或等于敏感度阈值时,确定第一进程为敏感型应用。当敏感度小于敏感度阈值时,确定第一进程为非敏感型应用。敏感阈值可以根据实际需要设置。
示例性地,敏感度可以采用以下方式计算:第一步、将数据迁移的迁移量除以单位迁移量,得到比值,单位迁移量为内存页的存储空间大小的整数倍,可以根据实际需要设置;第二步、采用数据迁移前后第一进程的IPC变化量除以该比值,得到敏感度,即单位迁移量对应的IPC变化量。
由于进程关联的第一内存的存储空间大小的变化,会使承载该进程的CPU核的内存访问时延变化,所以单位迁移量对应的IPC变化量可以间接反应时延变化对IPC变化的影响程度。
步骤211a:处理器确定第一内存中空闲内存页对应的存储空间大小是否大于或者等于待迁移的数据量的大小。如果第一内存中空闲内存页对应的存储空间大小小于待迁移的数据量的大小,则执行步骤212a~213a;如果第一内存中空闲内存页对应的存储空间大小大于或者等于待迁移的数据量的大小,则直接执行步骤213a。
步骤212a:处理器指示将第二进程的部分数据从第一内存迁移至第二内存。
如果第一内存中空闲内存页不足,表示第一内存中的内存页被其他进程占用。因此,需要先将被其他进程占用的内存页中的数据的一部分迁移至第二内存中,使得第一内存中空闲内存页对应的存储空间增大,直至第一内存中空闲内存页对应的存储空间大于或者等于待迁移的数据量的大小。
下面对在第一内存中的空闲内存页不足的情况下,如何确定第二进程的方式进行举例说明。第二进程可以根据进程所属用户的优先级、进程的敏感度以及进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系中的至少一种因素来选择。
根据单一因素确定第二进程的方式包括以下三种:
第一种、根据进程所属用户的优先级来确定第二进程。例如,将所属用户的优先级低于第一进程所属用户的优先级的进程作为第二进程,即第二进程所属用户的优先级低于第一进程所属用户的优先级。
第二种、根据进程的敏感度来确定第二进程。例如,将敏感度小于敏感度阈值的进程作为第二进程,即第二进程的敏感度小于敏感度阈值。这里,第二进程的敏感度用于指示第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度。敏感度越大,第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度越高;反之,敏感度越小,第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度越低。
第三种、根据进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系来确定第二进程。例如,将性能参数所指示的服务性能高于服务质量要求所指示的性能需求的进程,作为第二进程。即第二进程的性能参数所指示的服务性能高于服务质量要求所指示的性能需求的进程。
在一些示例中,当第一进程不满足绝对质量要求时,优先选择服务性能高于服务质量要求所指示的性 能需求的进程作为第二进程。
在另一些示例中,当第一进程不满足相对质量要求时,优先选择目标优先级下,服务性能高于服务质量要求所指示的性能需求的进程作为第二进程。即对于与服务性能正相关的性能参数,优先选择性能参数高于目标优先级下各个进程的性能参数平均值的其他进程;而对于与服务性能负相关的性能参数,优先选择性能参数低于目标优先级下各个进程的性能参数平均值的其他进程。
根据至少两种因素确定第二进程的情况包括以下几种:
当根据进程所属用户的优先级和进程的敏感度确定第二进程时,可以优先选择优先级比第一进程所属用户的优先级低的用户的进程且敏感度小于敏感度阈值的进程作为第二进程;当不存在优先级比第一进程所属用户的优先级低的用户的进程且敏感度小于敏感度阈值的进程时,选择优先级比第一进程所属用户的优先级低的用户的进程但敏感度大于或者等于敏感度阈值的进程作为第二进程。这样,可以优先保证高优先级用户的进程的服务质量,并且尽量降低对低优先级用户的服务质量的影响。
当根据进程的敏感度、以及进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系确定第二进程时,优先选择服务性能高于服务质量要求所指示的性能需求且非敏感型应用对应的进程作为第二进程;如果不存在选择服务性能高于服务质量要求所指示的性能需求且非敏感型应用对应的进程,则选择非敏感型应用对应的进程作为第二进程。对于非敏感型应用对应的进程而言,虽然内存访问时延增大了,但是其指令执行速度变化量较小,因此,将这种进程作为第二进程,将第二进程关联的第一内存的存储空间减小,对其服务性能影响较小。这样,可以尽量降低对第二进程的服务质量的影响。
当根据进程所属用户的优先级、进程的敏感度以及进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系确定第二进程时,优先考虑进程所属用户的优先级,然后考虑进程的敏感度,最后考虑进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系。例如,可以优先选择优先级比第一进程所属用户的优先级低的进程中,服务性能高于服务质量要求所指示的性能需求且非敏感型应用对应的进程作为第二进程。如果优先级比第一进程所属用户的优先级低的进程中,不存在服务性能高于服务质量要求所指示的性能需求且非敏感型应用对应的进程,则选择优先级比第一进程所属用户的优先级低的进程中,非敏感型应用对应的进程作为第二进程。如果优先级比第一进程所属用户的优先级低的进程中,不存在非敏感型应用对应的进程,则选择优先级比第一进程所属用户的优先级低的进程中,服务性能高于服务质量要求所指示的性能需求的进程作为第二进程。如果不存在比第一进程所属用户的优先级低的进程,则从优先级与第一进程所属用户的优先级相同的用户的进程中选择第二进程。选择方式与从优先级比第一进程所属用户的优先级低的用户的进程中选择第二进程的方式相同。这样,可以优先保证高优先级用户的进程的服务质量,并且尽量降低对低优先级用户的服务质量的影响。
在步骤212a中,处理器向内存控制器发送数据迁移指令,该数据迁移指令用于指示将第二进程关联的第一内存的存储空间中的数据迁移至第二内存中。
步骤213a:处理器按照步骤210a中确定出的待迁移数据量,指示将第一进程的部分数据从第二内存迁移至第一内存,以增大第一进程关联的第一内存的存储空间的大小,并减小第一进程关联的第二内存的存储空间的大小。
实现时,处理器可以向内存控制器发送第一数据迁移指令,该第一数据迁移指令用于指示将第一进程关联的第一内存的存储空间中的数据迁移至第二内存中。这样即可减小第一进程关联的第一内存的存储空间的大小并增大第一进程关联的第二内存的存储空间的大小。
示例性地,可以将第二内存中第一目标内存页中的数据迁移至第一内存中,第一目标内存页的热度高于第二内存中非第一目标内存页的热度,第一目标内存页和非第一目标内存页均与第一进程关联,即非第一目标内存页为第二内存中除了第一目标内存页之外的属于第一进程的内存页。第一目标内存页对应的数据量等于前述待迁移数据量。通过将第二内存中第一进程关联的热度较高的内存页中的数据迁移至第一内存中,可以增大第一进程关联的第一内存的存储空间的大小并减小第一进程关联的第二内存的存储空间的大小,从而提高第一进程的服务性能。
实际应用中,可以将第二内存中第一进程关联的内存页按照热度从高到低的顺序进行排序,将前N个内存页作为第一目标内存页(即热内存页)。其中,N为设定值。
对于每个进程而言,分配到的内存空间的全局地址是一定的,因此,进程标识(process identification,PID)与全局地址之间存在映射关系,根据进程标识与全局地址之间的映射关系可以确定第一进程对应的 全局地址,根据第一进程对应的全局地址所对应的内存类型以及热度信息,即可实现将第二内存中第一进程关联的内存页按照热度从高到低的顺序进行排序。
步骤210b:处理器确定第一进程对应的待迁移的数据量的大小。
该步骤210b的实现方式可以参见步骤210a,在此省略详细描述。
步骤211b:处理器确定第二内存中空闲内存页对应的存储空间大小是否大于或者等于待迁移的数据量的大小。
如果第二内存中空闲内存页对应的存储空间大小大于或者等于待迁移的数据量的大小,直接执行步骤212b。
如果第一内存中空闲内存页对应的存储空间大小小于待迁移的数据量的大小,则表示混合内存系统的容量可能不足,可以退出当前流程。可选地,当第一内存中空闲内存页对应的存储空间大小小于待迁移的数据量的大小时,可以输出提示信息,该提示信息用于提醒用户混合内存系统的容量可能不足。
步骤212b:处理器按照步骤210b中确定出的待迁移数据量,指示将第一进程的部分数据从第一内存迁移至第二内存,以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小。
例如,可以将第一内存中第二目标内存页中的数据迁移至第二内存中,第二目标内存页的热度低于第一内存中非第二目标内存页的热度,这里,第二目标内存页和非第二目标内存页均与第一进程关联,非第二目标内存页为第一内存中除了第二目标内存页之外的属于第一进程的内存页。第二目标内存页对应的数据量等于前述待迁移数据量。通过将第一内存中第一进程关联的热度较低的内存页中的数据迁移至第二内存中,可以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小,从而降低第一进程的服务性能。
实际应用中,可以将第一内存中第一进程关联的内存页按照热度从低到高的顺序进行排序,将前M个内存页作为第二目标内存页(即冷内存页)。其中,M为设定值。
实现时,处理器可以向内存控制器发送第二数据迁移指令。其中,该第二数据迁移指令用于指示将第一进程关联的第二内存的存储空间中的数据迁移至第一内存中,这样即可增大第一进程关联的第一内存的存储空间的大小并减小第一进程关联的第二内存的存储空间的大小。
当第一进程关联的第一内存的存储空间减小时,第一进程释放的这部分第一内存的存储空间可以与至少一个其他进程关联;或者,第一进程释放的这部分第一内存的存储空间暂时处于空闲状态,其他进程关联的第一内存的存储空间不发生变化。
通过该步骤209~步骤213a或者步骤209~步骤212b可以通过根据第一进程关联的性能参数和服务质量要求在第一内存和第二内存之间进行数据迁移,来实现分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。在根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移之后,第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小发生变化。由于第一进程关联的第一内存的存储空间越大,第一内存中能够存储的第一进程的被频繁访问的数据的数据量越大,这样,第一进程能够充分利用高性能的第一内存提高处理效率,从而提供更好的服务质量。
其中,第一进程关联的第一内存的存储空间的大小,是指第一进程的数据在第一内存中占用的存储空间的大小;第一进程关联的第二内存的存储空间的大小,是指第一进程的数据在第二内存中占用的存储空间的大小。
在一些示例中,通过根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行一次数据迁移,即可使第一进程满足服务质量要求,然后退出当前流程。在另一些示例中,在第一次根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移后,第一进程可能仍然不满足服务质量要求,需要根据数据迁移后第一进程关联的性能参数和服务质量要求,再次在第一内存和第二内存之间进行数据迁移……直至第一进程满足服务质量要求。
在一种可能的实施方中,在每次根据第一进程关联的性能参数和服务质量要求在第一内存和第二内存之间进行数据迁移之后,根据数据迁移后的第一进程关联的性能参数,确定第一进程是否满足服务质量要求。如果数据迁移后,第一进程不满足服务质量要求,且第一进程关联的性能参数指示的服务性能比本次数据迁移前第一进程关联的性能参数对应的服务性能更加接近服务质量要求指示的性能需求时,再次根据 第一进程关联的性能参数和服务质量要求在第一内存和第二内存之间进行数据迁移之后。而如果数据迁移后,第一进程不满足服务质量要求,且第一进程关联的性能参数指示的服务性能与本次数据前一次第一进程关联的性能参数指示的服务性能相比,与服务质量要求所指示的性能需求之间的差距增大或者不变时,退出当前流程。
其中,数据迁移后第一进程关联的性能参数对应的服务性能比数据迁移前第一进程的性能参数对应的服务性能更加接近性能需求,表示调整第一进程关联的第一内存的存储空间的大小的方式是有效的,但是仍然未能达到服务质量要求,因此,可以按照相同的方式继续调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。而数据迁移后第一进程关联的性能参数对应的服务性能与数据迁移前第一进程的性能参数对应的服务性能相比,与服务质量要求指示的性能需求之间的差距增大或者不变,表示继续调整第一进程关联的第一内存的存储空间的大小对服务质量的提升没有显著的效果,则无需执行数据迁移,以节省存储系统的控制资源。
在本申请实施例中,当混合内存系统中同时运行两个以上进程时,获取运行的进程的性能参数集合,即获取运行的各个进程关联的性能参数。由于每个性能参数用于指示关联进程的服务性能,所以可以根据进程关联的性能参数和服务质量要求,确定出不满足服务质量要求的第一进程,再分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。由上述方法可知,本申请可根据进程关联的性能参数,确定出不满足服务质量要求的进程,进而调整该进程关联的高性能的内存的存储空间的大小。实现了一种动态内存分配方法,可以结合进程的当前服务性能动态调整其关联的高性能内存的存储空间的大小,以在充分利用高性能内存的存储空间的情况下,使混合内存系统中运行的多个进程均能够满足服务质量要求,提高多用户的用户体验。另一方面,由于可根据进程的当前服务性能动态调整进程关联的不同内存的大小,对高性能内存而言,也提升了其使用效率。
在图2所示实施例中,在确定第一进程不满足服务质量要求时,先根据第一内存中内存页的热度信息和第二内存中内存页的热度信息,在第一内存和第二内存之间进行数据迁移(参见上述步骤205-步骤206),这样,可以先保证第一进程关联的数据中,热度较高的数据均位于第一内存中,在此基础上再调整第一进程关联的第一内存的存储空间的大小和第二内存关联的存储空间的大小,调整效率更高,有利于快速将第一进程满足服务质量要求。可替代地,在其他实施例中,也可以不执行205-208,而直接执行步骤209及后续步骤。
图4是本申请提供的一种内存管理装置的结构示意图。该装置适用于前述混合内存系统。如图4所示,该装置300包括:获取模块301、确定模块302和调整模块303。其中,获取模块301用于获取混合内存系统中运行的进程的性能参数集合,性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能。确定模块302用于根据性能参数集合确定不满足服务质量要求的第一进程,服务质量要求用于指示第一进程的性能需求,第一进程为混合内存系统中运行的进程中的一个进程。调整模块303用于分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。
可选地,确定模块302用于采用如下方式中的任一种确定第一进程:将性能参数集合中的第一性能参数所关联的进程确定为第一进程,其中,第一能参数小于SLA中规定的第一性能参数阈值;或者,将性能参数集合中的第二性能参数所关联的进程确定为第一进程,其中,第二性能参数大于SLA中规定的第二性能参数阈值;或者,将性能参数集合中的第三性能参数所关联的进程确定为第一进程,其中,第三性能参数所指示的服务性能和性能参数集合中第四性能参数所指示的服务性能之间的优劣关系不满足优先级条件,该优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,第一优先级高于第二优先级;以及相同优先级的两个进程的性能参数所指示的服务性能相同。
可选地,调整模块303用于根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,直至第一进程满足服务质量要求。
在一些示例中,调整模块303用于当第一进程关联的性能参数指示第一进程的服务性能低于服务质量要求指示的性能需求时,确定待迁移数据量,按照待迁移数据量将第一进程的部分数据从第二内存迁移至第一内存,以增大第一进程关联的第一内存的存储空间的大小,并减小第一进程关联的第二内存的存储空间的大小。
例如,调整模块303用于将第二内存中第一目标内存页中的数据迁移至第一内存中,第一目标内存页的热度高于第二内存中非第一目标内存页的热度,第一目标内存页和非第一目标内存页均与第一进程关联。
在另一些示例中,调整模块303用于当第一进程关联的性能参数指示第一进程的服务性能高于服务质量要求指示的性能需求时,确定待迁移数据量,按照待迁移数据量将第一进程的部分数据从第一内存迁移至第二内存,以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小。
例如,调整模块303用于将第一内存中第二目标内存页中的数据迁移至第二内存中,第二目标内存页的热度低于第一内存中非第二目标内存页的热度,第二目标内存页和非第二目标内存页均与第一进程关联。
可选地,调整模块303用于采用以下方式中的任一种确定待迁移数据量:根据第一进程关联的性能参数所指示的服务性能和服务质量要求所指示的性能需求之间的差距确定待迁移数据量;或者,将设定值作为待迁移数据量。
可选地,调整模块303还用于在将第一进程的部分数据从第二内存迁移至第一内存之前,将第二进程的部分数据从第一内存迁移至第二内存,第二进程为混合内存系统中运行的进程中的另一个进程,且第二进程满足以下条件中的至少一项:第二进程的优先级低于第一进程的优先级;第二进程的敏感度小于敏感度阈值,第二进程的敏感度用于指示第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度;第二进程的性能参数所指示的服务性能高于服务质量要求所指示的性能需求。
可选地,当调整模块303需要执行两次以上根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移时,调整模块303用于在第X次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移之后,当第一进程的性能参数指示的服务性能比第X次数据迁移之前更接近服务质量要求所指示的性能需求时,进行第X+1次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,其中,X为正整数。
需要说明的是:上述实施例提供的内存管理装置进行内存管理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存管理装置与内存管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是个人计算机,手机,或者通信设备等)或处理器(processor)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例中还提供了一种内存管理系统,该内存管理系统可以为计算机设备。图5示例性的提供了计算机设备400的一种可能的架构图。
如图5所示,计算机设备400包括存储器401、处理器402、通信接口403和总线404。其中,存储器401、处理器402和通信接口403通过总线404实现彼此之间的通信连接。
存储器401可以是ROM,静态存储设备,动态存储设备或者RAM。存储器401可以存储程序,当存储器401中存储的程序被处理器402执行时,处理器402和通信接口403用于执行设备访问方法。存储器401还可以存储数据集合,例如:存储器401中的一部分存储资源被划分成一个数据存储模块,用于存储IO请求对应的数据等。
处理器402可以采用通用的CPU,微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路。
处理器402还可以是一种集成电路芯片,具有信号处理能力。在实现过程中,本申请的信号处理装置 的部分或全部功能可以通过处理器402中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器402还可以是通用处理器、数字信号处理器(digital signal drocessing,DSP)、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请上述实施例中的公开的各方法。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器402读取存储器401中的信息,结合其硬件完成本申请实施例的内存管理装置的部分功能。
通信接口403使用例如但不限于收发器一类的收发模块,来实现计算机设备400与其他设备或通信网络之间的通信。
总线404可包括在计算机设备400各个部件(例如,存储器401、处理器402、通信接口403)之间传送信息的通路。
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
本申请实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中存储的计算机指令被计算机设备执行时,使得计算机设备执行上述所提供的内存管理方法。
本申请实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述所提供的内存管理方法。
本申请实施例中,还提供了一种芯片,该芯片包括处理器和供电电路,供电电路用于对处理器进行供电,处理器用于执行图2所示的内存管理方法。
在一些示例中,该芯片还包括存储器,存储器中存储有计算机指令,处理器用于执行存储器中存储的计算机指令,以实现图2所示的内存管理方法。这里存储器至少包括前述第一内存和第二内存。
在另一些示例中,该芯片还可以包括控制器(例如图1中的控制器103),该控制器用于在处理器的控制下,在第一内存和第二内存之间进行数据迁移。
在又一些示例中,该芯片中的处理器既用于实现图2所示的内存管理方法,又用于控制第一内存和第二内存之间的数据迁移,即将图1中处理器101和控制器103集成在一起,采用FPGA或者其他可编程逻辑器件实现。
除非另作定义,此处使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开专利申请说明书以及权利要求书中使用的“第一”、“第二”、“第三”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”等类似的词语意指出现在“包括”前面的元件或者物件涵盖出现在“包括”后面列举的元件或者物件及其等同,并不排除其他元件或者物件。本申请实施例中所述的“数据”为广义的数据,既可以是应用程序的指令代码,也可以是应用程序运行所使用的数据。本申请实施例所涉及的多个,是指两个或者更多个。
以上所述仅为本申请一个实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

  1. 一种内存管理方法,其特征在于,所述方法适用于混合内存系统,所述混合内存系统包括第一内存和第二内存,所述第一内存的性能高于所述第二内存的性能;所述方法包括:
    获取所述混合内存系统中运行的进程的性能参数集合,所述性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;
    根据所述性能参数集合确定不满足服务质量要求的第一进程,所述服务质量要求用于指示所述第一进程的性能需求,所述第一进程为所述混合内存系统中运行的进程中的一个进程;
    分别调整所述第一进程关联的所述第一内存的存储空间的大小和所述第一进程关联的所述第二内存的存储空间的大小。
  2. 根据权利要求1所述的方法,其特征在于,所述根据所述性能参数集合确定不满足服务质量要求的第一进程,包括:
    将所述性能参数集合中的第一性能参数所关联的进程确定为所述第一进程,其中,所述第一性能参数小于服务等级协议SLA中规定的第一性能参数阈值;或者,
    将所述性能参数集合中的第二性能参数所关联的进程确定为所述第一进程,其中,所述第二性能参数大于服务等级协议SLA中规定的第二性能参数阈值;或者,
    将所述性能参数集合中的第三性能参数所关联的进程确定为所述第一进程,其中,所述第三性能参数所指示的服务性能和所述性能参数集合中第四性能参数所指示的服务性能之间的优劣关系不满足优先级条件,所述优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,所述第一优先级高于所述第二优先级;以及相同优先级的两个进程的性能参数所指示的服务性能相同。
  3. 根据权利要求1或2所述的方法,其特征在于,所述分别调整所述第一进程关联的所述第一内存的存储空间的大小和所述第一进程关联的所述第二内存的存储空间的大小,包括:
    根据所述第一进程关联的性能参数和所述服务质量要求,在所述第一内存和所述第二内存之间进行数据迁移,直至所述第一进程满足所述服务质量要求。
  4. 根据权利要求3所述的方法,其特征在于,所述根据所述第一进程关联的性能参数和所述服务质量要求,在所述第一内存和所述第二内存之间进行数据迁移,包括:
    当所述第一进程关联的性能参数指示所述第一进程的服务性能低于所述服务质量要求指示的性能需求时,确定待迁移数据量,按照所述待迁移数据量将所述第一进程的部分数据从所述第二内存迁移至所述第一内存,以增大所述第一进程关联的所述第一内存的存储空间的大小,并减小所述第一进程关联的所述第二内存的存储空间的大小;或者,
    当所述第一进程关联的性能参数指示所述第一进程的服务性能高于所述服务质量要求指示的性能需求时,确定待迁移数据量,按照所述待迁移数据量将所述第一进程的部分数据从所述第一内存迁移至所述第二内存,以减小所述第一进程关联的第一内存的存储空间的大小,并增大所述第一进程关联的第二内存的存储空间的大小。
  5. 根据权利要求4所述的方法,其特征在于,所述确定待迁移数据量,包括:
    根据所述第一进程关联的性能参数所指示的服务性能和所述服务质量要求所指示的性能需求之间的差距确定所述待迁移数据量;或者,
    将设定值作为所述待迁移数据量;或者,
    根据所述第一进程的敏感度确定所述待迁移数据量,所述第一进程的敏感度用于指示所述第一进程的指令执行速度随第一进程关联的第一内存的存储空间大小变化的敏感程度。
  6. 根据权利要求4或5所述的方法,其特征在于,所述根据所述第一进程关联的性能参数和所述服务质量要求,在所述第一内存和所述第二内存之间进行数据迁移,还包括:
    在所述按照所述待迁移数据量将所述第一进程的部分数据从所述第二内存迁移至所述第一内存之前,将第二进程的部分数据从所述第一内存迁移至所述第二内存,所述第二进程为所述混合内存系统中运行的进程中的另一个进程,且所述第二进程满足以下条件中的至少一项:
    所述第二进程的优先级低于所述第一进程的优先级;
    所述第二进程的敏感度小于敏感度阈值,所述第二进程的敏感度用于指示所述第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度;
    所述第二进程的性能参数所指示的服务性能高于所述服务质量要求所指示的性能需求。
  7. 一种内存管理装置,其特征在于,所述装置适用于混合内存系统,所述混合内存系统包括第一内存和第二内存,所述第一内存的性能高于所述第二内存的性能;
    所述装置包括:
    获取模块,用于获取所述混合内存系统中运行的进程的性能参数集合,所述性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;
    确定模块,用于根据所述性能参数集合确定不满足服务质量要求的第一进程,所述服务质量要求用于指示所述第一进程的性能需求,所述第一进程为所述混合内存系统中运行的进程中的一个进程;
    调整模块,用于分别调整所述第一进程关联的所述第一内存的存储空间的大小和所述第一进程关联的所述第二内存的存储空间的大小。
  8. 根据权利要求7所述的装置,其特征在于,所述确定模块用于采用如下方式中的任一种确定所述第一进程:
    将所述性能参数集合中的第一性能参数所关联的进程确定为所述第一进程,其中,所述第一性能参数小于服务等级协议SLA中规定的第一性能参数阈值;或者,
    将所述性能参数集合中的第二性能参数所关联的进程确定为所述第一进程,其中,所述第二性能参数大于服务等级协议SLA中规定的第二性能参数阈值;或者,
    将所述性能参数集合中的第三性能参数所关联的进程确定为所述第一进程,其中,所述第三性能参数所指示的服务性能和所述性能参数集合中第四性能参数所指示的服务性能之间的优劣关系不满足优先级条件,所述优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,所述第一优先级高于所述第二优先级;以及相同优先级的两个进程的性能参数所指示的服务性能相同。
  9. 一种芯片,其特征在于,所述芯片包括处理器和供电电路,所述供电电路用于对所述处理器进行供电,所述处理器用于实现如权利要求1至6任一项所述的方法。
  10. 一种内存管理系统,其特征在于,包括处理器和存储器;所述存储器用于存储软件程序,所述处理器通过执行存储在所述存储器内的软件程序,以实现如权利要求1至6任一项所述的方法。
PCT/CN2023/104186 2022-11-11 2023-06-29 内存管理方法、装置和相关设备 WO2024098795A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202211415701.2 2022-11-11
CN202211415701.2A CN118034901A (zh) 2022-11-11 2022-11-11 内存管理方法、装置和相关设备

Publications (1)

Publication Number Publication Date
WO2024098795A1 true WO2024098795A1 (zh) 2024-05-16

Family

ID=90995541

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2023/104186 WO2024098795A1 (zh) 2022-11-11 2023-06-29 内存管理方法、装置和相关设备

Country Status (2)

Country Link
CN (1) CN118034901A (zh)
WO (1) WO2024098795A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106055407A (zh) * 2016-05-25 2016-10-26 努比亚技术有限公司 进程资源调整装置及方法
CN111198759A (zh) * 2018-11-16 2020-05-26 深圳市优必选科技有限公司 一种内存优化方法、系统、终端设备及可读存储介质
CN113505084A (zh) * 2021-06-24 2021-10-15 中国科学院计算技术研究所 基于访存和性能建模的内存资源动态调控方法及系统
CN114519013A (zh) * 2020-10-30 2022-05-20 北京金山云网络技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114816216A (zh) * 2021-01-19 2022-07-29 华为技术有限公司 一种容量调整的方法以及相关装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106055407A (zh) * 2016-05-25 2016-10-26 努比亚技术有限公司 进程资源调整装置及方法
CN111198759A (zh) * 2018-11-16 2020-05-26 深圳市优必选科技有限公司 一种内存优化方法、系统、终端设备及可读存储介质
CN114519013A (zh) * 2020-10-30 2022-05-20 北京金山云网络技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114816216A (zh) * 2021-01-19 2022-07-29 华为技术有限公司 一种容量调整的方法以及相关装置
CN113505084A (zh) * 2021-06-24 2021-10-15 中国科学院计算技术研究所 基于访存和性能建模的内存资源动态调控方法及系统

Also Published As

Publication number Publication date
CN118034901A (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
US11966581B2 (en) Data management scheme in virtualized hyperscale environments
US11048442B2 (en) Scalable in-memory object storage system using hybrid memory devices
US11119908B2 (en) Systems and methods for memory system management
KR102371916B1 (ko) 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
Kaseridis et al. Minimalist open-page: A DRAM page-mode scheduling policy for the many-core era
US10235290B2 (en) Hot page selection in multi-level memory hierarchies
US9513692B2 (en) Heterogenous memory access
US9354989B1 (en) Region based admission/eviction control in hybrid aggregates
US9772958B2 (en) Methods and apparatus to control generation of memory access requests
TW201346549A (zh) 非依電性隨機存取記憶磁碟
US11144464B2 (en) Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor
Bock et al. Concurrent migration of multiple pages in software-managed hybrid main memory
WO2023227004A1 (zh) 内存访问热度统计方法、相关装置及设备
EP4300308A1 (en) Method and device for achieving memory sharing control, computer device, and system
WO2023051715A1 (zh) 数据处理的方法、装置、处理器和混合内存系统
US20200278804A1 (en) Managing memory system quality of service (qos)
US20240231654A1 (en) Method and Apparatus for Controlling Internal Memory Bandwidth, Processor, and Computing Device
WO2014051544A2 (en) Improved performance and energy efficiency while using large pages
Zhou et al. Hnvm: Hybrid nvm enabled datacenter design and optimization
Herrero et al. Thread row buffers: Improving memory performance isolation and throughput in multiprogrammed environments
WO2024098795A1 (zh) 内存管理方法、装置和相关设备
Zhang et al. DualStack: A high efficient dynamic page scheduling scheme in hybrid main memory
US20230115296A1 (en) System and Method for Centralized Management of Workload and Parallel Service of Prioritized Requests
EP3506112A1 (en) Multi-level system memory configurations to operate higher priority users out of a faster memory level
WO2023000696A1 (zh) 一种资源分配方法及装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23887491

Country of ref document: EP

Kind code of ref document: A1