Configurazione di Transparent HugePages

Spiega come rivedere e regolare i parametri HugePages trasparente, inclusi i controlli dello stato, le modifiche alla modalità e le impostazioni di deframmentazione.

La funzione Transparent HugePages (THP) è abilitata per impostazione predefinita in Oracle Linux. Tuttavia, potrebbe essere ancora necessario accedere e configurare THP in base alle esigenze del sistema.

Parametri utilizzati per configurare HugePages trasparenti

Nella tabella seguente vengono descritte le impostazioni dei parametri selezionate che possono essere utilizzate durante la configurazione di Transparent HugePages (THP).

Parametri THP comunemente utilizzati
Parametro Posizione file Opzioni valore
enabled /sys/kernel/mm/transparent_hugepage/enabled Imposta THP e la relativa modalità, che è una delle seguenti:
  • always (impostazione predefinita): THP è abilitato in modalità system-wide.

    In questa impostazione, il kernel, quando possibile, assegna pagine enormi ai processi utilizzando grandi aree di memoria virtuale contigue.

  • madvise: THP è abilitato in modalità per-process.

    In questa impostazione il kernel assegna solo pagine di grandi dimensioni ai processi applicativi che richiedono esplicitamente pagine di grandi dimensioni tramite la chiamata di sistema madvise().

  • disabled: THP disabilitato.
defrag /sys/kernel/mm/transparent_hugepage/defrag
Determina in che modo un'applicazione può recuperare le pagine e deframmentare la memoria quando THP non è disponibile. Nell'elenco seguente vengono descritte le opzioni disponibili.
  • always: un'applicazione che richiede THP si blocca in caso di errore di allocazione e recupera direttamente le pagine e la memoria compatta per ottenere immediatamente un THP.

  • defer: un'applicazione non si blocca ma continua a utilizzare pagine di piccole dimensioni. L'applicazione richiede ai daemon kernel kswapd e kcompactd di recuperare le pagine e compattare la memoria in modo che THP sia disponibile in un secondo momento.
  • defer+madvise:

    Le aree che utilizzano lo stallo di chiamata madvise(MADV_HUGEPAGE) in caso di errore di allocazione e recuperano direttamente le pagine e la memoria compatta per ottenere immediatamente un THP

    Tuttavia, tutte le altre aree richiedono ai daemon del kernel kswapd e kcompactd di recuperare pagine e memoria compatta in modo che THP sia disponibile in un secondo momento.

  • madvise (impostazione predefinita): le aree che utilizzano lo stallo di chiamata madvise(MADV_HUGEPAGE) in caso di errore di allocazione e recuperano direttamente le pagine e la memoria compatta per ottenere immediatamente un THP.

Recupero dello stato corrente di Transparent HugePages

Mostra come controllare la modalità HugePages trasparente leggendo il file di stato sysfs.

Questa procedura mostra come visualizzare lo stato corrente di THP nel file system virtuale sysfs.

Per ulteriori informazioni sull'uso del file system virtuale sysfs, vedere Managing Kernels and System Boot on Oracle Linux.

Per visualizzare l'impostazione corrente di THP è possibile leggere il parametro /sys/kernel/mm/transparent_hugepage/enabled.

Utilizzare il comando cat per visualizzare il valore corrente di THP nel file sysfs.
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

Il valore all'interno delle parentesi quadre rappresenta l'impostazione corrente.

Modifica dello stato corrente di Transparent HugePages

Spiega come cambiare Transparent HugePages tra le modalità disponibili con gli aggiornamenti sysfs.

Questa procedura mostra come modificare lo stato corrente di THP impostando un valore nel file system virtuale sysfs.

Per ulteriori informazioni sull'uso del file system virtuale sysfs, vedere Managing Kernels and System Boot on Oracle Linux.

Per modificare lo stato corrente di THP, è necessario scrivere le impostazioni preferite in /sys/kernel/mm/transparent_hugepage/enabled. L'esempio seguente mostra come impostare lo stato su always.

Nota

I file system virtuali, ad esempio sysfs, forniscono un'interfaccia per i file system agli elementi che non vengono necessariamente memorizzati come file su disco. I file sysfs non interagiscono sempre con i comandi dei file allo stesso modo dei normali file fisici su disco. Nella procedura di esempio, il comando echo utilizzato non sovrascrive /sys/kernel/mm/transparent_hugepage/enabled, come farebbe se fosse utilizzato con un file normale, ma modifica invece l'opzione selezionata.

  1. Controllare lo stato corrente di THP leggendo il parametro enabled.
    sudo cat /sys/kernel/mm/transparent_hugepage/enabled
    always madvise [never]

    Il valore all'interno delle parentesi quadre rappresenta l'impostazione corrente.

  2. Impostare la modalità THP su always.
    echo always | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
  3. Confermare che la modifica è riuscita leggendo il parametro enabled.
    sudo cat /sys/kernel/mm/transparent_hugepage/enabled
    [always] madvise never

Modifica dell'impostazione di deframmentazione di Transparent HugePages

Descrive come ottimizzare il criterio di deframmentazione di Transparent HugePages per bilanciare prestazioni e disponibilità.

Questa procedura mostra come modificare l'impostazione di deframmentazione di THP impostando un valore nel file system virtuale sysfs.

Per ulteriori informazioni sull'uso del file system virtuale sysfs, vedere Managing Kernels and System Boot on Oracle Linux.

Per modificare l'impostazione di deframmentazione THP è necessario scrivere la nuova impostazione su /sys/kernel/mm/transparent_hugepage/defrag.

Nota

L'impostazione defrag migliore varia da sistema a sistema. Il recupero delle pagine e la compattazione della memoria possono aumentare il numero di pagine THP disponibili. Tuttavia, il processo utilizza anche il tempo CPU. Pertanto, è necessario trovare il giusto equilibrio per un sistema specifico.

L'esempio seguente mostra come impostare l'impostazione defrag su madvise.

  1. Controllare il valore corrente del parametro defrag:
    sudo cat /sys/kernel/mm/transparent_hugepage/defrag
    [always] defer defer+madvise madvise never

    Il valore tra parentesi quadre rappresenta l'impostazione corrente.

  2. Impostare il parametro /sys/kernel/mm/transparent_hugepage/defrag su madvise:
    echo madvise | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
  3. Confermare la modifica leggendo il parametro defrag.
    sudo cat /sys/kernel/mm/transparent_hugepage/defrag
    always defer defer+madvise [madvise] never