Forced RAM USE

whitequill

Distinguished
Nov 18, 2009
11
0
18,510
This is a Software/Hardware interface question. So please move it if I'm posting in the wrong place.

I want to force a program that is programed to run on the CPU because of memory constrants of the 32 bit processor; and force the program to run in RAM because my system is capable of handling 24GB of RAM. And I'd like to take full advantage of it for my work. Is there any software that can control low level memory allocation. That will trump a program's hard coded settings for memory use.
 
Solution
If you have a 64-bit program, OS and CPU, and you have all of those, then yes you can add extra memory to allow data to be entirely stored in physical RAM, instead of the OS having to use the swap file in the situation that you don't have enough physical RAM to hold all of your data. The storing of data in physical RAM rather than the swap file is handled automatically by the OS and so by adding more RAM the application will automatically take advantage of the additional RAM.

Other than that more RAM isn't going to speed up your render, other than by reducing the amount of RAM the OS is having to transfer back and forth from the swap file.

jprahman

Distinguished
May 17, 2010
775
0
19,060
Are you referring to a 32-bit program that you want to run with more than 4GB of RAM? If so that's pretty much impossible without resorting to stuff like PAE, which can cause crashes. Basically the 4GB limit is caused by the fact that 32-bit processors address RAM using 32-bit numbers and 32-bit software can only use 32-bits worth of address space even when running on 64-bit systems. This is a physical silicon/ instruction set limitation, no piece of software can change that.

And what do you mean by run the program in RAM. Programs are run by the CPU, which stores data in RAM during program execution. You don't run programs in RAM.
 

whitequill

Distinguished
Nov 18, 2009
11
0
18,510
So there isn't any way to get a process to roll into using physical memory that is, rendering a 3D image and using all the CPU. If I could get it to utilize my RAM I could render a ton faster!
 

jprahman

Distinguished
May 17, 2010
775
0
19,060
Basically if it is a 32-bit program, or is running on a 32-bit OS you are stuck with using 4GB of RAM at most. What program and OS are you using?

It may be possible to get a 64-bit version or the program and upgrade to a 64-bit operating system. If you could do both of those things then you would be able to use over 4GB of RAM. You mention rendering which would suggest a program like 3ds or AutoCad. Programs like those are the most likely candidates to have 64-bit versions available, and combined with a 64-bit OS that would allow for all 24GB of your RAM to be utilized by that one program.
 

whitequill

Distinguished
Nov 18, 2009
11
0
18,510


I'm using Windows 7 64, and Autodesk Maya 2011 64.
And when it renders it is set to use CPU. And there is nothing in the program to tell it render in RAM instead. Which is the whole reason for building a machine that can hold 24gigs of RAM. :(
 

jprahman

Distinguished
May 17, 2010
775
0
19,060
What do you mean it is set to use the CPU? I mean all programs run their code on the CPU. Are you talking about wanting Maya to store all of it's data in RAM as it is running? Maybe I'm not understanding what you're asking for?
 

whitequill

Distinguished
Nov 18, 2009
11
0
18,510
I was thinking it would be faster if it stored what it just rendered into RAM so as not to burden the CPU with the load of the whole render. Depending on how old your comp is, and even an i7-950 is totally bogged down by the render.
If it could use some extra memory to supplement the CPU's memory, for 64bit programs. Why not? They can address, 256 Terabytes, respectively. Though not realistically yet, in the mainstream market.

 

jprahman

Distinguished
May 17, 2010
775
0
19,060
If you have a 64-bit program, OS and CPU, and you have all of those, then yes you can add extra memory to allow data to be entirely stored in physical RAM, instead of the OS having to use the swap file in the situation that you don't have enough physical RAM to hold all of your data. The storing of data in physical RAM rather than the swap file is handled automatically by the OS and so by adding more RAM the application will automatically take advantage of the additional RAM.

Other than that more RAM isn't going to speed up your render, other than by reducing the amount of RAM the OS is having to transfer back and forth from the swap file.
 
Solution

whitequill

Distinguished
Nov 18, 2009
11
0
18,510
I'm very interested ( on a separate note ) about that kind of stuff. It's just hard to find info on the topic of OS to Hardware interaction.
So thank you for explaining that a little more.

Do you know where I could find more information on that so I feel more, "in the know" so to speak. I'm interested in open-source. But I don't know where to find the documentation.
 

jprahman

Distinguished
May 17, 2010
775
0
19,060


Here are a few link to pages that detail virtual memory and computer and OS architecture in general:
Virtual Memory,
Page Fault,
Virtual Address Space,
Memory Pages,
Address Space,
OS Kernel,
Memory Management

*These next two are very detailed
Computer and CPU architecture,
Memory guide for programmers, this one talks a little about Linux and memory, but is very long, very detailed, very involved, and is geared towards programmers.

If you are interested more specifically how Linux interacts with memory at the lowest level of the OS here's a link:
Linux Memory Management. Again, very long and involved, but with lots of information.

There is also the linux.die.net/man website which has pages describing the functions that programmers can use to manipulate memory at the application level with Linux.

I know that this is a lot of stuff, and I'm not sure all of it is of interest to you, but I just thought I would throw some links out for you to take a look at.

 

whitequill

Distinguished
Nov 18, 2009
11
0
18,510
Thank you very much, jprahman. I'll look over the matireal. I copied your post to a note on my phone.
I picked Linux cause it's open, and bound to have the most open documentation about it's inner workings.

I figure also, it's just another way to do the same thing everyone else is doing at that level. I mean hardware/software interaction I figure there is a limit to how different it can be.
All OSes have kernels, and HALs, and byte code. There is only so many ways to skin the same cat.