How can you load 100,000 unique parts in one shot from ModelManager?
We have an assembly of 60,000 unique parts which we cannot load in one shot. We can see that the processus ModelManager.exe is reaching the limit of the 32 bit memory capacity and that it stalls before it can transfer all the data to Modeling.
Do you have any tuning that allows a workaround the 32 bit memory limit of ModelManager.exe?
Yes I actually do. In order to load large assemblies from Model Manager I increase the java heap space. This is done by editing the run.bat file in the Model Manager install directory (C:\Program Files (x86)\PTC\Creo Elements\Direct Model and Drawing Manager 18.1\run.bat). I increase the maximum java heap space size to 1 GB by changing the Xmx value on line 25 to 1024m. When done line 25 should read... "set JVM_ARGS=%JVM_ARGS% -Xms50m -Xmx1024m". Hopefully this helps.
Increasing Java max memory to 1024 MB also has drawbacks.
The overall memory for the WM C-kernel + Java is limited (approx. 2GB - for the 32-bit MM)
You may run out of memory in the C-kernel when you increase Java memory too much.
Both types of out-of-memory (either C-kernel or Java) lead to an immediate termination of MM.
Try if -Xmx768m is sufficient (default is 256m - which is not sufficient for large assemblies)
Alternative method to load huge assemblies (>100K parts)
- Load in several steps
- Use "partial load" and reload functionality
- Introduce Containers in structure and utilize the "partial load for Containers" preference
To track down where the bottleneck might be, divide the problem into two parts.
Export your big assembly as a SDEXP file.
1) measure the time until the SDEXP file is created.
This is the time which is needed to collect all data in the database and transfer it to a tmp directory
2)Once the SDEXP file exists, measure the time it takes to load that into Modeling
With this test, you are measuring if the computer running Modeling has enough RAM and a fast disk
HINT: Watch for virus scanners - they can significantly slow down performance when they "watch" the
temporary directories used to transfer files between MM and the Database.
Thanks for the responses Max. I did a similiar test on our old hardware by loading a large assembly from Model Manager, saving it as a package file to a local drive, and then loading the package file. The load from Model Manager took 2 hours and 12 minutes while the load from the package file took just 14 minutes. Our new computers with ssd's and 32 gb of RAM are able to load this same assembly from Model Manager into Modeling in 20 minutes! We have not upgraded our server hardware however I still hope to do so in the near future.
Please note that PKG files and SDEXP files are completely different.
PKG is basically the "pure model data"
SDEXP contains additional Meta Data (e.g. MASTERDATA information)
So to measure the time spent on the client machine, you should load the SDEXP data.
This is far closer to the real portion of "loading a model from the database".
Additional note: SDEXP contains what you have configured in Model Manager, e.g.
- load as stored
- OR load highest version
- Load with/without MASTERDATA
So have an eye on what you have configured in MM
The time to load the SDEXP into Modeling may differ significantly.
(everything is worth being measured - you just need to be aware of *what* you are measuring)
The customer has given me a .sdexp file. How do I open it? Should installing Creo Direct Work Manager in my laptop to open it can work?
Or after opening the .sdexp file in customer's machine, can I ask him to save as another format whereby today's Creo Parametric or Creo Direct can read?
Thanks for your replies