The present invention is related to the field of computer systems and more specifically to a system and method for automatically optimizing available virtual memory.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Some information handling systems include operating system that are able to run applications that were originally designed for use with a different operating system. For instance, some information handling systems utilize a 64 bit operating system that may also run existing applications designed for use with a 32 bit operating system. For instance, the 64 bit windows operating system accommodates loading, execution and management of 32 bit applications via a subsystem referred to as Windows-32-on-Windows-64 (WOW64).
One advantage of running a 32 bit application on a WOW64 sub system is that the WOW64 sub system can increase the available virtual memory accessible by some 32 bit applications. In particular, it is known that 32 bit applications that are “Large Address Aware” can take advantage of additional virtual addressing capabilities that are made available by 64 bit operating systems. In particular, 32 bit applications that are Large Address Aware and run by a 64 bit operating system may have full use of four (4) GB of virtual address space as opposed to the typical two (2) GB of virtual address space available to 32 bit applications.
However, in order for a 32 bit application to take advantage of the increased virtual addressing capability on 64 bit operating system platforms, the application must be coded with a Large Address Aware switch or the user must set a Large Address Aware flag for each particular 32 bit application using image header modification tools. As a result, increasing virtual address space requires a significant amount of administrator time, effort and expertise. As a result, very often 32 bit applications do not utilize the increased virtual address space that may be available for 32 bit applications running in a 64 bit operating system environment.
Therefore a need has arisen for a system and method for automatically optimizing virtual memory available to 32 bit applications running in a 64 bit operating system environment.
In one aspect, an information handling system is disclosed including processor operable to support a 64 bit operating system. The information handling system also includes a memory resource in communication with the processor that is able to manage the memory resource as virtual memory for applications run by the processor. Information handling system also includes at least one 32 bit application that can be run by the processor and a wrapper able to automatically determine whether a selected 32 bit application is Large Address Aware. If the wrapper determines that the 32 bit application is not Large Address Aware, the wrapper modifies a Large Address Aware flag associated with the selected 32 bit application.
In another aspect, a method is disclosed that include providing a wrapper for use with an information handling system that is able to run a 64 bit operating system and having at least one 32 bit application that may be run by the 64 bit operating system. The method also includes automatically determining, with the wrapper, whether a selected 32 bit application is Large Address Aware. Additionally, in response to determining that the selected 32 bit application is not Large Address Aware, the method includes modifying a Large Address Aware flag associated with the selected 32 bit application.
In yet another aspect, a wrapper application for optimizing virtual memory available to a 32 bit application on an information handling system that has a 64 bit operating system is disclosed. The wrapper may automatically determined whether a selected 32 bit application is Large Address Aware and, in response to determining that the selected 32 bit application is not Large Address Aware, modify a Large Address Aware flag associated with the 32 bit application.
The present disclosure includes a number of important technical advantages. One technical advantage is providing a wrapper in a information handling system using a 64 bit operating system to determine whether or not a 32 bit application is Large Address Aware. This determination allows each 32 bit application run on a information handling system using a 64 bit operating system to be coded or flagged as Large Address Aware and provide full use of available virtual address space. Additional advantages will be apparent to those of skill in the art from the figures, description and claims provided herein.
A more complete and thorough understanding of the present embodiments and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings, in which like reference numbers indicate like features, and wherein:
Preferred embodiments of the invention and its advantages are best understood by reference to
For purposes of this disclosure, an information handling system may include any instrumentality or aggregate of instrumentalities operable to compute, classify, process, transmit, receive, retrieve, originate, switch, store, display, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence, or data for business, scientific, control, or other purposes. For example, an information handling system may be a personal computer, a network storage device, or any other suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include random access memory (RAM), one or more processing resources such as a central processing unit (CPU) or hardware or software control logic, ROM, and/or other types of nonvolatile memory. Additional components of the information handling system may include one or more disk drives, one or more network ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, and a video display. The information handling system may also include one or more buses operable to transmit communications between the various hardware components.
Now referring to
System 100 may operate by executing BIOS 114 for a system firmware (not expressly shown) in response to being powered up or reset. BIOS 114 identifies and initializes the components of system 100 and causes an operating system 122 to be booted. Operating system 122 may allow the user of system 100 to initiate and run one or more applications 124 on system 100. Applications 124 may be stored on hard drive 120 or may be stored on a remote storage resource communicatively coupled with system 100. System 100 may be networked with additional information handling system or components.
In the present embodiment hard drive 120 includes operating system 122, applications 124 and wrapper 126. Operating system 122 is preferable a 64 bit operating system that may also run one or more 32-bit applications. The 64 bit operating system 122 may be, for example, an Extended Memory 64 Technology (EM64T). In the particular embodiment, operating system 122 comprises a Windows-32-on-Windows-64 (WOW64) subsystem for executing 32 bit applications. Wrapper 26 may preferably include a set of executable instructions which may be executed by processor 110 to determine the Large Address Aware characteristics of one or more applications 124. In a preferred embodiment, wrapper 126 may be integrated into the factory image of system 100. Wrapper 126 may be applied to multiple applications 124. In an alternate embodiment, multiple wrappers 126 may be provide such that on or more wrappers may be dedicated to one or more particular applications.
Applications 124 includes at least one 32 bit application which may be run by operating system 122. In some embodiments, applications 124 may include a plurality of 32 bit applications which may be run by operating system 122. Applications 124 may also include 64 bit applications which may be run by operating system 122. A 32 bit windows application by itself will typically not be aware of the presence of WOW64 and does not know if it is running on a 32 bit OS, or in compatibility mode on a 64 bit OS utilizing a WOW64 or other similar environment.
Now referring to
Now referring to
Now referring to
If the operating system is a WOW64 system 316, then the image header information for the 32 bit executable application is read 320. Next, the method determines whether the selected application is Large Address Aware 322. If the application is Large Address Aware 326 then the method returns to step 312. However, if the selected 32 bit application is not Large Address Aware 324, the method proceeds to modifying the image header to set a Large Address Aware flag 328. The method then returns to step 312 and awaits the selection of an application by a user.
In the present preferred embodiment wrapper 126 queries will check image file Large Address Aware 554 to determine whether a Large Address Aware flag has been set for a selected application.
Now referring to
Now referring to
PE header is shown in an expanded form and includes machine 522, number of sections 524, time date stamp 526, pointer to symbol table 528, number of symbols 530, size of optional header 540 and characteristics 542 Additionally, characteristics section 542 is expanded to include the following image files:
IMAGE_FILE_LARGE_ADDRESS_AWARE 554 field (which may also be referred to as the Large Address Aware flag) corresponds to bit 6 of the characteristics section 542 under PE Header 516. As discussed above, wrapper 126 may preferably modify Large Address Aware flag 554 of a 32 bit application in response to determining that a 32 bit application is not large address aware. Such modification of the large address aware flag 554 improves performance of the 32-bit application by taking advantage of the additional virtual addressing capability.
Although the disclosed embodiments have been described in detail, it should be understood that various changes, substitutions and alterations can be made to the embodiments without departing from their spirit and scope.