Category Archives: Windows Server

Controllare l’utilizzo del processore in Windows

I problemi di prestazioni dovuti all’utilizzo del processore generalmente sono abbastanza semplici da diagnosticare.

L’utilizzo del processore può essere particolarmente critico nei server utilizzati come database o che offrono servizi di posta ma con i processori disponibili oggi sono abbastanza rati.

Quelli di seguito sono i contatori che possono essere utilizzati con Performance Monitor per analizzare l’utilizzo del processore.

Processore % Tempo processore (% Processor Time)

Questo contatore è il principale indicatore dell’utilizzo del processore. Un valore che è continuamente molto elevato indica che il sistema sta utilizzando il processore in modo troppo intenso.

Analizzando il valore di questo contatore è necessario ignorare i picchi perchè possono non essere significativi

Sistema Lunghezza coda processore (Processor queue)

Un valore superiore a 2 di questo contatore indica che il processore sta rallentando il sistema.

Nel caso si utilizzi un server con più processori il valore deve essere diviso per il numero di processori.

Quindi in un sistema con due processori il valore limite è 4 e non 2.

Controllare l’utilizzo della memoria in Windows

Se un server è lento uno dei primi elementi di analizzare è la memoria visto che molto spesso la causa della lentezza è la mancaza di ram.

In particolare un grande quantitativo di ram è richiesto dai server che funzionano come database o ospitano i servizi di posta.

I seguenti sono i contatori più utili per individuare i problemi di memoria utilizzando Performance Monitor.

Memoria Byte disponibili (Available Bytes)

Più memoria disponibile e più veloce è il server.

Tramite questo contatore possiamo verificare che esista ram libera. Inoltre ci permette di verificare l’andamento dell’utilizzo della memoria.

Memoria Pagine/sec (Pages/sec)

Questo contatore indica il numero di hard page faults cioè il numero di pagine che non si trovano in memoria per cui il Virtual Memory Manager deve recuperare i dati dal pagefile che si trova sul disco. Visto che l’accesso al disco è molto più lento rispetto a quello alla ram se questo valore è elevato si presentano problemi di prestazioni. Il valore dovrebbe essere inferiore a 20 pagine/sec.

Memoria Pagine di transizione reimpiegate/sec (Page Faults/sec)

Indica la somma di hard page faults e soft page faults. I soft page faults si verificano quando il dato si trova già nella ram.

Memoria Allocazioni pool non di paging (Pool non paged Bytes) Q

uesto contatore può essere utile per individuare un memory leak. Infatti una crescita continua di questo valore può indicare un memory leak.

Memoria Bytes Vincolati (Committed Bytes) Indica la quantità di memoria allocata dai processi. Se questo valore è superiore alla ram è necessario aggiungere memoria. Un elevato valore di questo contatore rispetto alla ram installata causa l’eccessivo utilizzo del file di paging che rallenta il sistema.

File di paging %In uso (%Usage) Indica la percentuale del file di paging che è in uso. Questo valore dovrebbe essere inferiore al 70%.

Abilitare Remote Desktop da remoto

Remote Desktop, Desktop Remoto nella versione italiana, è una funzionalità di Windows che permette di accedere a un server da remoto e risulta quindi molto utile quando è necessario operare attraverso la rete.

Normalmente è possibile abilitare Remote Desktop aprendo Sistema nel Pannello di Controllo, accedendo alla scheda Connessione Remota e selezionando l’opzione Consenti agli utenti di connettersi in remoto al computer.

Il problema si ha nel caso si abbia la necessità di collegari a un server su cui questa opzione non è stata abilitata,

In una situazione simile è possile utilizzare regedit per modificare il registro del server remoto.

-Avviare l’editor del Registro di sistema.
-Cliccare File e selezionare Connetti a Registro di sistema in rete.

-Viene aperta una nuova finestra all’interno della quale è necessario inserire il nome del server a cui bisogna connettersi e cliccare Ok.

-Dopo che la connessione al registro del server è avvenuta, bisogna acchedere alla chiave di registro HKLMSYSTEMCurrentControlSetControlTerminal Server.

-All’interno di questa chiave è presente un valore Reg_DWORD chiamato fDenyTSConnection.
Bisogna cliccarlo due vole e modificare il valore assegnato a fDebyTSConnection da 1 a 0.

Prima che sia possibile connettersi tramite remote desktop al server, è necessario riavviare il computer utilizzando il seguente comando.

shutdown -m \nomeserver -r

Seguendo questa procedura è possibile abilitare Remote Desktop su un server remoto.

Debugging tools per sistemisti

Come tutti sappiamo i crash di Windows si verificano, l’obiettivo quindi è individuarne la causa il prima possibile in modo da evitare che si ripetano.
I crash di sistema spesso sono provocati da bug presenti nel software o nei driver e quindi è probabile che non si verifichino in modo isolato.

Quando si verifica un crash Windows crea un memory dump. Un memory dump consiste in un file che contiene i dati che erano in memoria al momento del crash tramite i quali possiamo risalire alle cause del problema.

Windows può  creare tre tipi di dump
Small dump – Uno small dump è un file di 64 kb che non contiene gli eseguibili che erano in esecuzione quando si è verificato il crash.
Kernel dump – Corrisponde alla ram occupata dal kernel del sistema operativo.
Full dump – Corrisponde alla ram del sistema. Contiene quindi tutti gli eseguibili e i dati presenti in memoria al momento del crash.

Per impostare il tipo di dump da creare bisogna eseguire le seguenti operazioni
-Aprire il pannello di controllo
-Fare doppio click su Sistema
-Accedere alla scheda Avanzate
-Cliccare su Avvio e Ripristino
-Selezionare il tipo di dump che si vuole venga generato nella nuova finestra.

In questa finestra possiamo anche impostare altre opzioni relative alla generazione dei dump come la possibilità di sovrascrivere dump precedenti.

Per analizzare i dump abbiamo bisogno dei debugging tool che sono scaricabili dall’indirizzo http://www.microsoft.com/whdc/devtools/debugging/default.mspx.
I debugging tool includono KD.exe (un kernel debugger da linea di comando),NTSD.exe,CDB.exe (due user-mode debugger da linea di comando) e WinDbg che è la versione GUI del debugger che permette il debugging sia in kernel mode che in user mode.

Prima di potere utilizzare WinDbg è necessario configurare i symbol di Windows
I symbol sono prodotti durante la compilazione di un programma e permettono di associare gli indirizzi di memoria ai programmi e alle funzioni che li stavano utilizzando e sono quindi indispensabili nella fase di debug.
Per impostare WinDbg in modo che i symbol di Windows vengano scaricati automaticamente da debugger è necessario accedere al menu File – Symbol File Path e inserire nella finestra che viene aperta la stringa SRV*c:symbols cache*http://msdl.microsoft.com/download/symbols sostituendo a c:symbols il percorso in cui si vogliono scaricare i symbols.

A questo punto è possibile aprire il file di dump accedendo al menu File – Open Crash Dump. Windbg scaricherà i symbol e mostrerà il risultato.

Per analizzare il dump possiamo utilizzare alcuni comandi digitandoli sulla linea di comando che si trova in basso nella finestra del programma.
!analyze -v mostra informazioni sullo stato del sistema al momento del crash e sul tipo di errore che si è verificato.
In particolare possiamo trovare le informazioni più utili nella sezione Debugging Details. Qui possiamo individuare dati come DEFAULT_BUCKET_ID che mostra la categoria dell’errore (nel caso di un problema causato da un driver la categoria sarebbe DRIVER_FAULT) e IMAGE_NAME che visualizza cosa ha causato il crash (nel caso di problema causato da un driver qui troveremo il nome della relativa dll).

Una volta individuato il modulo che sospettiamo essere la causa del problema possiamo utilizzare il comando lmv per ottenere maggiori dettagli.
Nel caso che abbiamo analizzato in precedenza utilizzando lmv potremmo ottenere maggiori informazioni sulla dll e individuare le informazioni sul relativo driver.

WinDbg supporta l’utilizzo di numerosi altri comandi e permette di effettuare analisi più complessi ma seguendo questi passi è possibile individuare in un buon numero casi l’origine del problema e semplificare il lavoro di sistemista.