ODTK actually does not need much RAM at all. When running, it uses less than 100 MB. Having more RAM won't make a difference in speed, but the following list are things to check in order to improve ODTK's speed:
- Filter process noise update interval
Set this as large as you can while still providing a small enough sampling so that ODTK can accurately interpolate generated ephemeris files. For LEOs, this is 60 seconds. For GEOs, this can be as large as 15 minutes.
- State space size
The larger the state space, the slower the processing will be. Use the State Content HTML utility to investigate what is in your state space. Pay particular attention to:
- Finite maneuver list: Are you carrying around maneuvers that are old? Either delete them from the satellite, turn them off, or consider using shared maneuver state space.
- Sensor biases: Are you estimating biases on sensors that you don't have data for and don't reasonably expect to get? Either remove the sensor from the scenario or exclude it from the filter's list of trackers. Consider setting the filter's ProcessControl > DynamicStateSpace > MeasBiases to Automatic so that it will automatically drop sensor bias states that have decorrelated.
- Force model configuration on each satellite
The usual suspects for slow processing are the gravity model and the atmospheric density model. To the extent that you can, reduce the degree and order of the gravity field, as long as it doesn’t hurt your predict accuracy and consistency test. Some of the density models are notoriously slow, such as Jacchia-Bowman and any of the MSIS models.
- Disk speed
Whenever possible, DO NOT have the filter/smoother “run” files (i.e., the outputs) stored on a network drive. Point the filter and smoother to a local disk. These are throwaway files that do not need backing up or archiving, as you can easily regenerate them given the scenario, measurements, and restart records. Using SSD drives will help speed things up, particularly report and graph generation.
- Number of cores
This is particularly applicable to the smoother. ODTK will automatically use more cores if it thinks it would help; this is generally a function of the state space size. Run the smoother and see how many cores ODTK is using. You can overwrite the number of cores ODTK uses in Edit > Preferences > Runtime Settings.
- Number of measurements
The filter will move forward in time and stop at each measurement. If you have many dense measurements (e.g., data once a second during a 10-minute track), then you could choose to thin the measurements using the filter’s custom data editing rules. Thinning to once every five or ten seconds will likely not have a noticeable impact on the covariance, but it will greatly speed things up. AGI recommends that you perform a thinning study to determine which measurements can and should be thinned and what impact (if any) this has on the covariance.
- CPU model and speed
ODTK takes advantage of all the latest linear algebra capabilities in modern CPUs. AGI recommends using current CPUs with higher clock speeds, although clock speed isn’t always the whole story. AGI also recommends checking your CPU model against the high-end CPUs list to see where it stands (roughly) and if you might benefit from a better CPU.
- Filter and Smoother configuration
The filter normally processes each individual measurement by itself and updates the state and covariance. If you have two or more measurements that occur at the same time, then you can speed up the filter by performing a simultaneous update by applying all measurements at once. You can control this by adjusting the filter’s ProcessControl > MeasurementProcessingMode = Simultaneous setting. This can be particularly useful when estimating two or more spacecraft that have data at common times (e.g., GPS measurements).
Do not use the filter’s HigherOrderCorrections unless you have proved to yourself that you actually need to do so, which is typically only true when dealing with large measurement gaps and large maneuvers.
Set the smoother’s ProcessControl > StateTransitionMode to Linear. This will greatly speed up the smoother run.
- Virtual machines
ODTK runs fine in a VM environment, but there is a 10-15% overhead penalty. AGI recommends that you provision the VM with 2-4 CPUs.
- Product generation
After all the filter and smoother runs finish, you can still spend time generating reports and graphs. The time this takes is a direction function of the I/O speed and how big the files are. You can configure the filter/smoother outputs to not store all points, to not store the full set of cross-correlations, etc.