WORKERTHREAD
L'impostazione di configurazione WORKERTHREADS consente di aumentare o ridurre il numero di thread disponibili nel pool di thread per le operazioni parallele di Essbase.
Sintassi
WORKERTHREADS [appname] value-
appname (facoltativo) - Nome applicazione. Se non si specifica un'applicazione, il numero specificato di thread verrà applicato a tutte le applicazioni.
-
value: il numero di thread da rendere disponibili nel pool. Il valore minimo è 5. Il valore massimo è 2048. Il valore predefinito, se l'impostazione WORKERTHREADS non è presente, è la metà del valore SERVERTHREADS.
Descrizione
In passato, i thread di Essbase sono stati creati in modo dinamico per operazioni parallele quali il calcolo parallelo, il caricamento di dati paralleli e la ristrutturazione parallela. Tuttavia, a partire dalla Release 11.1.2.4.000, le seguenti operazioni parallele non creano dinamicamente i thread, ma utilizzano un determinato numero di thread da un pool di thread creato in precedenza:
-
Calcolo parallelo, con CALCPARALLEL o FIXPARALLEL
-
Caricamento dati parallelo, per cubi di storage di aggregazione e storage a blocchi
-
Esportazione parallela, per cubi di memorizzazione a blocchi
-
Ristrutturazione parallela
Linee guida per le operazioni con thread
Oracle consiglia le impostazioni riportate di seguito a seconda dell'architettura di sistema in uso.
Tabella 2-1 Linee guida per le operazioni filettate
| Parametro | 64 bit (16 core) | 64 bit (32 core) | 64 bit (16 core) e due cubi | Oracle Exalytics In-Memory Machine, 40 core, X2-4 | Oracle Exalytics In-Memory Machine, SPARC 128 core | Oracle Exalytics In-Memory Machine, 60 core, X4-4 |
|---|---|---|---|---|---|---|
| SERVERTHREAD | 100Foot 1 | 100Foot 1 | 100Foot 1 | 100Foot 1 | 200Foot 1 | 120Foot 1 |
| WORKERTHREAD | 50 | 50 | 50 | 50 | 100 | 60 |
| THREAD AGENTE | 30Foot 1 | 30Foot 1 | 30Foot 1 | 30Foot 1 | 30Foot 1 | 30Foot 1 |
| DISTRIBUZIONE THREAD | 2 | 2 | 2 | 2 Foot 2 | 2 Foot 2 | 2 Foot 2 |
| DLTHREADSWRITE | 2Foot 3 | 2Foot 3 | 2Foot 3 | 2Foot 3 | 2Foot 3 | 2Foot 3 |
| EXPORTTHREADSFoot 4 | 8 | 8 | 8 | 40 | 40 | 40 |
| FILETTI DI RISTRUTTURAZIONE | 4 | 4 | 4 | 8 | 8 | 8 |
| CALCPARALLEL massimoFoot 5 | 8 | 8 | 8 | 32Foot 6 | 32 | 32Foot 6 |
| FIXPARALLEL massimoFoot 7 | 8 | 8 | 8 | 32Foot 6 | 32 | 32Foot 6 |
Nota a piè di pagina 1
Potrebbe essere necessario un adeguamento in base al partizionamento e alla concorrenza
Nota a piè di pagina 2
24 sull'archiviazione aggregata
Nota a piè di pagina 3
1 se si utilizza il carico .txt
Nota a piè di pagina 4
Oltre a impostare EXPORTTHREADS, è necessario specificare più file di dati nell'esportazione dei dati
Nota a piè di pagina 5
SET CALCPARALLEL deve essere impostato nello script di calcolo
Nota a piè di pagina 6
16 se tre o più cubi eseguono calcoli concorrenti
Nota a piè di pagina 7
FIXPARALLEL deve essere impostato nello script di calcolo
Note
-
WORKERTHREADS è un'impostazione di configurazione che consente di modificare il numero di thread disponibili nel pool di thread. Se questa soglia di disponibilità viene impostata in modo esplicito nella configurazione o viene lasciata al valore predefinito
SERVERTHREADS/2, se l'impostazione effettiva è meno di quella richiesta da un'operazione parallela richiesta, Essbase riduce implicitamente il parallelismo dell'operazione richiesta in modo che rientri nei parametri del pool di thread.Ad esempio, prendere in considerazione il caricamento dei dati:
Il concetto di pipeline è rilevante per i caricamenti di dati di Essbase. Una pipeline è una serie di elementi di elaborazione dati in memoria che possono essere eseguiti in serie o in parallelo. Un'operazione di caricamento dati di Essbase utilizza una pipeline costituita da 5 fasi. Pertanto, tutte le operazioni di caricamento dati richiedono un minimo di 5 thread.
Se si utilizza DLTHREADSPREPARE o DLTHREADSWRITE, aumenta il numero minimo di thread di caricamento dati necessari. Ad esempio, se si imposta DLTHREADSPREPARE su 4 e DLTHREADSWRITE su 2, sono necessari 9 thread (il minimo 5, più l'aumento di 4).
Se il numero di thread richiesto per tutte le pipeline è 9, come nel caso precedente, ma WORKERTHREADS è impostato solo su 8, Essbase imposta in modo implicito DLTHREADSPREPARE e DLTHREADSWRITE su 1 e il caricamento dei dati viene eseguito con un requisito di thread totale pari a 5 (minimo e predefinito).
-
Analogamente, se si esegue un calcolo parallelo, un'esportazione parallela o una ristrutturazione parallela, queste operazioni vengono eseguite con parallelismo che non supera il numero di thread disponibili.
Ad esempio:
-
Se WORKERTHREADS è impostato su 8 e si tenta di eseguire CALCPARALLEL 16, il calcolo parallelo viene eseguito come CALCPARALLEL 8.
-
Se WORKERTHREADS è impostato su 5 e si tenta EXPORTTHREADS 12, l'esportazione parallela viene eseguita come EXPORTTHREADS 5.
-
Se WORKERTHREADS è impostato su 16 e si tenta RESTRUCTURETHREADS 32, la ristrutturazione parallela viene eseguita come RESTRUCTURETHREADS 16.
-
-
Se si eseguono operazioni parallele concorrenti sulla stessa applicazione, il parallelismo totale è limitato dal numero di thread nel pool di thread. Ad esempio, se si imposta WORKERTHREADS su 16 ed si eseguono due richieste concorrenti di CALCPARALLEL 16, le due richieste di calcolo condividono i 16 thread. I calcoli verranno eseguiti utilizzando fino a 16 thread, ma poiché condividono il pool di thread di 16, sono in esecuzione a quasi la metà della capacità richiesta.
-
Se all'interno di un'applicazione sono presenti più cubi, Oracle consiglia di impostare WORKERTHREADS leggermente più in alto dei thread paralleli necessari per un cubo. Ad esempio, se WORKERTHREADS è impostato su 16 e il numero di CPU nel sistema è 16, è necessario impostare il valore CALCPARALLEL su un valore inferiore a 16.
-
Se i cubi su server diversi fanno riferimento l'uno all'altro utilizzando @XREF o @XWRITE, assicurarsi che il cubo di origine del riferimento incrociato abbia un numero maggiore di SERVERTHREADS rispetto ai thread di calcolo paralleli (CALCPARALLEL o FIXPARALLEL).
-
Con il pool di thread per le operazioni parallele, è necessario aumentare le risorse per avviare un'applicazione Essbase. Se si verifica l'errore
Unable to Request Server Threaddurante l'avvio, regolare le impostazioni del sistema operativo che controllano il numero di thread per processo e il numero totale di thread nel sistema (ad esempio, su Linux, sintonizzare nproc utilizzando ulimit).
Esempio
WORKERTHREADS Sample 32Vedere anche:
FIXPARALLEL...ENDFIXPARALLEL (blocco di comandi di calcolo)