Prioritizing virtual real memory paging based on disk capabilities

A method manages memory paging operations. Responsive to a request to page out a memory page from a shared memory pool, the method identifies whether a physical space within one of a number of paging space devices has been allocated for the memory page. If physical space within the paging space device has not been allocated for the memory page, a page priority indicator for the memory page is identified. The memory page is then allocated to one of a number of memory pools within one of the number of paging space devices. The memory page is allocated one of the memory pools according to the page priority indicator of the memory page. The memory page is then written to the allocated memory pools.

BACKGROUND

The disclosure relates generally to a computer implemented method, computer implemented program code, and a data processing system. More specifically, the disclosure relates to a computer implemented method, computer implemented program code, and a data processing system for prioritizing virtual real memory paging based on disk capabilities.

2. Description of the Related Art

Increasingly large symmetric multi-processor data processing systems are not being used as single large data processing systems. Instead, these types of data processing systems are being partitioned and used as smaller systems. These systems are also referred to as logical partitioned (LPAR) data processing systems. A logical partitioned functionality within a data processing system allows multiple copies of a single operating system or multiple heterogeneous operating systems to be simultaneously run on a single data processing system platform. A partition, within which an operating system image runs, is assigned a non-overlapping subset of the platform resources. These platform allocable resources include one or more architecturally distinct processors and their interrupt management area, regions of system memory, and input/output (I/O) adapter bus slots. The partition's resources are represented by the platform's firmware to the operating system image.

Each distinct operating system or image of an operating system running within a platform is protected from each other, such that software errors on one logical partition cannot affect the correct operation of any of the other partitions. This protection is provided by allocating a disjointed set of platform resources to be directly managed by each operating system image and by providing mechanisms for ensuring that the various images cannot control any resources that have not been allocated to that image. Furthermore, software errors in the control of an operating system's allocated resources are prevented from affecting the resources of any other image. Thus, each image of the operating system or each different operating system directly controls a distinct set of allocable resources within the platform.

With respect to hardware resources in a logical partitioned data processing system, these resources are shared dis-jointly among various partitions. These resources may include, for example, input/output (I/O) adapters, memory DIMMs, non-volatile random access memory (NVRAM), and hard disk drives. Each partition within a logical partitioned data processing system may be booted and shut down over and over without having to power-cycle the entire data processing system.

Hypervisors such as those on IBM's mainframe products, as well as EMC's vmware have provided a means of virtualizing memory to partitions running on the physical hardware. This technique allows memory to move, based on demand from partition to partition on the virtualized system. The physical memory is managed by the hypervisor, and that management is mostly transparent to the partitions running on top of the hypervisor. This virtualized partition memory is sometimes referred to as virtual real memory (VRM).

The concept of hierarchical storage is currently being extended into commodity services. Some storage is faster or slower than other storage. For example, some disks may be fast with a lower capacity, while other disks may be faster with higher capacity. Solid-state disks offer an extreme example of these storage considerations. Solid-state disks can provide more than 100 times the performance of legacy disks, but typically with limited capacity.

However, the usage of memory within a partition may sometimes require a degree of prioritization. For example, mechanisms may be required by some processes that restrict or guarantee memory to various collections of processes. In one example, a real-time banking application may be guaranteed a large amount of memory, whereas a department web server may be limited to a modest amount of memory. Currently there is no known solution that takes into account prioritization of memory within a partition, virtual real memory, and virtual real memory between partitions.

SUMMARY

According to one embodiment of the present invention, a computer implemented method, a data processing system, and a computer program product, manage memory paging operations. Responsive to a request to page out a memory page from a shared memory pool, the method identifies whether a physical space within one of a number of paging space devices has been allocated for the memory page. If physical space within the paging space device has not been allocated for the memory page, a page priority indicator for the memory page is identified. The memory page is then allocated to one of a number of memory pools within one of the number of paging space devices. The memory page is allocated to one of the memory pools according to the page priority indicator of the memory page. The memory page is then written to the allocated memory pools.

DETAILED DESCRIPTION

With reference now to the figures, and in particular with reference toFIG. 1, a block diagram of a data processing system in which illustrative embodiments may be implemented is depicted. Data processing system100may be a symmetric multiprocessor (SMP) system including processors101,102,103, and104, which connect to system bus106. For example, data processing system100may be an IBM eServer, a product of International Business Machines Corporation in Armonk, N.Y., implemented as a server within a network. Alternatively, a single processor system may be employed. Also connected to system bus106is memory controller/cache108, which provides an interface to local memories160,161,162, and163. I/O bridge110connects to system bus106and provides an interface to I/O bus112. Memory controller/cache108and I/O bridge110may be integrated as depicted.

Data processing system100is a logical partitioned (LPAR) data processing system. Thus, data processing system100may have multiple heterogeneous operating systems (or multiple instances of a single operating system) running simultaneously. Each of these multiple operating systems may have any number of software programs executing within it. Data processing system100is logically partitioned such that different PCI I/O adapters120,121,128,129, and136, graphics adapter148, and hard disk adapter149may be assigned to different logical partitions. In this case, graphics adapter148connects to a display device (not shown), while hard disk adapter149connects to and controls hard disk150.

Thus, for example, suppose data processing system100is divided into three logical partitions, P1, P2, and P3. Each of PCI I/O adapters120,121,128,129, and136, graphics adapter148, hard disk adapter149, each of host processors101,102,103, and104, and memory from local memories160,161,162, and163is assigned to each of the three partitions. In these examples, memories160,161,162, and163may take the form of dual in-line memory modules (DIMMs). DIMMs are not normally assigned on a per DIMM basis to partitions. Instead, a partition will get a portion of the overall memory seen by the platform. For example, processor101, some portion of memory from local memories160,161,162, and163, and I/O adapters120,128, and129may be assigned to logical partition P1; processors102and103, some portion of memory from local memories160,161,162, and163, and PCI I/O adapters121and136may be assigned to partition P2; and processor104, some portion of memory from local memories160,161,162, and163, graphics adapter148and hard disk adapter149may be assigned to logical partition P3.

Each operating system executing within data processing system100is assigned to a different logical partition. Thus, each operating system executing within data processing system100may access only those I/O units that are within its logical partition. Thus, for example, one instance of the Advanced Interactive Executive (AIX) operating system may be executing within partition P1, a second instance (image) of the AIX operating system may be executing within partition P2, and a Linux or OS/400 operating system may be operating within logical partition P3.

Peripheral component interconnect (PCI) host bridge114connected to I/O bus112provides an interface to PCI local bus115. PCI I/O adapters120and121connect to PCI bus115through PCI-to-PCI bridge116, PCI bus118, PCI bus119, I/O slot170, and I/O slot171. PCI-to-PCI bridge116provides an interface to PCI bus118and PCI bus119. PCI I/O adapters120and121are placed into I/O slots170and171, respectively. Typical PCI bus implementations support between four and eight I/O adapters (i.e. expansion slots for add-in connectors). Each PCI I/O adapter120-121provides an interface between data processing system100and input/output devices such as, for example, other network computers, which are clients to data processing system100.

An additional PCI host bridge122provides an interface for an additional PCI bus123. PCI bus123connects to a plurality of PCI I/O adapters128and129. PCI I/O adapters128and129connect to PCI bus123through PCI-to-PCI bridge124, PCI bus126, PCI bus127, I/O slot172, and I/O slot173. PCI-to-PCI bridge124provides an interface to PCI bus126and PCI bus127. PCI I/O adapters128and129are placed into I/O slots172and173, respectively. In this manner, additional I/O devices, such as, for example, modems or network adapters may be supported through each of PCI I/O adapters128-129. Consequently, data processing system100allows connections to multiple network computers.

A memory mapped graphics adapter148is inserted into I/O slot174and connects to I/O bus112through PCI bus144, PCI-to-PCI bridge142, PCI bus141, and PCI host bridge140. Hard disk adapter149may be placed into I/O slot175, which connects to PCI bus145. In turn, this bus connects to PCI-to-PCI bridge142, which connects to PCI host bridge140by PCI bus141.

A PCI host bridge130provides an interface for PCI bus131to connect to I/O bus112. PCI I/O adapter136connects to I/O slot176, which connects to PCI-to-PCI bridge132by PCI bus133. PCI-to-PCI bridge132connects to PCI bus131. This PCI bus also connects PCI host bridge130to the service processor mailbox interface and ISA bus access pass-through194and PCI-to-PCI bridge132. Service processor mailbox interface and ISA bus access pass-through194forwards PCI accesses destined to the PCI/ISA bridge193. NVRAM storage192connects to the ISA bus196. Service processor135connects to service processor mailbox interface and ISA bus access pass-through logic194through its local PCI bus195. Service processor135also connects to processors101,102,103, and104via a plurality of JTAG/I2C busses134. JTAG/I2C busses134are a combination of JTAG/scan busses (see IEEE 1149.1) and Phillips I2C busses. However, alternatively, JTAG/I2C busses134may be replaced by only Phillips I2C busses or only JTAG/scan busses. All SP-ATTN signals of the host processors101,102,103, and104connect together to an interrupt input signal of service processor135. Service processor135has its own local memory191and has access to the hardware OP-panel190.

When data processing system100is initially powered up, service processor135uses the JTAG/I2C busses134to interrogate the system (host) processors101,102,103, and104, memory controller/cache108, and I/O bridge110. At the completion of this step, service processor135has an inventory and topology understanding of data processing system100. Service processor135also executes Built-In-Self-Tests (BISTs), Basic Assurance Tests (BATs), and memory tests on all elements found by interrogating the host processors101,102,103, and104, memory controller/cache108, and I/O bridge110. Any error information for failures detected during the BISTs, BATs, and memory tests are gathered and reported by service processor135.

If a meaningful and valid configuration of system resources is still possible after taking out the elements found to be faulty during the BISTs, BATs, and memory tests, then data processing system100is allowed to proceed to load executable code into local (host) memories160,161,162, and163. Service processor135then releases host processors101,102,103, and104for execution of the code loaded into local memory160,161,162, and163. While host processors101,102,103, and104are executing code from respective operating systems within data processing system100, service processor135enters a mode of monitoring and reporting errors. The type of items monitored by service processor135include, for example, the cooling fan speed and operation, thermal sensors, power supply regulators, and recoverable and non-recoverable errors reported by processors101,102,103, and104, local memories160,161,162, and163, and I/O bridge110.

Service processor135saves and reports error information related to all the monitored items in data processing system100. Service processor135also takes action based on the type of errors and defined thresholds. For example, service processor135may take note of excessive recoverable errors on a processor's cache memory and decide that this is predictive of a hard failure. Based on this determination, service processor135may mark that resource for de-configuration during the current running session and future Initial Program Loads (IPLs). IPLs are also sometimes referred to as a “boot” or “bootstrap”.

Data processing system100may be implemented using various commercially available computer systems. For example, data processing system100may be implemented using IBM eServer iSeries Model 840 system available from International Business Machines Corporation. Such a system may support logical partitioning using an OS/400 operating system, which is also available from International Business Machines Corporation.

With reference now toFIG. 2, a block diagram of an exemplary logical partitioned platform is depicted in which illustrative embodiments may be implemented. The hardware in logical partitioned platform200may be implemented as, for example, data processing system100inFIG. 1. Logical partitioned platform200includes partitioned hardware230, operating systems202,204,206,208, and partition management firmware210. Operating systems202,204,206, and208may be multiple copies of a single operating system or multiple heterogeneous operating systems simultaneously run on logical partitioned platform200. These operating systems may be implemented using OS/400, which are designed to interface with a partition management firmware, such as Hypervisor, which is available from International Business Machines Corporation. OS/400 is used only as an example in these illustrative embodiments. Of course, other types of operating systems, such as AIX and Linux, may be used depending on the particular implementation. Operating systems202,204,206, and208are located in partitions203,205,207, and209. Hypervisor software is an example of software that may be used to implement partition management firmware210and is available from International Business Machines Corporation. Firmware is “software” stored in a memory chip that holds its content without electrical power, such as, for example, read-only memory (ROM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), and nonvolatile random access memory (nonvolatile RAM).

Additionally, these partitions also include partition firmware211,213,215, and217. Partition firmware211,213,215, and217may be implemented using initial boot strap code, IEEE-1275 Standard Open Firmware, and runtime abstraction software (RTAS), which is available from International Business Machines Corporation. When partitions203,205,207, and209are instantiated, a copy of boot strap code is loaded onto partitions203,205,207, and209by platform firmware210. Thereafter, control is transferred to the boot strap code with the boot strap code then loading the open firmware and RTAS. The processors associated or assigned to the partitions are then dispatched to the partition's memory to execute the partition firmware.

Partitioned hardware230includes processors232,234,236, and238, memories240,242,244, and246, input/output (I/O) adapters248,250,252,254,256,258,260, and262, and a storage unit270. Each of processors232,234,236, and238, memories240,242,244, and246, NVRAM storage298, and I/O adapters248,250,252,254,256,258,260, and262may be assigned to one of multiple partitions within logical partitioned platform200, each of which corresponds to one of operating systems202,204,206, and208.

Partition management firmware210performs a number of functions and services for partitions203,205,207, and209to create and enforce the partitioning of logical partitioned platform200. Partition management firmware210is a firmware implemented virtual machine identical to the underlying hardware. Thus, partition management firmware210allows the simultaneous execution of independent OS images202,204,206, and208by virtualizing all the hardware resources of logical partitioned platform200.

Service processor290may be used to provide various services, such as processing of platform errors in the partitions. These services also may act as a service agent to report errors back to a vendor, such as International Business Machines Corporation. Operations of the different partitions may be controlled through a hardware management console, such as hardware management console280. Hardware management console280is a separate data processing system from which a system administrator may perform various functions including reallocation of resources to different partitions.

Illustrative embodiments provide a method for managing memory wherein prioritized pages are mapped to real memory having performance characteristics. Each page of memory is provided with a priority value. Partition management firmware maps pages of higher priorities to physical memory or higher performance paging storage. Partition management firmware maps pages of lower priorities to lower performing paging storage.

If an operating system determines that a page in memory will need to have a fast access time, partition management firmware can use a high value set in the page frame structure to indicate that the page should come from actual real memory. If the operating system determines that the page frame is of medium priority, partition management firmware can use this value to use disk-based memory but have the memory be mapped on the fast disks in the storage server. If the operating system determines that the page frame is of low priority, partition management firmware can use this value to use disk-based memory but have the memory be on slower disks in the storage server.

Illustrative embodiments provide a method for managing memory paging operations. Responsive to a request to page out a memory page from a shared memory pool, the method identifies whether a physical space within one of a number of paging space devices has been allocated for the memory page. If physical space within the paging space device has not been allocated for the memory page, a page priority indicator for the memory page is identified. The memory page is then allocated to one of a number of memory pools within one of the number of paging space devices. The memory page is allocated to one of the memory pools according to the page priority indicator of the memory page. The memory page is then written to the allocated memory pools.

Referring now toFIG. 3, a logical partitioned platform having a physically overcommitted shared memory configuration is shown according to an illustrative embodiment. Logical partitioned platform300is a logically partitioned platform such as logically partitioned platform200ofFIG. 2.

Shared memory partitions310,312, and314are partitions, such as partitions203,205,207, and209ofFIG. 2, of memory allocated to shared memory pool316from physical memory318. Shared memory pool316is a defined collection of physical memory blocks that are managed as a single memory pool by partition management firmware320. Shared memory within shared memory pool316is a portion of physical memory318that is assigned to shared memory pool316and shared among shared memory partitions310,312, and314. Partition management firmware320is partition management firmware such as partition management firmware210ofFIG. 2.

Partition management firmware320does not assign a dedicated amount of physical memory318to each of shared memory partitions310,312, and314. Instead, partition management firmware320constantly provides memory as needed from shared memory pool316to each of shared memory partitions310,312, and314. Partition management firmware320provides portions of the shared memory pool that are not currently being used by shared memory partitions to other shared memory partitions that need to use the memory. Each of shared memory partitions310,312, and314share that portion of physical memory318that is assigned to shared memory pool316with others of shared memory partitions310,312, and314.

Partition management firmware320determines the amount of memory allocated from shared memory pool316to each of shared memory partitions310,312, and314based on the workload and memory configuration of each of shared memory partitions310,312, and314. When allocating physical memory318to shared memory partitions310,312, and314, partition management firmware320ensures that each of shared memory partitions310,312, and314can access only a portion of shared memory pool316allocated to the shared memory partition at any given time. Shared memory partitions310,312, and314cannot access the physical memory of shared memory pool316allocated to another of shared memory partitions310,312, and314.

When one of shared memory partitions310,312, and314needs more memory than a current amount of unused memory in the shared memory pool316, Partition management firmware320stores a portion of the memory that belongs to the shared memory partition in paging space devices322. Paging space devices322is nonvolatile storage used to hold portions of a shared memory partition's logical memory that do not reside in shared memory pool316. In one illustrative embodiment, paging space devices322is a hard disk, such as hard disk150ofFIG. 1.

Access to paging space devices322is provided by paging VIOS partition324. Paging VIOS partition324is a logical partition, such as one of partitions203,205,207, and209ofFIG. 2, that provides access to paging space devices322required for shared memory partitions310,312, and314in an overcommitted memory configuration. When the operating system in one of shared memory partitions310,312, and314, such as operating systems202,204,206, or208ofFIG. 2, attempts to access data that is located in paging space devices322, partition management firmware320directs a paging VIOS partition324to retrieve the data from paging space devices322and write to shared memory pool316so that the operating system can access the data.

When an operating system or other program within one of shared memory partitions310-314first begins executing, the operating system copies a small portion of the process address space from a program file stored on disk, such as hard disk150ofFIG. 1, into shared memory pool316. This portion typically includes the first page of instructions and possibly a small amount of data that is needed at start-up. As more instructions or data are needed, the operating system brings in pages from the process' address on demand.

When an operating system within one of shared memory partitions310-314needs access to a specific resource, instruction, or data, that particular one of shared memory partitions310-314must establish a virtual memory page to real memory mapping for the resource. The operating system of the particular one of shared memory partitions310-314makes a request to partition management firmware320to access the resource. Partition management firmware320checks paging data structure326to determine whether the physical resource has been mapped as a virtual resource. Paging data structure326is a data structure containing mappings of virtual memory space to physical space328within one of memory pools334of one of paging space devices322. Paging data structure326can be, for example, but not limited to, a data structure such as an array, a list, a binary tree, a B-tree, a heap, a hash, or a graph.

Paging data structure326contains page entries. Each of the page entries is assigned one of page priority indicators332. Page priority indicators332are hierarchical indications of the relative importance of the corresponding page.

If the physical resource has been mapped, partition management firmware320grants the particular one of shared memory partitions310-314access to the virtual resource. If the physical resource has not been mapped, partition management firmware320creates a new entry in paging data structure326. Physical space at paging space devices322can be allocated either at the time the entry is made, or at a subsequent time when request330is received for paging page332out from shared memory pool316.

Referring now toFIG. 4, a paging data structure including a page priority indicator is shown according to an illustrative embodiment. Paging data structure400can be a paging data structure such as paging data structure326ofFIG. 3.

Paging data structure400includes page entries410. Each of page entries410is a mapping of a page of virtual memory to the physical page frame that the virtual memory page mirrors. Therefore, each of page entries410correspond to one of virtual page numbers420, and one of physical locations430.

Each of page entries410also is assigned one of page priority indicators440. Page priority indicators440are hierarchical indications of the relative importance of the corresponding page.

By utilizing priority indicators440, a partition management firmware, such as partition management firmware320ofFIG. 3, can determine how to allocate pages to various memory pools on paging space devices, such as paging space devices322ofFIG. 3, to better utilize system resources and improve performance of paging operations. Page entries with a higher page priority indicator440can be mapped to memory pools on physical memory, such as physical memory318ofFIG. 3, or to memory pools on higher performance paging storage devices. Page entries having a lower page priority indicator440can be mapped to memory pools on lower performing paging storage.

In one illustrative embodiment, every real memory page frame structure is associated with one of a page priority indicator440. As a simple example, page priority indicator440could be a predetermined value indicating a relative importance of data within the real memory page frame. In one illustrative embodiment, the predetermined value is an indication of a low priority, a medium priority, or a high priority. In one illustrative embodiment, the predetermined value is an extended range of values. If an operating system determines that a page in memory will need to have the fast access time, the page can be given a high value page priority indicator440. The relatively high value page priority indicator440can be used by partition management firmware, such as partition management firmware320ofFIG. 3, to indicate that, in response to a paging out of the page to a paging space device, such as one of paging space devices322ofFIG. 3, the page should be paged into actual real memory, such as physical memory318ofFIG. 3. If the operating system determines that the page frame is of medium priority, the page can be given a relatively medium value page priority indicator440. The relatively medium value page priority indicator440can be used by partition management firmware to indicate that the page use disk based memory, but have the memory be mapped on faster disks of the paging space devices. If the operating system determines that the page frame is of low priority, the page can be given a relatively low value page priority indicator440. The relatively low value page priority indicator440can be used by partition management firmware to indicate that the page use disk based memory, but have the memory be on slower disks of the paging space devices.

Referring now toFIG. 5, a flowchart for processing memory paging operations is shown according to an illustrative embodiment. Process500is a software process, executing on a software component, such as partition management firmware320ofFIG. 3.

Process500begins by receiving a request to access particular resource (step505). When an operating system or other program within a shared memory partition first begins executing, the operating system copies a small portion of the process address space from a program file stored on disk, such as hard disk into a shared memory pool. As more resources, including instructions or data are needed, the operating system brings in pages from the process' address on demand.

Responsive to receiving the request, process500determines whether the requested resource exists in a paging data structure (step510). The paging data structure can be paging data structure326ofFIG. 3. If the page exists in the paging data structure, the requested physical resource has already been mapped as a virtual resource.

Responsive to determining that the requested resource does not exist in the paging data structure (“no” at step510), an initial mapping is stored as a page entry within the paging data structure (step520). The page entry can be one of page entries420ofFIG. 4. The page entry includes a virtual page number, such as virtual page number420ofFIG. 4, and a page priority indicator, such as page priority indicator440ofFIG. 4. Depending on the implementation of the paging process, the paging data structure may or may not yet include a physical location, such as physical location430ofFIG. 4.

If the physical resource has been mapped, the partition management firmware grants the particular one of shared memory partitions access to the virtual resource. If the physical resource has not been mapped, partition management firmware creates a new entry in paging data structure. Physical space at paging space devices can be allocated either at the time the entry is made, or at a subsequent time when the page is paged out from shared memory pool.

By utilizing priority indicators, process500can determine how to allocate pages to various memory pools on various paging space devices to better utilize system resources and improve performance of paging operations. If the page will need to have the fast access time, the page can be given a higher value page priority indicator. If the page does not need to have the fast access time, the page can be given a lower value page priority indicator.

At a subsequent time, the page may need to be paged out of shared memory to make room for other pages to be utilized. Responsive to receiving a request to page out the memory page (step515), process500attempts to page out the memory page (step525). To page the memory page out of shared memory pool, process500first determines whether physical space within a paging space device has been allocated for the memory page (step530).

Process500determines whether physical space within a paging space device has been allocated for the memory page by examining the page entry within the paging data structure that corresponds to the memory page (step530). Memory pages that have been allocated space at a paging device will be mapped to a physical location, such as indicated in physical locations430ofFIG. 4.

Responsive to determining that physical space within a paging space device has been allocated for the memory page (“yes” at step530), process500determines whether the allocated paging space is consistent with the page priority indicator (step535). A page may become more or less important to programs executing within an operating system. Pages whose priority has changed can be remapped to different ones of the various paging space devices, based on their current, changed page priority indicator.

Responsive to determining that the allocated paging space is consistent with the page priority indicator (“yes” at step535), process500writes the memory page to the allocated space (step540), with the process terminating thereafter.

Returning now to step530, responsive to determining that physical space within a paging space device has not been allocated for the memory page (“no” at step530), process500examines the page priority indicator for the memory page (step545). By utilizing priority indicators, process500can determine how to allocate pages to various memory pools on various paging space devices to better utilize system resources and improve performance of paging operations.

Process500then allocates the page to a memory pool within a paging space device, according to the page priority indicator (step550). Page entries with a higher page priority indicator are mapped to memory pools on physical memory, or to memory pools on higher performance paging storage devices. Page entries having a lower page priority indicator are mapped to memory pools on lower performing paging storage. Responsive to allocating the page to a memory pool within a paging space device, according to the page priority indicator, process500writes the memory page to the allocated space (step540), with the process terminating thereafter.

Returning now to step535, responsive to determining that the allocated paging space is consistent with the page priority indicator (“no” at step535), process500deallocates the assigned memory pool within a paging space device (step555). Process500can deallocate the assigned memory pool simply by removing the mapping of the page to the assigned memory pool. Because the priority for the page has changed, a new allocation reflecting the new page priority indicator should be assigned to the page. Process500then proceeds to step550, allocating the page to a memory pool within a paging space device, according to the page priority indicator, with the process terminating thereafter.

Thus, illustrative embodiments described herein provide a method for managing memory wherein prioritized pages are mapped to real memory having performance characteristics. Each page of memory is provided with a priority value. Partition management firmware maps pages of higher priorities to physical memory or higher performance paging storage. Partition management firmware maps pages of lower priorities to lower performing paging storage.

If an operating system determines that a page in memory will need to have a fast access time, partition management firmware can use a high value set in the page frame structure to indicate that the page should come from actual real memory. If the operating system determines that the page frame is of medium priority, partition management firmware can use this value to use disk-based memory but have the memory be mapped on the fast disks in the storage server. If the operating system determines that the page frame is of low priority, partition management firmware can use this value to use disk-based memory but have the memory be on slower disks in the storage server.

Thus, the illustrative embodiments provide a method for managing memory paging operations. Responsive to a request to page out a memory page from a shared memory pool, the method identifies whether a physical space within one of a number of paging space devices has been allocated for the memory page. If physical space within the paging space device has not been allocated for the memory page, a page priority indicator for the memory page is identified. The memory page is then allocated to one of a number of memory pools within one of the number of paging space devices. The memory page is allocated to one of the memory pools according to the page priority indicator of the memory page. The memory page is then written to the allocated memory pools.