> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/rdm/ribbon-menu-bar/help/performance-profiling.md).

# Performance profiling

Record operation timings and debug logs with the Remote Desktop Manager performance profiler to diagnose slowness, then send them to support.

The performance profiler records how long Remote Desktop Manager takes to perform its internal operations (workspace loading, database and API calls, cache, controls, and more), along with debug logs. Use it to diagnose a slow workspace, a slow startup, or an operation that hangs, usually when our support team asks for profiler logs.

{% hint style="warning" %}
Recording slows down Remote Desktop Manager. Open the profiler only while you reproduce the issue, then close it.
{% endhint %}

### Record and send profiler logs

On macOS, the tabs are named ***Performance*** and ***Debug only***, and ***Send to support*** is named ***Send trace to support***. On Windows, when a debug level is enabled, you can also click the debug icon in the status bar to open the profiler directly on the ***Debug*** tab.

1. Go to ***Help*** – ***Performance profiling***. The ***Profiler*** window opens and its logs are cleared.
2. In the ***Profiler*** tab, click ***Profiler level*** and select the categories requested by support, or use ***All***. Click ***Save***.
3. Optionally, select ***Auto-mode*** to also record any operation slower than the ***Threshold (ms)*** value.
4. Move the window aside, then reproduce the issue in Remote Desktop Manager (for example, refresh the workspace or open the slow entry).
5. To separate several attempts, type a description in the ***Marker Text*** field and click ***Add marker*** before each one.
6. Click ***Send to support*** to send the logs of the current tab to our support team, or ***Copy to clipboard*** to paste them in a ticket or an email.

{% hint style="info" %}
***Send to support*** and ***Copy to clipboard*** only include the selected tab. Repeat the action on the ***Debug*** or ***Startup logs*** tab if support also needs those logs.
{% endhint %}

{% hint style="success" %}
To capture most performance issues, set ***Level*** to `1`, select ***Auto-mode***, and set ***Threshold (ms)*** to `200`.
{% endhint %}

### Tabs

| TAB              | DESCRIPTION                                                                                                                                                                               |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Profiler**     | Timings of the operations that match the selected profiler level. When sent or copied, the logs start with the level and the ***Auto-mode*** settings that were used.                     |
| **Debug**        | Debug messages for the selected debug level. The tab loads the existing debug log file when the window opens. See [Debugging](/rdm/knowledge-base/troubleshooting-articles/debugging.md). |
| **Startup logs** | Timings and errors captured while Remote Desktop Manager was starting, even if the profiler was not open at the time.                                                                     |

#### Profiler tab

| OPTION               | DESCRIPTION                                                                                                                                                                                                 |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Level**            | Numeric value of the selected profiler categories. Support may ask you to type a specific value.                                                                                                            |
| **Profiler level**   | Opens a dialog to select the categories to record, for example ***SQL***, ***Web***, ***Cache***, ***Remote***, or ***Deadlock detection***. Use ***All*** or ***None*** to select or clear every category. |
| **Timestamp**        | Display the time of each entry.                                                                                                                                                                             |
| **Main thread only** | Display only the entries of the main (user interface) thread.                                                                                                                                               |
| **Group by thread**  | Group the entries by thread.                                                                                                                                                                                |
| **Auto-mode**        | Also record the operations that take longer than the threshold, even when their category is not selected. When a profiler level is also selected, these entries start with a middle dot (`·`).              |
| **Threshold (ms)**   | Minimum duration of an operation recorded by ***Auto-mode***. The default value is 500 and the minimum is 10. Only visible when ***Auto-mode*** is selected.                                                |

{% hint style="info" %}
Select the ***Remote*** category when using a Devolutions Server workspace to have the server profile its own operations. Retrieve them with ***Fetch remote logs***.
{% endhint %}

#### Debug tab

| OPTION              | DESCRIPTION                                                                                                                                                                              |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Debug level**     | Numeric value of the selected debug categories. The ***Debug level*** button opens a dialog to select them. This is the same setting as in ***File*** – ***Settings*** – ***Advanced***. |
| **Timestamp**       | Display the time of each entry.                                                                                                                                                          |
| **Group by thread** | Group the entries by thread.                                                                                                                                                             |

#### Startup logs tab

| OPTION              | DESCRIPTION                                                                                                                                                                                                                                                             |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Capture output**  | <p>Define when startup logs are captured:</p><ul><li><em><strong>Default</strong></em>: Capture only while the application starts.</li><li><em><strong>On</strong></em>: Capture for the whole session.</li><li><em><strong>Off</strong></em>: Never capture.</li></ul> |
| **Timestamp**       | Display the time of each entry.                                                                                                                                                                                                                                         |
| **Group by thread** | Group the entries by thread.                                                                                                                                                                                                                                            |

### Window commands

These commands apply to the selected tab.

| COMMAND                          | DESCRIPTION                                                                                                                                   |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Marker Text** / **Add marker** | Insert a separator line with the typed text. In the ***Debug*** tab, the marker is also written to the debug log file.                        |
| **Clear**                        | Clear the logs of the tab.                                                                                                                    |
| **Auto Clear**                   | Clear the ***Profiler*** tab every time the workspace is refreshed, so each attempt starts with empty logs.                                   |
| **Fetch remote logs**            | Retrieve the profiler logs recorded by the server and add them with the `REMOTE:` prefix. Only displayed with a Devolutions Server workspace. |
| **Send to support**              | Send the logs of the tab to our support team. A confirmation message is displayed once they are sent.                                         |
| **Copy to clipboard**            | Copy the logs of the tab to the clipboard.                                                                                                    |

{% hint style="warning" %}
Clicking ***Clear*** in the ***Debug*** tab also deletes the debug log file.
{% endhint %}

### Profile the application startup

To diagnose a slow startup, start Remote Desktop Manager with the `/Profiler` switch. The profiler window opens as soon as the application is loaded.

The following switches can be combined with `/Profiler`:

| SWITCH                              | DESCRIPTION                                                                                                                                                                                           |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/Profiler` or `/Profiler:{level}`  | Open the profiler at startup. The optional numeric level sets the profiler level (it can also be typed after a space, for example `/Profiler 256`). A negative level also turns off ***Auto Clear***. |
| `/AutoClear:on` or `/AutoClear:off` | Turn ***Auto Clear*** on or off.                                                                                                                                                                      |
| `/AutoMode:on` or `/AutoMode:off`   | Turn ***Auto-mode*** on or off.                                                                                                                                                                       |
| `/Threshold:{ms}`                   | Set the ***Auto-mode*** threshold in milliseconds (minimum 10).                                                                                                                                       |

Example with the recommended settings: `RemoteDesktopManager.exe /Profiler:1 /AutoMode:on /Threshold:200`

On Linux and macOS, `/Profiler` must be the only switch on the command line and takes no value. Otherwise, the profiler does not open.

For the complete list of switches, see [Command line arguments](https://docs.devolutions.net/rdm/ribbon-menu-bar/help/pages/I5sp1g5WMjh60mIuDOT2#remotedesktopmanager.exe-parameters).

{% hint style="info" %}
Even without the `/Profiler` switch, the ***Startup logs*** tab shows what was captured during the last startup, as long as ***Capture output*** is not set to ***Off***.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/rdm/ribbon-menu-bar/help/performance-profiling.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
