Dynamic memory area configuration for building page frame table entries
The dynamic memory area configuration method addresses system initialization failures by reserving specialized memory for PFTEs and managing frame dependencies, enabling efficient memory reconfiguration and improving system availability.
Patent Information
- Application Number
- JP2025542169
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-03-10
- Filing Date
- 2024-03-01
- Publication Date
- 2026-02-27
AI Technical Summary
Existing systems face issues with system initialization failure due to depletion of memory frames needed to back page frame table entries (PFTEs) during initialization, limiting the use of storage increments and preventing efficient memory reconfiguration post-initialization.
A dynamic memory area configuration method that reserves a specialized memory unit with a reserved portion for PFTEs, uses a queue to track available frames, and allows for online/offline reconfiguration by managing dependencies between memory increments, ensuring frames can be freed and reused without system outage.
Enables efficient online/offline reconfiguration of memory areas post-initialization, preventing system failures and optimizing memory usage by allowing dynamic creation and management of PFTEs, thus enhancing system availability and flexibility.
Smart Images

Figure 2026506842000001_ABST
Abstract
Description
[Technical Field]
[0001] The field of the invention is data processing, and more particularly, methods, apparatus, and products for dynamic memory area configuration for building page frame table entries. [Background technology]
[0002] A computer operating system manages not only its main memory but also virtual memory. Virtual memory pages are allocated to applications and are backed (i.e., stored) by main memory frames when in use. However, a portion of main memory is used to back a range of virtual memory that tracks main memory. This range of virtual memory contains page frame table entries (PFTEs). During system initialization, frames are needed to back the PFTEs used to represent main memory. An example of such a frame is a 2 GB storage frame in the large frame area (LFAREA), which is part of main memory. The required frames are obtained from an area of main memory that is initialized to support other early initialization processes. When the LFAREA is identified as being large, this area for initial frames is depleted as the frames needed to back the PFTEs are taken. This causes system initialization to fail.
[0003] Some systems use a technique for backing PFTEs in the same address increment that contains the storage that the PFTE represents. This technique, referred to herein as zoning, is performed by using the first (i.e., lowest addressed) 4 KB frame in the address increment to back the first page of the PFTE that represents the backing frame itself, and then working upwards, adding additional PFTEs to represent each subsequent 4 KB frame. Summary of the Invention
[0004] Exemplary embodiments include a dynamic memory area configuration method, apparatus, and computer program product for building page frame table entries. One embodiment of a method for dynamic memory area configuration comprises designating a portion of memory as a specialized memory unit; and reserving a first portion of the specialized memory unit for a plurality of page frame table entries (PFTEs), the PFTEs representing a plurality of frames in the specialized memory unit. The method further comprises storing one or more of the PFTEs in respective queue entries in a queue in a reserved area of the specialized memory unit, a particular queue entry indicating that a particular PFTE associated with a particular frame is available for use. The method further comprises receiving an offline request to take a second portion of the specialized memory unit offline. The method further comprises determining whether the second portion of the specialized memory satisfies the offline request based on whether the second portion of the specialized memory has an associated queue entry in the queue indicating that the associated frame is not in use to back a portion of a page frame table (PFT) for the specialized memory unit.
[0005] One embodiment of an apparatus for dynamic memory area configuration comprises a computer processor; and computer memory operatively coupled to the computer processor, the computer memory having computer program instructions disposed therein that, when executed by the computer processor, cause the apparatus to: designate a portion of memory as a specialized memory unit; reserve a first portion of the specialized memory unit for a plurality of page frame table entries (PFTEs), the PFTEs representing a plurality of frames in the specialized memory unit; store one or more of the PFTEs in respective queue entries in a queue in a reserved area of the specialized memory unit, a particular queue entry indicating that a particular PFTE associated with a particular frame is available for use; receive an offline request to take a second portion of the specialized memory offline; and determine whether the second portion of the specialized memory unit satisfies the offline request based on whether the second portion of the specialized memory unit has an associated queue entry in the queue indicating that the associated frame is not in use to back a portion of a page frame table (PFT) for the specialized memory unit.
[0006] In one embodiment of a computer program product for dynamic memory area configuration, the computer program product is disposed on a computer-readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to: designate a portion of memory as a specialized memory unit; reserve a first portion of the specialized memory unit for a plurality of page frame table entries (PFTEs), the PFTEs representing a plurality of frames in the specialized memory unit; store one or more of the PFTEs in respective queue entries in a queue in a reserved area of the specialized memory unit, a particular queue entry indicating that a particular PFTE associated with a particular frame is available for use; receive an offline request to take a second portion of the specialized memory unit offline; and determine whether the second portion of the specialized memory has an associated queue entry in the queue indicating that the associated frame is not in use to back a portion of a page frame table (PFT) for the specialized memory unit.
[0007] The above and other objects, features, and advantages of the invention will be apparent from the following more particular description of exemplary embodiments of the invention, as illustrated in the accompanying drawings, in which like reference characters generally represent like parts of the exemplary embodiments of the invention. [Brief explanation of the drawings]
[0008] [Figure 1] FIG. 1 illustrates a block diagram of an exemplary computing system configured for dynamic memory area configuration for building page frame table entries in accordance with some embodiments of the present invention.
[0009] [Figure 2] 1 illustrates an exemplary configuration of a PFT space according to some embodiments of the present invention.
[0010] [Figure 3]3 illustrates an example of inter-increment dependency for the PFT space of FIG. 2 according to some embodiments of the present invention.
[0011] [Figure 4] 1 is a flowchart of an exemplary method for creating a specialized memory Reserved PFTE Area (RPA) queue in accordance with some embodiments of the present invention.
[0012] [Figure 5] 1 is a flowchart of an exemplary method of storage configuration offline processing performed by a configuration component according to some embodiments of the present invention.
[0013] [Figure 6] 1 is a flowchart of an exemplary method of storage configuration offline processing performed by a real storage manager (RSM) component according to some embodiments of the present invention.
[0014] [Figure 7] 10 is a flowchart of an exemplary method of storage configuration interception processing performed by an RSM component according to some embodiments of the present invention.
[0015] [Figure 8] 10 is a flowchart of an exemplary method of storage configuration online processing performed by a configuration component and an RSM component according to some embodiments of the present invention.
[0016] [Figure 9] 1 is a flowchart of an exemplary method for dynamic memory area configuration in accordance with some embodiments of the present invention. DETAILED DESCRIPTION OF THE INVENTION
[0017] Various embodiments of the present invention provide dynamic memory area configuration for building page frame table entries. A page frame table entry (PFTE) is used to describe the attributes of a particular real frame. Such attributes may include the address space, including the virtual address it backs as well as the virtual memory it backs. A reserved PFTE area (RPA) is used to back an area of a PFTE. Specialized memory refers to a unit of real storage that can be configured offline / online and does not require other memory to represent it. Multiple specialized memory units may exist, each with a different purpose. Non-specialized memory refers to the remainder of real storage. In some computer architectures, memory can be configured offline on one logical partition (LPAR) and online on another LPAR within a system complex. The significance of this feature is system availability, i.e., memory can be moved from one LPAR to another without requiring a target system outage. The smallest unit of reconfigurable memory is referred to herein as a storage increment. In one example, the increments are 4K real frames in a hardware-defined power-of-two range. The operating system configures memory offline on one LPAR and online on another by providing a system command. The command may indicate either the amount of memory to be taken offline or a specific range of real memory encompassing one or more storage increments. At a lower level, the actual management of real memory is performed on PFTEs. In one example, there is one such PFTE per 4K unit of memory, and the entire table is collectively referred to as the Page Frame Table (PFT).
[0018] Creating a PFT requires the use of a bootstrap process that modifies memory that has not yet been initialized to represent itself. One way to do this is to use memory from a storage increment to back a PFTE that represents memory from the same increment. This method is beneficial for two reasons: (1) starting memory does not require any other memory to be already initialized; and (2) when an increment is configured offline, the memory representing the PFT area associated with the increment can be freed and taken offline.
[0019] However, this approach has a significant disadvantage in that it limits how storage increments can be used. For example, if a storage increment is 2G in size and some frames in the increment are used to back PFT space for the increment, there cannot be a 2G frame formed from the increment. A solution to this problem is described in U.S. Pat. No. 9,658,792 B2, which is incorporated herein by reference. U.S. Pat. No. 9,658,792 B2 describes a procedure for reserving storage area and constructing a PFTE, where an RPA is created at the top of main storage to represent a PFT for other storage. The aforementioned problem is solved by specifying a single increment or multiple increments as the source of frames and backing the PFTE space for other increments. Thus, the ability to create 2G frames in other increments is preserved. The procedure described in U.S. Pat. No. 9,658,792 B2 is static, which means that it does not address online or offline reconfiguration of memory after the system is initialized. Also, the RPA area in the PFT space described in US Pat. No. 9,658,792 B2 does not provide for offline configuration.
[0020] Various embodiments described herein extend the principles described in U.S. Pat. No. 9,658,792 B2 to enable dynamic creation of memory areas as additional memory is configured online. When all of the memory represented by an RPA is configured offline, the storage increment containing the RPA becomes eligible for offline configuration, assuming none of the other memory in the increment is in use by a job. When an operator attempts to configure several increments of memory offline, including memory containing an RPA, the operating system may potentially attempt to make the increment containing the RPA eligible for offline configuration by first configuring an increment that does not contain the RPA. If the RPA cannot be taken offline, the entire reconfiguration request is canceled. If the operator identifies a specific amount of memory to be configured offline, the system may automatically locate memory increments eligible for immediate offline configuration, thereby subsequently freeing any RPA frames used to back the PFT space representing such increments. If additional memory needs to be configured offline to fulfill the request, the increment containing the freed RPA frames may then become reconfigurable.
[0021] An exemplary apparatus and system for dynamic memory area configuration for building page frame table entries according to the present invention will now be described with reference to the accompanying drawings, beginning with Figure 1. Figure 1 illustrates a block diagram of an automated computer system including an exemplary computing system 100 configured for dynamic memory area configuration for building page frame table entries according to an embodiment of the present invention. Computing system 100 of Figure 1 includes at least one computer processor 110 or "CPU," as well as random access memory (RAM) 120 connected to processor 110 and other components of computing system 100 through a high-speed memory bus 113 and a bus adapter 112.
[0022] Stored in RAM 120 is operating system 122. Operating systems useful in computers configured to perform dynamic memory area configuration for building page frame table entries according to embodiments of the present invention include UNIX, Linux, Microsoft Windows, AIX, and others that would be understood by one of ordinary skill in the art. While operating system 122 in the example of FIG. 1 is shown in RAM 120, many components of such software are typically also stored in non-volatile memory, such as on data storage 132, e.g., a disk drive. Also stored in RAM are configuration component 150 and real storage manager (RSM) component 152, configured to perform dynamic memory area configuration for building page frame table entries according to embodiments of the present invention. Configuration component 150 is configured to process storage online or offline requests and identify which storage increments are eligible / associated with the request. Once identified, the configuration component is configured to take the real storage offline by calling RSM component 152, which is configured to track the contents of the real storage. The RSM component 152 takes the storage increments provided by the configuration component 152 and marks the PFTEs associated with the storage increments as either online or offline. When a page of a PFTE is marked online, the page of the PFTE is backed by an RPA PFTE in the RPA queue. The RPA PFTEs are used to back PFTEs that represent increments of specialized memory as they are brought online in response to a configuration request.
[0023] 1 includes a disk drive adapter 130 coupled to processor 110 and other components of computing system 100 through expansion bus 117 and bus adapter 112. Disk drive adapter 130 connects non-volatile data storage to computing system 100 in the form of data storage 132. Disk drive adapters useful in computers configured for inserting sequence numbers into editable tables according to embodiments of the present invention include Integrated Drive Electronics (IDE) adapters, Small Computer System Interface (SCSI) adapters, and others as would be understood by one skilled in the art. Non-volatile computer memory can also be implemented as optical disk drives, electrically erasable programmable read-only memory (EEPROM or flash memory), RAM drives, etc., as would be understood by one skilled in the art.
[0024] The exemplary computing system 100 of Figure 1 includes one or more input / output (I / O) adapters 116. I / O adapters implement user-oriented input / output, for example, through software drivers and computer hardware, to control user input from user input devices 118, such as a keyboard and mouse, as well as output to display devices, such as a computer display screen. The exemplary computing system 100 of Figure 1 also includes a video adapter 134, which is an example of an I / O adapter designed specifically for graphics output to a display device 136, such as a display screen or computer monitor. Video adapter 134 is connected to processor 110 through a high-speed video bus 115, a bus adapter 112, and a front-side bus 111, which is also a high-speed bus.
[0025] The exemplary computing system 100 of FIG. 1 includes a communications adapter 114 for data communications with other computers and with a data communications network. Such data communications may be performed continuously through an RS-232 connection, through an external bus such as a Universal Serial Bus (USB), through a data communications network such as an IP data communications network, and by other means understood by those skilled in the art. The communications adapter implements the hardware level of data communications, whereby one computer sends data communications to another computer directly or through a data communications network. Examples of communications adapters useful in a computer configured to insert sequence numbers into an editable table according to embodiments of the present invention include a modem for wired dial-up communications, an Ethernet (IEEE 802.3) adapter for wired data communications, and an 802.11 adapter for wireless data communications. The communications adapter 114 of FIG. 1 is communicatively coupled to a wide area network 140, which may also include other computing devices, such as computing devices 141 and 142, as shown in FIG. 1.
[0026] U.S. Patent No. 9,658,792 B2 describes defining a 2G contiguous area of frames used to back the PFT space. The PFTEs associated with such frames are not queued, but rather are managed by an associated control structure that tracks the next available frame. The procedure described in U.S. Patent No. 9,658,792 B2 works well when memory is not subject to reconfiguration requests. When more memory is initialized, additional memory RPAs can be specified to create additional pools of frames to back the PFT space. As soon as memory reconfiguration is implemented, some of the memory backing the RPAs is freed. However, the methodology described in U.S. Patent No. 9,658,792 B2 does not take this storage tracking into account.
[0027] Various embodiments described herein provide for the introduction of a queue of available RPA PFTEs. RPA control structures for the RPA 2G area keep track of RPA memory. When a specialized RPA area is created, the resulting PFTEs representing available frames are added to a specialized RPA PFTE queue to indicate that the frames are available. Additionally, when a PFTE from the RPA is used, field PFTVSA64 tracks dependencies between frames in PFT space by providing the address in PFT space backing the corresponding 4K frame.
[0028] When memory is brought online during system initialization or via a system command (e.g., the MVS CONFIG system command), the system determines whether there are any PFTEs available on the RPA frame queue. If so, the corresponding frames are used to back PFT space as needed. At this time, field PFTVSA64 is provided with the address in the PFT space that the frame backs. In addition, when a DAT table is needed to virtually map PFT space, a frame from an available RPA frame queue can be used. In this case, PFTVSA64 is provided with the first address of the segment mapped by the page table. When the available RPA frame queue is low, the system designates an area within the current storage increment being initialized to be used as the RPA, and posts frames from the increment currently being initialized to the RPA PFTE queue.
[0029] Memory can only be configured offline when it is not in use, which means that the memory is (1) not allocated to a job and (2) not in use to back PFT space other than its own increment. Regarding (2), this means that a memory increment cannot be taken offline (other than itself) until all increments it backs in PFT space are taken offline. For example, assume that some frames from increment 1 are in use to back the PFT space associated with increment 2. If an operator were to attempt to configure increment 1 offline by itself, the request would necessarily fail because increment 2 depends on frames from increment 1. Increment 2 must be taken offline before increment 1 can be taken offline. More generally, if there are other increments whose PFT ranges are backed by frames from increment 1, all such increments must be configured offline to free up frames for increment 1 and allow it to be taken offline. This results in a partial ordering of increments based on which increment's frames back the PFT space of other increments. Because storage increments are brought online in a specific order, such dependencies cannot be cyclic. In other words, if increment 1 comes online before increment 2 (either at initialization or through reconfiguration), then the PFT space for increment 2 can be backed by frames from increment 1, but not vice versa.
[0030] FIG. 2 illustrates an exemplary configuration 200 of a PFT space 204 according to some embodiments of the present invention. The exemplary layout of the PFT space 204 shows real addresses 202 of frames corresponding to PFTEs and PFT virtual addresses 206 corresponding to the real addresses. Assuming an increment size of 2G, the size of each PFTE is 40x bytes, and the real address of a frame is (PFTE address) / 40x*1000x. The PFTE at address 2040000x backs the page of the PFTE associated with the next higher increment. The PFTE at address 6000000x is backed by the frame associated with the PFTE at 20400000x. The PFTE at 6000000x is backed by the frame associated with the PFTE at 20400040x. Assuming each PFTE represents a 4K real frame, storage increments starting with 1_00000000x must be configured offline before increments starting with 80000000x. A similar dependency exists for increments starting with 1_80000000x.
[0031] 3 illustrates an example of inter-increment dependencies 300 for the PFT space 204 of FIG. 2 in accordance with some embodiments of the present invention. FIG. 3 illustrates storage increments of a directed acyclic graph with respect to reconfiguration dependencies. The PFT spaces for increments starting at real addresses 1_00000000x and 1_80000000x depend on frames from the increment starting at 80000000x due to their virtual mapping. The increment starting at real address 80000000x cannot be configured offline until the increments that depend on it are configured offline.
[0032] Referring again to FIG. 1, in systems such as multiple virtual storage (MVS), specialized memory reconfiguration typically occurs via a CONFIG system command. Memory can be taken offline if it is not in use (e.g., not allocated to a job). If the memory is allocated to a job, the command provides the operator with the option of either waiting for the memory to be returned to the system, canceling the job occupying the memory, or canceling the reconfiguration request. The operator also has the option of specifying either a contiguous range of increments or a fixed amount of storage equal to some integer multiple of the increment. There are different strategies for dealing with each case. For range-based configuration according to one embodiment, the system determines whether memory not part of the request depends on memory that is part of the request. In other words, the system determines whether there is an increment that is part of the request whose frame is backing PFT space for an increment that is not part of the request. In this case, the request fails.
[0033] For volume-based configuration according to one embodiment, the reconfiguration processor selects increments to configure offline based on the following criteria: (1) The increment memory does not back PFT spaces associated with different increments. (2) The increment memory is not in use by a job.
[0034] After first processing the increments that meet both criteria, it is possible that some increments that did not previously meet criterion (1) now meet the criteria. Therefore, after an increment is logically taken offline, the process reviews the status of all increments. If no increments meet both criteria, an increment that meets criterion (1) is selected, and the operator must either cancel the reconfiguration request or cancel the job that is preventing its completion.
[0035] 4 is a flowchart of an exemplary method 400 for creating a specialized memory RPA queue according to some embodiments of the present invention. The specialized memory RPA queue stores PFTEs, which represent available frames. In the method 400 of FIG. 4, the computer system 100 designates some real storage as a specialized unit by performing memory initialization 402 at system initial program load (IPL). The computer system 100 checks 404 whether a specialized memory unit is defined.
[0036] If a specialized memory unit is defined, the computer system 100 reserves 406 a specified amount of total real storage as specialized memory. The computer system 100 further reserves 408 a portion of the specialized memory as specialized memory RPA PFTEs, which include an RPA queue. The computer system 100 then adds 410 the specialized memory RPA PFTEs to an RPA queue that makes them available when bringing storage increments online. The computer system 100 then prepares 412 a specialized memory area by designating the remaining portion of the specialized memory as specialized memory to be used only for the intended use for which the specialized memory is available. The computer system 100 then prepares 414 a non-specialized memory area by designating the remaining portion of the real storage as non-specialized memory to be used for all uses. The computer system 100 then completes 416 the memory initialization process.
[0037] If no special memory is defined, the computer system 100 proceeds to prepare 414 a non-special memory area by designating the remainder of the real storage as non-special memory for all uses, and completes 416 the memory initialization process.
[0038] 5-8 include flowcharts illustrating various interactions between the configuration component 150 and the RSM component 152 according to some embodiments of the present invention. The configuration component 150 is configured to process storage online and offline requests and identify which storage increments are eligible / associated with the request. Once identified, the configuration component 150 takes the real storage offline by calling the RSM component 152. The RSM component 152 is configured to track the contents of the real storage. The RSM component 152 takes the storage increments provided by the configuration component 150 and marks the PFTEs associated with the storage increments as online or offline. When pages of a PFTE are marked online / offline, these pages of the PFTE are backed / unbacked by the RPA PFTE.
[0039] FIG. 5 is a flowchart of an exemplary method 500 of storage configuration offline processing performed by configuration component 150 according to some embodiments of the present invention. In method 500 of FIG. 5, an offline request is initiated 502 by a system command, such as a CONFIG STOR OFFLINE system command. The request may be for a storage range or a storage quantity. Configuration component 150 receives the request and determines 504 whether the request is for a quantity or a range. If the request is for a range, the configuration component controls to process the OFFLINE request for a range and notifies RSM component 152 to take offline the storage increments associated with the requested range. Before configuration component 150 invokes 506 RSM component 152 for RSM offline processing 510 for each increment associated with the range, as further described with respect to FIG. 6, configuration component 150 checks 507 whether any increments associated with the request cannot be taken offline due to RPA PFTE dependencies. If yes, the request fails with a request failure 526. If no, the method 500 proceeds to RSM offline processing 510 .
[0040] If the request is in units of quantity, the configuration component 150 controls to process the offline request in units of quantity. The configuration component 150 fulfills the request amount by informing 508 the RSM component 152 of sufficiently eligible online increments for RSM offline processing 510, as further described with respect to FIG. 6 . The configuration component 150 initially selects storage increments that do not contain RPA PFTEs for the RSM component 152 to take offline because taking these increments offline is more likely to be successful. Additionally, if the request amount is such that increments with RPA PFTEs are needed to fulfill the request, the likelihood of successfully taking them offline is higher when most of the increments backed by these RPA PFTEs are already offline.
[0041] Upon return from RSM offline processing 510, configuration component 150 remembers 512 whether the RSM component indicated that the increment could not be taken offline. Configuration component 150 checks 514 whether there are more increments to process. If there are more increments to process, configuration component 150 invokes RSM offline processing 510 again for the other increments associated with the request. If there are no more increments to process, configuration component 150 determines 516 whether the offline request was successful. If the request was successful, configuration component 150 indicates request successful 518. In certain embodiments, configuration component 150 determines that the request was successful by receiving an indication from RSM component 152 that the increment was taken offline.
[0042] If the request was not successful, configuration component 150 issues a message 520 to the user indicating that the request is waiting because some storage in the offline request is still in use. The message allows the user to wait for the job using the storage to finish or to cancel the offline request if the user cannot wait for the job to finish. In certain embodiments, configuration component 150 determines that the request was not successful by receiving an indication from RSM component 152 that at least one increment was not taken offline.
[0043] The configuration component 150 determines 522 whether the user canceled the request. If the user did not cancel the request, the configuration component 150 waits 524 for the RSM intercept process, as further described with respect to Figure 7. The RSM intercept process controls when storage is returned to the system (e.g., when all of the in-use storage associated with the offline request is released). The RSM intercept process takes the increment offline, allowing the configuration component 150 to delete the prompting message and complete the offline request.
[0044] If the user cancels the offline request, the configuration component 150 cancels the request, which may necessarily bring the previously offlined storage increments back online. In certain embodiments, the configuration component 150 brings back online the increments that had RPA PFTEs first. Note that the online process requires the use of RPA PFTEs. To avoid a circular condition where increment A contains an RPA PFTE that backs increment B, or vice versa, increments that had RPA PFTEs are brought back online before increments that did not have RPA PFTEs. This process prevents circular dependencies between increments. The process ends, indicating 526 that the offline request was successful.
[0045] 6 is a flowchart of an exemplary method 600 of storage configuration offline processing performed by the RSM component 152 according to some embodiments of the present invention. In the method 600 of FIG. 6, the RSM offline processing 602 is invoked by the configuration component 150 for each increment to be taken offline. The RSM component 152 determines 604 whether a storage increment can be taken offline by querying the PFTEs that make up the increment to determine whether the increment is eligible to be taken offline. The RSM component 152 determines 606 whether the increment is ineligible to be taken offline if there are any in-use RPA PFTEs within the increment by checking whether the increment contains any in-use RPA PFTEs.
[0046] If the increment contains in-use RPA PFTEs, the RSM component 152 indicates 608 to the configuration component 150 that the increment could not be taken offline before completing the RSM offline process 630, at which point processing returns to the configuration component 150. If the increment does not have any in-use RPA PFTEs, the RSM component 152 determines 610 whether the increment has any in-use specialized memory storage.
[0047] If the increment has any special storage in use, the RSM component 152 marks 612 all in-use storage as "intercept offline." When the job or job step ends, the RSM free frame process calls the RSM intercept process to intercept the frames, taking them offline and not returning them to the system so they can be reallocated. After marking all in-use storage, the RSM component 152 indicates 608 to the configuration process that the increment could not be taken offline before the RSM offline process 630 ends, returning processing to the configuration component 152.
[0048] If all of the PFTEs in the increment are not in use, they are taken offline 614, and any RPA PFTEs in the increment are returned to the RPA queue. After taking the increment offline, RSM component 152 indicates to configuration component 150 that the increment has been taken offline 616. After taking the increment offline and before returning, RSM component 152 iterates 618 through all previously processed increments that were not taken offline, because successful offline configuration of an increment may make another increment eligible to be taken offline. For example, assume that increment C, which was backed by an RPA PFTE in increment A, is taken offline. As a result, increment A no longer has any in-use RPA PFTEs, and in return, increment A becomes eligible to be taken offline.
[0049] During the iteration, for each online increment, the RSM component 152 determines 620 whether the increment contains in-use RPA PFTEs or in-use storage. If the increment contains either in-use RPA PFTEs or in-use storage, it becomes ineligible to be taken offline, and the RSM component 152 determines 624 whether there are any more increments. If the increment does not contain either in-use RPA PFTEs or in-use storage, the RSM component 152 takes 622 the increment offline and returns any RPA PFTEs in the increment to the RPA queue. The RSM component 152 determines 624 whether there are any more increments. If there are more increments, the method 600 returns to determining 620 whether the next increment in this iteration contains in-use RPA PFTEs or in-use storage. If there are no more increments, the RSM component 152 determines 626 whether at least one increment has been taken offline during the iteration and whether there are any more offline increments remaining. If at least one increment has been taken offline during this iteration, progress has been made by re-examining all increments, so that some more offline increments were successful, and the RSM component 152 returns to iterating 618 for all previously processed increments that were not taken offline. If there has been no progress or there are no more online increments, the RSM offline process 630 ends and processing returns to the configuration component 150.
[0050] 7 is a flowchart of an exemplary method 700 of storage configuration interception processing performed by the RSM component 152 according to some embodiments of the present invention. In the method 700 of FIG. 7, the RSM offline processing marks any in-use PFTEs for offline interception. When the storage associated with these PFTEs is released / returned to the system, the RSM free frame processing is initiated 702.
[0051] The RSM component 152 attempts to return 704 any free frames to its appropriate queue. Before returning the frame, the RSM component 152 checks 706 if the PFTE is marked for offline interception. If so, the frame should be taken offline rather than returned. If the PFTE is marked for offline interception, the RSM interception process 708 begins. If the PFTE is not marked for offline interception, the RSM component 152 returns 707 the frame to its appropriate queue and the RSM free frame process ends 710.
[0052] The RSM intercept process 708 assumes control from the RSM idle frame process when a PFTE is marked for offline intercept. The RSM component 152 determines 710 whether the intercepted PFTE is associated with an offline request. If the frame is associated with an offline request, the RSM intercept frame is taken offline 712. If the frame is not associated with an offline request, the RSM intercept process ends 716.
[0053] The RSM component 152 determines 714 whether there are any more PFTEs marked for offline interception. In particular embodiments, when the RSM offline processing marks a PFTE as offline interception, it maintains a count of offline interception PFTEs. If there are any more frames marked for offline interception, the RSM interception processing ends 716. If there are no more frames marked for offline interception, the RSM component 152 has taken the last offline interception PFTE offline. After taking the last offline interception PFTE offline, before returning, the RSM component 152 iterates through all of the increments associated with the offline request. This is done because successful interception of all offline interception PFTEs results in all increments being eligible to be taken offline.
[0054] During the iterative process, for each online increment, the RSM component 152 checks 720 whether the increment contains any in-use RPA PFTEs. If the increment does not contain any in-use RPA PFTEs, the RSM component 152 takes the increment offline 722 because all PFTEs in the increment are unused. As they are taken offline, the RPA PFTEs backing the PFTEs are returned to the RPA queue.
[0055] If the increment contains in-use PFTEs or after taking the increment offline 722, the RSM component checks 724 whether there are any more online increments associated with this iteration to process. If there are any more online increments associated with this iteration to process, the RSM component 152 returns to iterating through all online increments associated with the offline request 718. If there are no more online increments to process, the RSM component 152 checks whether progress has been made by examining all previously failed increments and determining 726 whether at least one increment has been taken offline during this iteration. If progress has been made, re-examining all increments may result in some more offline increments succeeding. If there are still some increments, the RSM component 152 returns to iterating through all online increments associated with the offline request 718. If there are no more online increments, the RSM component 152 ends the RSM intercept process 716.
[0056] 8 is a flowchart of an exemplary method 800 of storage configuration online processing performed by configuration component 150 and RSM component 152 according to some embodiments of the present invention. In method 800 of FIG. 8, an online request is initiated 802 by a system command, such as a CONFIG STOR ONLINE system command. Configuration component 150 determines 804 which storage increments are associated with the request and performs RSM online processing 806 for each storage increment to be brought online by calling RSM component 152.
[0057] Upon return from RSM online processing 806, configuration processing moves to the next increment associated with the request, if any. Configuration component 150 determines 808 whether there are more increments to process. If there are more increments to process, configuration component 150 invokes RSM online processing 806. If there are no more increments to process, the online request ends 810.
[0058] Configuration component 150 begins 812 RSM online processing by calling RSM component 152 for each increment to be brought online. RSM component 152 iterates 814 for each 2G worth of PFTEs in the increment. RSM component 152 checks 816 whether there are enough RPA PFTEs currently in the RPA queue to back these 2G worth of PFTEs. If there are enough RPA PFTEs currently in the RPA queue, RSM component 152 defines 818 these 2G worth of PFTEs as special memory storage that uses RPA PFTEs from the RPA queue to back these 2G worth of PFTEs. RSM component 152 then moves on to processing 822 the next 2G worth of PFTEs in this increment.
[0059] If there are not enough RPA PFTEs currently in the RPA queue, the RSM component 152 defines 820 these 2G worth of PFTEs as RPA PFTEs and replenishes the RPA queue with the newly defined RPA PFTEs. The RPA PFTEs are then used to back these 2G worth of PFTEs. The RSM component 152 then moves on to processing 822 the next 2G worth of PFTEs in this increment. The RSM component 152 checks 824 whether the last 2G worth of PFTEs in this increment have been processed. If the last 2G worth of PFTEs in this increment have not been processed, the RSM component 152 returns to checking 816 whether there are enough RPA PFTEs currently in the RPA queue to back these 2G worth of PFTEs. If the last 2G worth of PFTEs in this increment have been processed, the RSM component 152 terminates 826 RSM online processing.
[0060] 9 is a flowchart of an exemplary method 900 for dynamic memory area configuration according to some embodiments of the present invention. Method 900 includes designating 902 a portion of memory as a specialized memory unit. Method 900 includes reserving 904 a first portion of the specialized memory unit for a plurality of page frame table entries (PFTEs). The PFTEs represent a plurality of frames in the specialized memory unit. Method 900 further includes storing 906 one or more of the PFTEs in respective queue entries in a queue in the reserved area of the specialized memory unit. A particular queue entry indicates that a particular PFTE associated with a particular frame is available for use.
[0061] The method 900 further comprises receiving 908 an offline request to take a second portion of the specialized memory units offline. In some embodiments, the second portion includes a contiguous range of specialized memory units used to represent both itself and the first portion. In some embodiments, the second portion includes a quantity of specialized memory units.
[0062] The method 900 further includes determining 910 whether to satisfy the offline request based on whether the second portion of the specialized memory unit has an associated queue entry in a queue indicating that the associated frame is not in use to back a portion of a page frame table (PFT) for the specialized memory unit.
[0063] In some embodiments, the method 900 further comprises satisfying the offline request in response to the second portion of the specialized memory unit not having an associated queue entry in the queue. In some embodiments, the method 900 further comprises storing a queue entry associated with the second portion in the queue.
[0064] In some embodiments, the method 900 further comprises denying the offline request in response to the second portion of the specialized memory unit having an associated queue entry in the queue. In some embodiments, the method 900 further comprises prompting a user to cancel the offline request in response to denying the offline request. In some embodiments, determining whether to satisfy the offline request is further based on whether the second portion includes an in-use PFTE.
[0065] In light of the above discussion, the reader will recognize that the benefits of dynamic memory area configuration for building page frame table entries in accordance with embodiments of the present invention include online or offline dynamic reconfiguration of PFT space after system initialization.
[0066] The exemplary embodiments of the present invention are broadly described in the context of a computer system having full functionality for dynamic memory area configuration for building page frame table entries. The skilled reader will recognize, however, that the present invention may be embodied in a computer program product disposed on a computer-readable storage medium for use with any suitable data processing system. Such a computer-readable storage medium may be any storage medium for machine-readable information, including magnetic, optical, or other suitable media. Examples of such media include magnetic disks in hard drives or diskettes, compact disks for optical drives, magnetic tape, and others recognized by those skilled in the art. Those skilled in the art will readily recognize that any computer system with suitable programming means is capable of executing the steps of the inventive method embodied in a computer program product. Those skilled in the art will also recognize that, while some of the exemplary embodiments described herein are directed to software installed and executed on computer hardware, alternative embodiments implemented as firmware or hardware are also within the scope of the present invention.
[0067] The present invention may be a system, a method, and / or a computer program product, which may include a computer-readable storage medium (or media) having computer-readable program instructions stored thereon for causing a processor to implement aspects of the present invention.
[0068] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves in which instructions are recorded, and any suitable combination of the foregoing. Computer-readable storage medium, as used herein, should not be construed as a transitory signal per se, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electrical signal transmitted over an electrical wire.
[0069] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface of each computing / processing device receives the computer-readable program instructions from the network and transmits the computer-readable program instructions for storage on a computer-readable storage medium within the respective computing / processing device.
[0070] The computer-readable program instructions for carrying out the operations of the present invention may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk®, C++, or the like, or conventional procedural programming languages such as the “C” programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions to personalize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the present invention.
[0071] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0072] These computer-readable program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium that can instruct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner. A computer-readable storage medium having instructions stored thereon thereby comprises an item of manufacture that includes instructions that implement aspects of the functions / acts specified in a block or blocks of the flowcharts and / or block diagrams.
[0073] Furthermore, the computer-readable program instructions may be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be executed on the computer, other programmable apparatus, or other device to create a computer-implemented process, such that the instructions executed on the computer, other programmable data processing apparatus, or other device implement the function / acts identified in a block or blocks of the flowcharts and / or block diagrams.
[0074] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions, that implement the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may possibly be executed in the reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or operations or executes a combination of dedicated hardware and computer instructions.
[0075] It will be understood from the foregoing description that modifications and variations are possible in various embodiments of the present invention. The description herein is merely illustrative and is not to be construed as limiting. The scope of the present invention is limited only by the language of the following claims.
Claims
1. designating a portion of the memory as a specialized memory unit; reserving a first portion of the specialized memory unit for a plurality of page frame table entries (PFTEs), the PFTEs representing a plurality of frames in the specialized memory unit; storing one or more of the PFTEs in respective queue entries within a queue in a reserved area of the specialized memory unit, a particular queue entry indicating that a particular PFTE associated with a particular frame is available; receiving an offline request to take a second portion of the specialized memory unit offline; and 10. A method for dynamic memory area configuration, comprising determining whether the second portion of the specialized memory unit satisfies the offline request based on whether the second portion of the specialized memory unit has an associated queue entry in the queue indicating that the associated frame is not in use to back a portion of a page frame table (PFT) for the specialized memory unit.
2. 2. The method of claim 1, further comprising satisfying the offline request in response to the second portion of the specialized memory unit not having an associated queue entry in the queue.
3. The method of claim 2 , further comprising storing a queue entry associated with the second portion in the queue.
4. 2. The method of claim 1, further comprising the step of denying the offline request in response to the second portion of the specialized memory unit having an associated queue entry in the queue.
5. The method of claim 4 , further comprising prompting a user to cancel the offline request in response to the denial of the offline request.
6. 2. The method of claim 1, wherein the second portion comprises a contiguous range of the specialized memory units used to represent both itself and the first portion.
7. 2. The method of claim 1, wherein the second portion comprises an amount of the specialized memory unit.
8. The method of claim 1 , wherein determining whether to satisfy the offline request is further based on whether the second portion includes an in-use PFTE.
9. 1. An apparatus for dynamic memory area configuration, said apparatus comprising: a computer processor; and 9. An apparatus for dynamic memory area configuration, comprising a computer memory operatively coupled to said computer processor, said computer memory having computer program instructions disposed therein that when executed by said computer processor causes said apparatus to perform a method according to any one of claims 1 to 8.
10. 9. A computer program product for dynamic memory area configuration, said computer program product being located on a computer readable medium, said computer program product comprising computer program instructions that, when executed, cause a computer to perform the method of any of claims 1 to 8.