Friday, 21 November 2014

Revit Ramdrive

Revit 2015 offers a nice performance increase over Revit 2014. But ofcourse we always want more more and even more. I am working on a project where I can't switch to Revit 2015 just yet. So I started to wonder what else can I do to get more performance out of 2014.

The project I am working on has a lot of links. While working I noticed my C: drive filling up. So I was wondering did Revit start to cache a lot? I checked the memory and I still had quite some free memory left. Revit saves it's cache files in the following location %temp%. 

Let's take a look at what Revit 2014 writes to this location: 
Revit has just started up and no thing has been loaded yet. Notice that Revit creates some placeholder temporary files. These are small so this should not hurt performance 
Let's load a workshared project with a lot of links. I do not open all the worksets just those I need.
Notice the new and big temporary files it creates? The information in these files had to come from the network to the HD. Bottleneck #1

To have a better understanding of what Revit is doing with the cache files and the memory I keep an eye on this temp directory and the taskmanager's processes tab. Apparently there is a magic free some memory button in Revit that looks like this.
Because this is what I see happening a lot. Notice how Revit is now using 2889 mb of RAM
Press the worksets button:
Notice how Revit is now using 59 mb of RAM
Press the OK or cancel button:
Notice how Revit is now using 979 mb of RAM
So far this works every time for me. I wish I knew what Revit just ditched and if other parts of Revit will react slower because it needs to reread this data from the cache files.

So far we know now that Revit cache's it's links. This is read/write intensive for the hard drive but only at start up. So far I have the impression that it creates them only to read. I don't see any changes in the modification date after I loaded those worksets. Which makes sense because you can't edit the links.
I also noticed that Revit prefers it's cache files to be a certain size. 2048, 4096, 8196 16.384, 32.786, 65.536, 131.072, 262.144. 

So back to the initial question how do we get more performance out of Revit. I remembered a trick that has been around for years. What about creating a ramdrive? (ramdrive) What if I would put the temporary files upon a ram drive. I used a free ramdrive version from for testing purposes. I also changed one Windows variable? The user variable that sets the location of the temp files. I set that pointing to the new ramdrive.

After a bit of testing I did notice some performance increase but not what I was hoping for. This got me thinking. Before I used the ramdrive those files were placed on an SSD. So basically the change I made was loading those files from the SSD to the CPU and now from RAMdrive to CPU. But if I observe how Revit seems to work with these cache files then it seems to do the following. Create cache files when loading project. It also seems to create cache files for files linked revit files that are on a closed workset. This data often tends to come from the network so the bottle neck is still the network.

Should I continue exploring a RAMdrive solution? Probably not, because of the following. I know that SSD can transfer a lot of data to memory fast. I did a simple test. I transfered 3,5 gb of large files (about 300mb each) from the ssd to the RAMdrive. This transfer spiked to 700 mb/s to later go down to a steady 400 mb/s I also tested with a couple of thousand small files 50kb. This transfered at an average of 70 mb/s. When I test the ramdrive with Revit I only gain a little bit of performance. This leads me to conclude that there is yet another bottleneck and that is the processor. 

I made the following conclusions
If you don't have an SSD in your system but you do have enough memory you might consider a ramdrive solution.
An ssd drive is becoming very important when working on large revit files. Network speed is very important.
File link setup and worksets structure in those files are crucial for getting a good performance. 

I think that the order of addressing performance bottlenecks are:
  1. Network speed
  2. Harddrive
  3. CPU
  4. Memory
  5. Revit knowledge
Good Revit knowledge will let you avoid running into the other bottle necks for a while but at some point projects just become big.

Google+ Badge