Optimal Memory Configuration For Vault (Vault memory usage)

Autodesk Support

Jun 28, 2024


Products and versions covered


Issue:

For optimal performance, how much memory should be installed on a Vault Server (how much memory would Vault consume)?

Solution:

The amount of memory will vary from environment to environment and depend on each business and usage.


Imagine there is a spectrum. Where one end of the spectrum is the amount of memory defined in the Vault System Requirements, The other end of the spectrum, is the optimal amount of memory when no restrictions (such as financial) play a part. The numbers defined in the Vault System Requirements are the bare minimum to get Vault up and running for a single user, occasionally checking files in and out. This is the minimum amount of memory. The amount of memory that Vault Server might need if all users access all the information that the Vault database contain is the maximum. (Or more accurately, the optimum, as adding more would be costly with no possible benefit.)
 

How much physical memory needs to be installed to guarantee that SQL runs optimally?

Background:
When the AUTODESKVAULT SQL Service starts, it begins accessing information in the database that is located on the hard disk. To process the information, it must load it into physical memory. The fastest IO speeds can be found when the information it seeks is already loaded into memory. It will only load that information into memory when it is needed. Once used, it is retained in the memory stack. If the information is needed again whilst it is loaded in the stack, it will process it faster than if it has to load it from the disk. The information will only remain in the memory stack, so long as there is space. But new information is added to the stack all the time. Once the space runs out, the oldest information is dropped from memory to make room for information that needs to be accessed now. If the amount of physical memory installed is greater than the size of all the databases combined plus any other process using memory, the database information will never be dropped from physical memory, until the SQL Server service is restarted.

So, on a machine that has no other applications installed except Vault Server, IIS and the SQL AUTODESKVAULT instance, the optimal memory to install is:

Ropt = D + O + P

Where

Ropt = optimal physical memory\RAM
D= Sum size of all databases

  • KnowledgeVaultMaster. (mdf + ldf)
  • All Vault databases. (mdf + ldf)
  • All library databases. (mdf + ldf)
  • All system databases (AutodeskReplication, Master, Model, msdb, temp). (mdf + ldf)
O= Operating System, this is to accomodate processes such as Remote desktop, anti-virus, Task Manager etc. 4GB is a good enough, but approximate, number.
P = Peak Web Service memory consumption. "P" can only be determined by monitoring over at least a week. This number can determined using Performance Monitor or another tool of your choice.
 
Example, if:
 
D = 54GB
O = 4GB
P = 2GB

Then
Ropt = 54 + 4 + 2 = 60 (GB). 
60GB is the amount of memory that needs to be installed to guarantee that the entire database is loaded into memory and never dropped from the stack.

Keep in mind that, the database can contain information that is rarely (or never) accessed. Consider files that have not been used in production for many years. It's possible that the files' information, has not been loaded into the database since. So if your users are not regularly, re-using already checked in files, such as old designs, it might not be necessary to install "Ropt" GB on your Vault Server. In an environment where there is little re-use of vaulted data, it might be acceptable to install 0.8D (GB) of memory or 0.6D. The best number for Ropt will be determined by studying SQL memory consumption on a regular basis.
 

Future Growth

It may be necessary to add 10% to the value just mentioned to accomodate short term database growth (next month). 20% for mid term (next 3 months).

In summary,
Ropt is the maximum amount of memory that should be installed on a Vault Server running SQL.
 

What if Memory is limited?

Ropt, however, is rarely feasible. What if there are insurmountable financial, technical, commercial or political constraints, that limit the amount of memory that is available to install on the Vault Server?
SQL will, by default, load as much information into memory as it can, and reserve it.

Think of this scenario. ACME Vault Corp regularly entertains, random numbers, of its clients at its favourite restaurant. To ensure that when clients are in town, it can get a table, every night, it reserves them all. But ACME Vault Corp cannot guarantee they will dine there every night, or use all the tables. So ACME Vault Corp agrees with the restaurant that if another customer wants a table, it can be unreserved, but only after the restaurant has confirmed with the ACME Vault Corp, that its OK. If ACME Vault Corp is going to use the tables, the other diner has to wait for another table to become available. 

SQL behaves like the ACME Vault Corp, but, depending on the size of the database and the amount of free RAM installed, it can reserve every table in the restaurant. When memory is limited, SQL can reserve all free memory, in case it is needed. If another process needs some memory, the operating system will free it up, but only after checking that SQL no longer needs it. This can make things faster for SQL, but other applications, such as the web service (IIS), can appear to be sluggish or hang whilst the OS makes its checks.

But the amount of memory reserved for SQL can be limited. In our restaurant scenario, this would be like limiting the customers reservations to say 6 out of 10 tables.

In such a situation, this might be more appropriate:
 

Rmax = (Rins - (O + P))*1024

Where
 
Rmax = "Maximum Server memory (in MB)". (The value set in SQL Server Management Studio.(SSMS))
Rins = installed RAM
O = reserved for the Operating System
P = Peak web service memory usage over a sample week
*1024 converts GB to MB

Example, if:
 
Rins = 16GB
O = 4GB
P = 2GB

Then
Rmax = (16 - (4 + 2))*1024 = 10240 (MB). 

10240 (MB) is the amount that SQL should be limited to.

To limit the amount of memory available to SQL, (See also "Server Memory Server Configuration Options")

  1. Start SQL Server Management Studio.
  2. Connect to the AUTODESKVAULT SQL instance.
  3. Right click on the SQL instance.
  4. Select Properties > Memory.
  5. Then set the "Maximum Server memory (in MB)" to your Rmax value.
 
In summary, more memory needs to be installed than that defined in the system requirements. The amount will differ from one environment to another.

See Also:

SQL Server will try to load the databases into the fastest available memory. Even in the age of Solid State Drives, physical memory is still faster.

Ideally, the AUTODESKVAULT SQL instance should be installed on a machine, separate to the Vault Server\IIS (remote SQL is only supported with Vault Professional). This means that one machine is dedicated to running the web service, the other is dedicated to running SQL. No other applications, (not even the Vault client), Job Processor or even Active Directory are installed on the Server.

Both machines should be located physically right next to each other in the same server rack with little or no latency between them.

For help with troubleshooting performance issues, refer to How to improve Vault performance

Attachments:

PerformanceCounters.zip;

Products:

Vault Basic; Vault Professional; Vault Workgroup;


Was this information helpful?


Need help? Ask the Autodesk Assistant!

The Assistant can help you find answers or contact an agent.


What level of support do you have?

Different subscription plans provide distinct categories of support. Find out the level of support for your plan.

View levels of support