Performance is an important part of the user experience when it comes to working with software. Factors that contribute to the performance experience include things like hardware, data format, structure, and location, network bandwidth, display and visualization settings, and analysis complexity, among others. Performance can be affected both positively as well as negatively by changes in any one or combination of the above factors.
The purpose of this document is to guide you through some of the most common troubleshooting steps if you experience a performance issue while using ArcGIS Pro.
Hardware check
Check the ArcGIS Pro System requirements and run the ‘Verify your computer’s ability to run ArcGIS Pro’ utility to ensure your machine meets or exceeds the minimum requirements.
Run the Performance Assessment Tool Once you know that your machine meets at least the minimum requirement, run the ArcGIS Pro Performance Assessment Tool (PAT) to see where your machine falls in the range of typical results. Download PAT and read more about it here.
Note that for operations requiring disk input/output, a solid-state drive (SSD) will provide the best performance.
Update GPU driver Since ArcGIS Pro uses your GPU to accelerate rendering, the next thing to check is that your GPU driver is up to date directly from the manufacturer (e.g. NVidia or AMD). New driver releases not only fix bugs and increase stability but can give performance increases as well! Note that “manufacturer” means the GPU vendor in the case of a desktop computer, but if you’re using a laptop, then you’ll need to get your driver updates from the manufacturer of the laptop itself.
To check the GPU driver version, press the Windows key, search for ‘device manager’ and open Device Manager.
Expand Display adapters. Right-click your GPU > Properties
You can find the driver version under the Driver tab.
AMD GPU If you have an AMD GPU, follow the steps outlined in this article: How to Configure Laptop Switchable Graphics
Docking station If using a docking station to dock a laptop to external peripherals such as monitors, make sure that the dock’s drivers are up to date as well.
Laptop-specific power settings If working on a laptop that is plugged in, changing the power options to High Performance can help to ensure that the GPU runs optimally.
That takes care of the quick hardware check. Since visualization and analysis sit on top of data, before moving on with further troubleshooting, consider the location of the data you are working with. This will help to rule out network or bandwidth issues before investing more time troubleshooting.
Antivirus check
Is there an active antivirus/firewall/software security solution that could be causing the performance issue? Check this by disabling the antivirus solution and repeating your workflow to see if that was the cause of the performance bottleneck (it may be necessary to coordinate this with your IT department). This should only be done temporarily to isolate the cause of the performance issue and is not a recommended workaround. If disabling the antivirus solution resolves the problem, work with your IT department or the antivirus solution vendor to determine why it’s interfering with ArcGIS Pro.
Remote desktop connection
See How To: Improve performance of ArcGIS Pro when running over Remote Desktop
Data location check
The recommendation is the same for file geodatabase as it is for enterprise geodatabases: locate your client (in this case, ArcGIS Pro) as close to your data as possible. If your client is on-premises it is not recommended to store your file geodatabases in a cloud store like Google Drive, One Drive, etc.
If your enterprise database is in the cloud, either on a virtual machine (VM) or using DBaaS, then the client that connects directly to it needs to be in the same region/data center.
If your data is not collocated with ArcGIS Pro, as a troubleshooting measure, copy the data to a local drive and repeat the operation that caused suboptimal performance to determine if data location may be the culprit. If working with the data locally resolves the issue, it will be necessary to investigate network/bandwidth settings and capacity which is beyond the scope of this document.
Options check
Now it’s time to work with application options.
Navigate to the Project tab > Options > Display (learn more about display options). Adjust each of the following iteratively, checking display performance after each adjustment.
- Change the Antialiasing mode to Fast (default) or Normal.
- Change the Rendering quality from Best toward Low.
- Uncheck the Enable hardware antialiasing check box.
- Change the Rendering engine from DirectX to OpenGL. If this does not lead to a performance improvement, switch back to DirectX.
- Check the Clear cache check box. https://pro.arcgis.com/en/pro-app/help/mapping/layer-properties/how-caching-works.htm
- Click OK. The project closes and reopens to update the settings.
Switch to the Navigation tab (learn more about navigation options).
- Turn off 'Show Distance to cursor' option if enabled – specific to 3D navigation, this option is not checked by default. Unchecking it reduces data access when the cursor is moving on the screen.
Switch to the Selection tab (learn more about selection options).
- Keep 'Display the interactive selection graphic' off unless required for your workflow.
Switch to the Color Management tab (learn more about color management).
- Keep 'Enable color management' off unless required for your workflow.
Switch to the Indexing tab (learn more about indexing options).
- If you know where your data is, or you rarely have reason to search projects, you can turn indexing off. Try turning off indexing, or otherwise reschedule it to occur during times when you’re not using your machine.
As you continue through the following sections, the integrated Diagnostic Monitor may help to isolate the cause of a performance issue.
Map performance check
If you skipped to this section without reviewing the Data location section, check that first to ensure that the issue is not network/bandwidth related.
Best practices for map performance in ArcGIS Pro are captured in Author a multiscale map. The three main approaches include 1. Using generalization techniques to alter the feature geometry, 2. Adjusting the properties of map layers to limit which features draw relative to the view scale, and 3. Adjusting how the layer symbology draws relative to the view scale. Multiple strategies (for example, using definition queries, using display filters, limiting a layer’s scale range, setting scale ranges for symbol classes, and so on) exist for each of these three approaches, so reference the ‘Author a multiscale map’ help topic for further details.
Additionally, check the following to ensure optimal map performance:
- Keep all projections the same. When possible, keep all data in a single projection and use the same projection for the map. When all layers are in the same projection, the performance penalty incurred by on-the-fly projection calculations can be avoided.
- Ensure that your data is spatially indexed.
- Working with joined or related data. Accessing data through joins and relates can slow performance.
- Create attribute indexes on the join fields.
- Joining multiple tables or layers to a single layer can be costly in terms of performance. If possible, consider exporting the data to new feature classes that contain the joined or related information.
- Working with labels
- Use Summary to ensure there is no duplication of SQL queries in the label classes.
- Use feature weights sparingly.
- Just as with map layers described above, set visible scale ranges for the labels to ensure the map isn’t trying to draw many labels at a small scale.
- Do not use graphic text if you have more than a few hundred pieces of text.
- Use geodatabase annotation to store large amounts of text.
Geoprocessing check
If you skipped to this section without reviewing the Data location section, check that first to ensure that the issue is not network/bandwidth related.
The following are general best practices to ensure optimal geoprocessing performance:
- Make sure you are working with clean geometry by running Check/repair geometry.
- Use attribute and spatial indexes when the data source allows it.
- Check the spatial references of the input data. Tools that require multiple inputs, such as those in the Analysis toolbox or Spatial Analyst toolbox, require all features or rasters to be in a common coordinate system to compute spatial relationships. Review the following guidance to ensure that you aren’t making the process more computationally intensive than necessary: Tools with multiple inputs – coordinate system affects tool performance
- Leverage parallel processing when the tool supports it.
- Use pairwise tools when available/appropriate.
- For Advanced license users, consider reviewing the tools in the GeoAnalytics Desktop toolbox. Many of the tools are considerably faster than other alternatives by using a Spark parallel processing engine. A good example is Join Features or Aggregate Points over Spatial Join, and Summarize Attributes over Summary Statistics.
- Write geoprocessing output to memory when appropriate: “Writing geoprocessing outputs to memory is an alternative to writing output to a geodatabase or file-based format. It is often significantly faster than writing to on-disk formats.”
- Use SQL expression for feature services and enterprise geodatabases: https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/calculate-field.htm “SQL expressions support faster calculations for feature services and enterprise geodatabases. Instead of performing calculations one feature or row at a time, a single request is set to the server or database, resulting in significantly faster calculations.”
- When geoprocessing tools are run in an edit session, performance will decrease compared to when the same tool is run outside an edit session. See Enable Undo for more details about this functionality.
- Geoprocessing history is stored in the project (.aprx file), so a large history may affect the performance of loading and working in the project. Consider removing any geoprocessing history items that are no longer needed in the project to reduce storage size and loading time.
- By default, geoprocessing operations are logged to the metadata of the datasets involved in the operation. The Geoprocessing History or lineage section in the metadata can be viewed using the FGDC metadata style. Running a large number of tools against a dataset as a recurring or scripted workflow can cause the Geoprocessing History section of the metadata to grow to a scale that impacts the performance of using that dataset. Metadata logging can be disabled using the Geoprocessing Options dialog described in the link above (this is an Application setting that applies to all projects used on your machine), or using arcpy.SetLogMetadata(False) within a Python script.
If following the above best practices does not improve performance, continue with the following troubleshooting steps.
1. Add the same data to a new or untitled project. Does the performance problem persist? Slower performance might be related to a large or bloated project. Your project should only include resources you need for the work, and only open maps and layouts that you need rather than keeping them all open. We sometimes hear from panicked Pro users that they accidentally closed a map and lost their work. Maps and layouts can be located and opened from the Catalog pane.
There is an overhead for each background geoprocessing tool run in the geoprocessing pane which is increased per each layer in the map and each open map, particularly for tools that update an existing map layer rather than creating a new dataset/layer (like Add Join, Calculate Field, and so on).
2. Is the tool faster to run and return responsiveness to the app in the 1. geoprocessing pane, 2. floating window (limited to tools opened from ribbon or toolbar buttons that require shorter, focused interaction such as Calculate Field, Select by Attributes/Location, Add Join, and so on), 3. ModelBuilder, or the 4. Python window? The last three run in foreground execution mode which reduces the overhead and should execute faster.
Working in 3D
If you're experiencing drawing performance issues when working in 3D, try the actions below to reduce the load on the GPU and restore drawing performance:
- Create a scene layer. I3S is a specification used to create scene layers, converting the traditional GIS data for various types (including points, LAS datasets, multipatch volumes, and BIM layers) into a form optimal for streaming and drawing at multiple levels of detail (LODs). Unlike traditional GIS data, multi-LOD representations using I3S can improve performance and scalability of a 3D scene. While it involves conversion of the data, this conversion has a very positive effect on performance. A scene layer package (.slpk) can be stored and used locally, or published as a web scene layer.
If you are not able to convert your data to a scene layer you can try the following to improve drawing performance:
- Lower the Rendering quality setting in the Display tab on the Options dialog box. Lowering this setting reduces the detail of elevation and reduces the resolution of textures in multipatch features to lower the demands on the GPU.
- If your content can be draped on the surface rather than drawing independently, consider moving layers from the 3D Layers group to the 2D Layers group. This will reduce the volume of 3D geometries that are drawing in your scene, thus reducing the load on the GPU.
- You can reduce the distance visibility limit for one or more layers in your scene. You can do this on the General tab of the Layer Properties dialog box. Change the Out Beyond parameter to a shorter distance.
- Make sure the Optimize performance by compressing textures option (on the Display tab of the Layer Properties) is checked.
- If your layer contains symbols such as simple icons, which do not take advantage of alpha transparency, try checking the Optimize partially transparent symbols option (on the Display tab of the Layer Properties).
- If your geometry is dense, even when the distance visibility is limited, you can reduce the density of geometries displayed in your scene.
- If your geometries are multipatches or you're using a multipatch as a marker symbol, use tools to simplify the geometries. The 3D Workshop Feature Extraction Tools are beta tools to repair and simplify multipatch geometries. The 3D Basemaps solution has generalization tools, the LOD2 and LOD3 building tools, for multipatch geometries.
- If you're using traditional GIS geometries, such as points, lines, and polygons, use tools in the Generalization toolset to reduce the density of geometry that is present in your features.
Virtualization tips
Start by reviewing ArcGIS Pro in a Virtualized Environment.
ArcGIS Pro can be run on virtualization environments such as VMware or Citrix. No changes to display options are immediately necessary, but you may choose to lower rendering detail and antialiasing settings to optimize the performance of your virtual machine instance. ArcGIS Pro uses hardware acceleration if it is compatible and available on your virtualization platform. If hardware acceleration is not available, ArcGIS Pro falls back to software rendering—meaning it is using the CPU to simulate graphics card functions. In general, this will result in much lower performance than if hardware acceleration were available, especially in scenes.
It is important to scale VMs and cloud instances to perform the work needed based on what the user’s role is, or what type of user they are. Lightweight, Medium, and Heavy users can decide the resources needed to complete their work. Follow the recommendations provided by the ArcGIS Pro System Requirements to provide adequate system resources, such as CPU and RAM as well as GPU.
When considering On-Premises options consider the roles of the GPUs. It’s best to try to separate or scale out GPU usage case between server to reflect the user roles. If the most users are light to medium weight users, try to group those users together to get the best density and functionality overall. When possible, separate out the heavyweight users to their own GPUs (based on profiles 4q, 8q, etc.) as they will use greater GPU but also CPU and RAM.
Virtualization options with either On-Premises or Cloud-based systems provide stable and useful platforms that support ArcGIS Pro.
On-Premises Virtualization
Citrix Virtual Applications and Desktops (Formerly) Citrix XenApp
- Not recommended due to the inability to effectively share GPU resources among multiple clients.
(Formerly) Citrix XenDesktop, VMware Horizon (ESXi w/ Horizon Client), Nutanix AHV
- Recommended for on-premises solution to support rich VDI experience with sharable NVIDIA GPU’s.
Cloud-based Virtualization
Amazon: WorkSpaces, EC2 with Elastic Graphics, EC2 G4
Microsoft Azure N-series
Google Cloud Platform
Oracle Cloud
The list above is a sample of the various options that can deliver ArcGIS Pro. The viable options continue to expand, with new offerings that support user needs, and system requirements.
Esri Blogs and White Papers are updated to reflect the latest information.
Additional Resources:
Announcing the ArcGIS Pro Performance Assessment Tool (PAT)
Diagnostic Monitor
How To: Improve performance of ArcGIS Pro when running over Remote Desktop
FAQ: How do I troubleshoot ArcGIS Pro performance issues related to antivirus software (exceptions)?
Problem: Rendering and drawing performance issues in ArcGIS Pro 2.0 and above
Graphics adapter resources
What is a scene layer?
Troubleshooting Performance Issues in ArcGIS Pro
Geoprocessing Resolution, Tolerance, and Hair
ArcGIS Pro Virtualization White Paper
Working with Technical Support
If you have worked through the above checks and recommendations and continue to experience performance issues, the next best step is to work with Technical Support. Technical Support is the most effective way to convey the information needed for development teams to act on the issue. It provides a trackable object (this may be a Case number and a bug number, if applicable) that can be referenced in the future.