Configurazione delle pagine HugeTLB
Descrive come richiedere pagine HugeTLB con parametri di boot del kernel, impostazioni sysfs e procedure basate su NUMA.
È possibile configurare le pagine HugeTLB utilizzando i seguenti tipi di parametri:
- Parametri di boot del kernel
- Parametri di configurazione basati su file
Le sezioni seguenti descrivono i parametri in modo più dettagliato.
- Parametri di avvio del kernel per le pagine HugeTLB
- Parametri di configurazione basati su file per le pagine HugeTLB
- Configurazione delle pagine HugeTLB mediante i parametri kernel in fase di boot
- Configurazione delle pagine HugeTLB mediante i parametri specifici dei nodi NUMA nelle prime fasi del processo di boot
- Configurazione delle pagine HugeTLB per un nodo NUMA specifico in runtime
Parametri di avvio del kernel per le pagine HugeTLB
Le opzioni di boot del kernel consentono di specificare valori quali la dimensione e il numero di pagine da riservare nel pool del kernel. L'utilizzo dei parametri di boot del kernel è il metodo più affidabile per richiedere pagine di grandi dimensioni.
| Parametri | Scopo | Opzione valore accettato nell'architettura x86_64 |
|---|---|---|
default_hugepagesz | Definisce la dimensione predefinita delle pagine di grandi dimensioni persistenti configurate nel kernel in fase di boot. | 2M (impostazione predefinita), 1G |
hugepagesz e hugepages | Il parametro di dimensione
Se sono supportate più dimensioni di pagine di grandi dimensioni, la coppia " |
|
In un sistema NUMA, le pagine riservate con le opzioni della riga di comando del kernel, come mostrato nella tabella precedente, sono divise equamente tra i nodi NUMA.
Se il requisito è di avere un numero diverso di pagine su ogni nodo, è possibile utilizzare i parametri HugeTLB basati su file nel file system sysfs. Vedere Parametri di configurazione basati su file per le pagine HugeTLB e Configurazione delle pagine HugeTLB mediante i parametri specifici dei nodi NUMA nelle prime fasi del processo di boot.
Parametri di configurazione basati su file per le pagine HugeTLB
Oltre ad accedere alle impostazioni in fase di esecuzione, è anche possibile inizializzare i parametri all'inizio del processo di avvio, ad esempio creando uno script bash di avvio o impostando i parametri in uno script rc init locale.
nr_hugepages. Questo parametro definisce il numero di pagine in un pool, tra cui:- File
/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepagesper il numero di pagine nel pool di pagine da 2 MB. - File
/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepagesper il numero di pagine nel pool di pagine da 1 GB.
Nella tabella seguente vengono descritti i parametri di configurazione HugeTLB comunemente utilizzati e le istanze di file multiple che è possibile trovare per ciascun parametro.
| Parametro | Scopo | Percorsi file per istanze diverse |
|---|---|---|
nr_hugepages
|
|
I formati del percorso file per le diverse istanze di nr_hugepages sono i seguenti:
|
nr_overcommit_hugepages
|
|
I formati del percorso file per le diverse istanze di nr_overcommit_hugepages sono i seguenti:
Il parametro |
free_hugepages
|
|
I formati del percorso file per le diverse istanze di
|
surplus_hugepages
|
|
I formati del percorso file per le diverse istanze di
|
Le sezioni seguenti mostrano le diramazioni di file in cui vengono memorizzate diverse istanze dei parametri HugeTLB:
/proc/sys/vm
Tutti i sistemi che supportano pagine enormi statiche contengono file di parametri HugeTLB in /proc/sys/vm.
In molti sistemi, inclusi molti database server Oracle, il file system procfs è il set di parametri principale utilizzato.
Il parametro sysctl vm.nr_hugepages comunemente inizializzato negli script che richiedono pagine di grandi dimensioni scrive anche nel file procfs /proc/sys/vm/nr_hugepages.
Di seguito sono riportate le cartelle di esempio nella diramazione /proc/sys/vm.
├── ...
├── ...
├── nr_hugepages
├── ...
├── nr_overcommit_hugepages
├── ...
├── ...
/sys/kernel/mm/hugepages/
I sistemi che supportano più pool di dimensioni contengono file di parametri HugeTLB in cartelle specifiche per dimensioni in /sys/kernel/mm/hugepages/.
Di seguito sono riportate le cartelle di esempio nella diramazione /sys/kernel/mm/hugepages/.
└── hugepages-2048kB
├── free_hugepages
├── nr_hugepages
├── ...
├── nr_overcommit_hugepages
├── ...
└── surplus_hugepages
└── hugepages-1048576kB
├── free_hugepages
├── nr_hugepages
├── ...
├── nr_overcommit_hugepages
├── ...
└── surplus_hugepages
/sys/devices/system/node/
Solo i sistemi NUMA contengono file di parametri HugeTLB in /sys/devices/system/node/.
Di seguito sono riportate le cartelle di esempio nella diramazione /sys/devices/system/node.
├─ ...
├── node0
│ ├── ...
│ ├──hugepages
│ hugepages-2048kB
│ ├── free_hugepages
│ ├── nr_hugepages
│ └── surplus_hugepages
│
│ hugepages-1048576kB
│ ├── free_hugepages
│ ├── nr_hugepages
│ └── surplus_hugepages
├── node1
├── ...
├──hugepages
hugepages-2048kB
├── free_hugepages
├── nr_hugepages
└── surplus_hugepages
hugepages-1048576kB
├── free_hugepages
├── nr_hugepages
└── surplus_hugepages
Configurazione delle pagine HugeTLB mediante i parametri kernel in fase di boot
Utilizzare il comando grubby per configurare le opzioni della riga di comando del kernel utilizzate al momento del boot per impostare le pagine HugeTLB.
- Una dimensione di pagina predefinita di 1 GB.
- Un pool con quattro pagine HugeTLB di 1 GB di dimensione.
- Un pool di 1500 pagine HugeTLB di 2 MB di dimensione.
Prima di iniziare la procedura riportata di seguito, assicurarsi di disporre dei privilegi di amministrazione necessari.
Per ulteriori informazioni sulla configurazione delle opzioni della riga di comando del kernel e di GRUB 2, vedere Managing Kernels and System Boot on Oracle Linux.
Configurazione delle pagine HugeTLB mediante i parametri specifici dei nodi NUMA nelle prime fasi del processo di boot
Fornisce un flusso di lavoro basato su systemd per riservare diverse allocazioni HugeTLB su nodi NUMA specifici durante l'avvio.
Il modo preciso per richiedere pagine enormi al momento dell'avvio dipende dalle esigenze del sistema. La procedura riportata di seguito fornisce alcune indicazioni ma non è esclusiva di altri approcci alla configurazione delle opzioni di boot.
Le pagine enormi richieste utilizzando i parametri di boot-time del kernel, come mostrato nell'esempio precedente, sono divise equamente tra i nodi NUMA.
Tuttavia, potrebbe essere necessario richiedere un numero diverso di pagine di grandi dimensioni per nodi specifici impostando i valori di configurazione in un percorso di file specifico del nodo. Il percorso del file viene definito come indicato di seguito.
/sys/devices/system/node/node{0,1,2...n}/hugepages/hugepages-<SIZE>kB/
La procedura seguente descrive come riservare 299 pagine di 2 MB di dimensione sul nodo 0 e 300 pagine di 2 MB di dimensione sul nodo 1 su un sistema NUMA. Questo approccio utilizza un servizio systemd personalizzato per eseguire uno script della shell dopo il boot, per impostare i parametri sysfs richiesti.
Prima di iniziare la procedura riportata di seguito, assicurarsi di disporre dei privilegi di amministrazione necessari per tutti i passi.
Per ulteriori informazioni sull'uso delle unità systemd, vedere Gestione del sistema con systemd.
Configurazione delle pagine HugeTLB per un nodo NUMA specifico in runtime
In alcuni casi, potrebbe essere necessario effettuare una richiesta per pagine di grandi dimensioni in runtime.
La procedura riportata di seguito mostra come richiedere 20 pagine HugeTLB di dimensioni 2048 kB per node2 in fase di esecuzione.
Prima di iniziare, assicurarsi di disporre dei privilegi di amministrazione necessari per tutti i passi. La procedura utilizza il comando numastat, disponibile nel pacchetto numactl. Potrebbe essere necessario installare questo pacchetto in anticipo.