Avanti requires the program code + base Alpha memory + Alpha shadow memory + JIT memory + asynch threads + IO buffers to run each Avanti instance. This allocation comes out of the physical memory of the host system. Physical memory in a physical host system is usually divided between the number of physical processors in the system. Cores are not allocated memory, they can access all of the memory assigned to the physical processor that they are on, and can access memory assigned to the other physical processors over a slightly slower internal bus. As long as the system has enough physical memory, there should be no problems in running Avanti. If there isn't enough physical memory, operations slow down as the system pages physical memory to virtual memory on disk.
Avanti utilizes host memory as follows:
•Configured Memory: One-for-one mapping of virtual Alpha memory to host memory. An Avanti system configured to use 1GB of memory will utilize up to 1GB of host memory.
•Shadow Memory: One-for-one mapping of shadow memory to host memory. Avanti pre-processes Alpha instructions, optimizing them to achieve better performance upon execution. These optimized instructions are referred to as shadow code. Shadow code is retained in host memory as long as the Alpha code remains in emulated memory.
Shadow memory matches the memory configured for an Avanti instance. An Avanti system configured with 1GB of memory will utilize up to 1GB of host memory for shadow memory.
•JIT Memory: Default maximum size is 2GB or ½ of physical memory, whichever is less. JIT memory utilization can be limited with the jit_memory advanced configuration option.
Avanti reserves JIT memory as follows: |
oReserve 2GB of virtual memory for the JIT buffer.
oCommit the first 4MB chunk.
oIf commit fails:
▪Unreserve the reserved 2GB.
▪Reserve and commit the entire 2GB buffer at once.
oIf that fails, error out
oThe emulator will quit and there will be an error in the log file stating that the JIT buffer could not be allocated.
Note:If running on a Windows host system equipped with more than 32GB of memory and the following error is encountered, set the jit_memory parameter to 2GB.
Unable to reserve JIT buffer area: error 87: The parameter is incorrect.
Optimum host memory on a Avanti virtual Alpha system configured with 1GB of virtual memory would break down as follows:
Memory |
Avanti |
Host |
Host O/S |
4GB |
|
Avanti Configuration |
1GB |
1GB |
Shadow Memory |
1GB |
1GB |
JIT |
2GB |
2GB |
Total |
8GB |
All the caveats of a Windows paging file apply. For most situations, and our testing supports this, a host system with 8GB of memory and a properly configured Windows paging file would be more than adequate to support a 1GB Avanti configuration. Only in situations where very high demand is put upon the Avanti virtual Alpha would maximizing physical memory be required