mercoledì 7 novembre 2012

Monitorare i page fault dei processi | Ottimizzazione server

Come si visualizzano i page fault generati dai processi?
Possiamo ottimizzare i nostri server, valutando il numero di page fault minor e major generati dai nostri processi.

In breve senza farla troppo lunga:
Major Page Fault: si verifica quando il processo genera un'eccezione che richiede I/O sul disco, in quanto la pagina di memoria non è presente sulla memoria fisica.
Minor Page Fault: si verifica quanto il processo genera un'eccezione per una pagina di memoria non più presente in memoria centrale ma presente in cache.
Quelle che provocano rallentamenti sono proprio le major page fault in quanto le letture direttamente sul disco sono molto costose in termini di prestazioni.

Uno dei tanti modi per avere informazioni sui page fault generati da un processo:
ps -o min_flt,maj_flt,cmd,args,uid,gid 56

Con il comando sopra otteniamo le informazioni sul PID 56:
 MINFL  MAJFL CMD                         COMMAND                       UID   GID
 67244  24357 /usr/sbin/rsyslogd -c4      /usr/sbin/rsyslogd -c4          0     0


Per avere una panoramica generale sui processi possiamo lanciare:
ps -eo min_flt,maj_flt,cmd,args,uid,gid | less

Esempio di output:

Cosa fare in caso di valori di page fault troppo alti ?

  1. Ottimizzare i file di configurazione dei servizi attivi come ad esempio php.ini o httpd.conf o lighttpd.conf. Evitare di attivare moduli o funzionalità non utilizzate da nessuno.
  2. Aggiungere più RAM alla macchina.
  3. Cambiare l'algoritmo di avvicendamento delle pagine in base alle proprie esigenze: OPT, LRU, LFU, FIFO ecc..