Usare i contatori delle prestazioni per diagnosticare i problemi di prestazioni dell'applicazione su host sessione Desktop remoto

Si applica a: Windows Server 2022, Windows Server 2019, Windows 10

Le scarse prestazioni dell'applicazione sono uno dei problemi più difficili da diagnosticare, soprattutto per le applicazioni lente o che non rispondono. Tradizionalmente, si avvia la diagnosi raccogliendo CPU, memoria, input/output del disco e altre metriche. Si usano quindi strumenti come Windows Performance Analyzer per cercare di capire cosa stia causando il problema. Purtroppo nella maggior parte delle situazioni questi dati non consentono di identificare la causa radice, perché i contatori del consumo di risorse sono soggetti a variazioni significative e frequenti. Questa situazione rende difficile la lettura dei dati e l'associazione al problema segnalato.

Nota

Il contatore User Input Delay (Ritardo input utente) è compatibile solo con:

  • Windows Server 2019 o versione successiva
  • Windows 10 versione 1809 o successive

Il contatore di ritardo di input dell'utente consente di identificare rapidamente la causa principale delle esperienze di prestazioni di Desktop remoto negative per l'utente finale. Questo contatore misura per quanto tempo l'input dell'utente, ad esempio l'uso del mouse o della tastiera, rimane nella coda prima che un processo lo rilevi. Il contatore funziona sia nelle sessioni locali che remote.

L'immagine seguente mostra una rappresentazione approssimativa del flusso di input dell'utente dal client all'applicazione.

Diagram of user input flows from the users Remote Desktop client to the application.

Il contatore di ritardo di input utente misura il delta massimo all'interno di un intervallo di tempo tra l'input in coda e il momento in cui l'app in un ciclo di messaggi tradizionale lo preleva. Un ciclo di messaggi tradizionale viene visualizzato nel grafico di flusso seguente:

Diagram of user input Delay performance counter flow.

Un dettaglio importante di questo contatore è che segnala il ritardo di input massimo dell'utente all'interno di un intervallo configurabile. Questo ritardo è il tempo massimo impiegato da un input per raggiungere l'applicazione, che può influire sulla velocità di operazioni importanti e visibili, ad esempio la digitazione.

Ad esempio, nella tabella seguente, il ritardo di input dell'utente sarebbe stato segnalato come 1.000 millisecondi entro questo intervallo. Il contatore segnala il ritardo di input dell'utente più lento nell'intervallo. Il contatore indica questo ritardo perché la percezione dell'utente di "lentezza" è determinata dal tempo di input più lento (il valore massimo) che si verifica, non dalla velocità media di tutti gli input totali.

Numero 0 1 2
Ritardo 16 ms 20 ms 1.000 ms

Abilitare e usare i nuovi contatori delle prestazioni

Per usare questi nuovi contatori delle prestazioni, è innanzitutto necessario abilitare una chiave del Registro di sistema eseguendo questo comando:

reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v "EnableLagCounter" /t REG_DWORD /d 0x1 /f

Nota

Se si usa Windows 10, versione 1809 o versioni successive o Windows Server 2019 o versioni successive, non è necessario abilitare la chiave del Registro di sistema.

Quindi riavviare il server. Quindi, aprire Performance Monitor e selezionare l'icona più (+), come illustrato nella schermata seguente:

Screenshot showing how to add the User input Delay performance counter.

Dopodiché, verrà visualizzata la finestra di dialogo Aggiungi contatori, in cui è possibile selezionare Ritardo di input dell'utente per processo oppure Ritardo di input dell'utente per sessione.

Screenshot showing how to add the User input Delay per session.

Screenshot showing how to add the User input Delay per process.

Quando si seleziona Ritardo di input dell'utente per processo, si visualizzano le istanze dell'oggetto selezionato, in altre parole i processi in formato SessionID:ProcessID <Process Image>.

Ad esempio, se l'app Calcolatrice è in esecuzione nell'ID sessione 1, si visualizza 1:4232 <Calculator.exe>.

Nota

Non tutti i processi sono inclusi. Non sarà possibile vedere tutti i processi in esecuzione come SYSTEM.

Appena aggiunto il contatore inizia a inviare report sul ritardo dell'input dell'utente. La scala massima è impostata su 100 (ms) per impostazione predefinita.

Screenshot of an example of activity for the User Input Delay per process in the Performance Monitor.

Vedere quindi Ritardo di input dell'utente per sessione. Sono presenti istanze per ogni ID sessione e i relativi contatori mostrano il ritardo dell'input dell'utente di tutti i processi all'interno della sessione specificata. Inoltre, sono presenti due istanze denominate "Max" (il ritardo dell'input dell'utente massimo tra tutte le sessioni) e "Average" (la media di tutte le sessioni).

Questa tabella mostra un esempio visivo di queste istanze. È possibile ottenere le stesse informazioni in Perfmon passando al tipo di grafico Report.

Tipo di contatore Nome istanza Ritardo segnalata (ms)
Ritardo dell'input dell'utente per processo 1:4232 <Calculator.exe> 200
Ritardo dell'input dell'utente per processo 2:1000 <Calculator.exe> 16
Ritardo dell'input dell'utente per processo 1:2000 <Calculator.exe> 32
Ritardo dell'input dell'utente per sessione 1 200
Ritardo dell'input dell'utente per sessione 2 16
Ritardo dell'input dell'utente per sessione Media 108
Ritardo dell'input dell'utente per sessione Max 200

Contatori utilizzati in un sistema sovraccarico

Ora vediamo cosa viene visualizzato nel report se le prestazioni di un'app risultano ridotte. Il grafico seguente mostra le letture agli utenti che lavorano in remoto in Microsoft Word. In questo caso, le prestazioni diminuiscono nel tempo man mano che più utenti accedono in remoto.

Screenshot of an example performance graph for the RDSH server running Microsoft Word.

Di seguito viene illustrato come leggere le linee del grafico:

  • La riga rosa indica il numero di sessioni di accesso al server.
  • La linea rossa è l'utilizzo della CPU.
  • La linea verde è il ritardo massimo dell'input dell'utente in tutte le sessioni.
  • La linea blu, di colore nero in questo grafico, rappresenta il ritardo medio dell'input dell'utente tra tutte le sessioni.

Esiste una correlazione tra i picchi di CPU e il ritardo di input dell'utente. Man mano che la CPU aumenta l'utilizzo, aumenta il ritardo di input dell'utente. Inoltre, più utenti vengono aggiunti al sistema, l'utilizzo della CPU si avvicina al 100% con picchi di ritardo dell'input dell'utente più frequenti. Questo contatore è utile nei casi in cui il server esaurisca le risorse, può anche tenere traccia dei ritardi dell'input dell'utente relativi a un'applicazione specifica.

Opzioni di configurazione

Un aspetto importante da ricordare quando si usa questo contatore delle prestazioni è che, per impostazione predefinita, segnala il ritardo dell'input dell'utente in un intervallo di 1.000 ms. Se si imposta la proprietà di intervallo campione del contatore delle prestazioni, come illustrato nello screenshot seguente, a qualsiasi elemento diverso, il valore restituito sarà errato.

Screenshot of the Performance Monitor Properties dialog.

Per risolvere questo problema, è possibile impostare la chiave del Registro di sistema seguente in modo che corrisponda all'intervallo, in millisecondi, che si desidera utilizzare. Ad esempio, se si modifica Campione ogni 1 secondo in Campione ogni 5 secondi, è necessario impostare questa chiave su 5000 ms.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]

"LagCounterInterval"=dword:00005000

Nota

Se si usa Windows 10, versione 1809 o versioni successive o Windows Server 2019 o versioni successive, non è necessario impostare LagCounterInterval per risolvere il problema del contatore delle prestazioni.

È stata anche aggiunta una coppia di chiavi che potrebbe risultare utile nella stessa chiave del Registro di sistema:

LagCounterImageNameFirst—impostare questa chiave su DWORD 1 (il valore predefinito è 0 o la chiave non esiste). Questa chiave modifica i nomi dei contatori in "Image Name <SessionID:ProcessId>", ad esempio " explorer <1:7964>". Questa modifica è utile se si desidera eseguire l'ordinamento in base al nome dell'immagine.

LagCounterShowUnknown—impostare questa chiave su DWORD 1 (il valore predefinito è 0 o la chiave non esiste). Questa chiave mostra tutti i processi in esecuzione come servizi o SYSTEM. Alcuni processi vengono visualizzati con la sessione impostata su "?".

L'immagine seguente mostra l'aspetto di entrambe le chiavi in:

Screenshot of the performance monitor with both keys on.

Utilizzo dei nuovi contatori con strumenti non Microsoft

Gli strumenti di monitoraggio possono utilizzare questo contatore tramite Uso dei contatori delle prestazioni.

Condividi i tuoi commenti

È possibile inviare commenti e suggerimenti per questa funzionalità tramite l'Hub di Feedback. Selezionare App > Tutte le altre app e includere "contatori delle prestazioni di Servizi Desktop remoto: monitoraggio delle prestazioni" nel titolo del post.