IngleseFranceseSpagnolo

Ad


Favicon di OnWorks

makepp_sandboxes - Online nel cloud

Esegui makepp_sandboxes nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando makepp_sandboxes che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

PROGRAMMA:

NOME


makepp_sandboxes -- Come partizionare una build makepp

DESCRIZIONE


D: --fare-costruire,
--non costruire,
--non leggere,
--leggere, I: --in sandbox,
--all'interno della sandbox, O: --fuori dalla sandbox, S: --sabbia,
--sandbox-avverti,
--avvertimento sandbox, V: --sandbox-virtuale

Ci sono un paio di ragioni per cui potresti voler partizionare l'albero dei file per un makepp
costruire:

1. Se sai che la maggior parte dell'albero non è interessata da alcuna modifica apportata a
file sorgente dalla build precedente, quindi puoi dire a makepp di assumere che i file
in quelle parti dell'albero sono già aggiornate, il che significa nemmeno implicitamente
caricare i loro makefile, per non parlare del calcolo e del controllo delle loro dipendenze. (Nota
che i makefile esplicitamente caricati sono ancora caricati, comunque.)

2. Se hai più processi makepp che accedono allo stesso albero, allora vuoi aumentare
un errore se rilevi che due processi simultanei stanno scrivendo la stessa parte del
albero, o che un processo sta leggendo una parte dell'albero che è un processo concorrente
scrivere. Ad ogni modo, hai una condizione di gara in cui l'ordine relativo degli eventi
in due processi simultanei (che non possono essere garantiti) può influenzare il risultato.

Makepp dispone di strutture di sandboxing che risolvono entrambi i problemi.

sandboxing Opzioni
Le seguenti opzioni di makepp possono essere usate per impostare le proprietà di sandbox del sottoalbero
dato da sentiero e tutti i suoi file e potenziali file:

--non-costruire sentiero
--fai-costruire sentiero
Imposta o reimposta la proprietà "dont-build". Si presume che qualsiasi file con questa proprietà impostata sia
essere già aggiornato e non verranno eseguiti controlli di build. L'impostazione predefinita è ripristinata
(cioè "do-build"), tranne se hai un "RootMakeppfile", nel qual caso tutto
al di fuori del suo ID sottoalbero "dont-build".

--sabbia sentiero
--nella sandbox sentiero
--all'interno della sandbox sentiero
--fuori dalla sandbox sentiero
Imposta o reimposta la proprietà "in-sandbox". Viene generato un errore se makepp lo farebbe diversamente
scrivi un file con questa proprietà ripristinata. I controlli di costruzione vengono ancora eseguiti, a meno che il
Viene impostata anche la proprietà "dont-build". Il valore predefinito è impostato (cioè "in-sandbox"), a meno che
ci sono alcuni --sabbia opzioni, nel qual caso l'impostazione predefinita per tutti gli altri file è
reset (cioè "out-of-sandbox").

--sandbox-avviso
--avvertimento sandbox
Eseguire il downgrade delle violazioni di "in-sandbox" e "non leggere" in avvisi anziché errori.
Questo è utile quando ci sono centinaia di violazioni, in modo da poterle raccogliere tutte
loro in un'unica esecuzione e intraprendere le azioni correttive appropriate. Altrimenti vedi solo
una violazione per invocazione di makepp e non sai quanti ne rimangono fino a quando
sono tutti corretti.

--non-leggere sentiero
--do-leggi sentiero
Imposta o reimposta la proprietà "non leggere". Viene generato un errore se makepp lo farebbe diversamente
leggere un file con questa proprietà impostata. Il valore predefinito è resettato (cioè "do-read").

--sandbox-virtuale
Non riscrivere le informazioni di build di file che non sono stati creati da questo processo makepp. Questo
è utile quando si eseguono processi makepp simultanei con sandbox sovrapposti e tu
sono certi che nessun processo tenterà di costruire lo stesso target. Makepp lo farà
quindi astenersi dal memorizzare nella cache ulteriori informazioni sui file che legge, perché
potrebbero esserci altri lettori simultanei.

Ognuna di queste 3 proprietà si applica all'intero sottoalbero, inclusi i file che non lo fanno
eppure esistono. I percorsi più specifici sovrascrivono i percorsi meno specifici. Un percorso specificato può essere an
singolo file, anche se il file non esiste ancora.

Se una proprietà è impostata e reimpostata sullo stesso identico percorso, l'opzione che appare
più a destra sulla riga di comando ha la precedenza.

sandboxing per Accelerazione
Se vuoi evitare che makepp perda tempo a elaborare file che sai già essere
aggiornati (in particolare, file generati da uno strumento di compilazione diverso da makepp),
poi --non-costruire è l'opzione che fa per te.

Il caso di gran lunga più comune per una tale ottimizzazione è che tu sappia che tutto no
in corrispondenza o al di sotto della directory di partenza è già aggiornato. Questo può essere comunicato a
makepp usando "--non-costruire /. --fai-costruire .".

sandboxing per concorrente Processi
Una tecnica che può ridurre la latenza di compilazione è far funzionare più processi makepp
sullo stesso albero. Questo è un po' più difficile da gestire rispetto all'utilizzo del -j opzione,
ma può anche essere sostanzialmente più efficace perché:

· Con il sandboxing, i processi possono essere eseguiti su più host, ad esempio tramite un lavoro
sistema di code. Aumentando il -j limite alla fine esaurisce le risorse della CPU di a
singolo host e può persino rallentare la compilazione a causa di un eccessivo fork del processo.

· -j attualmente non parallelizza alcune delle attività che richiedono tempo di makepp come il caricamento
makefile, scansione, creazione di dipendenze implicite durante la scansione e il controllo
dipendenze.

Il rischio più grande con questo approccio è che la build può diventare non deterministica se
processi che potrebbero essere concorrenti interagiscono tra loro. Questo porta a costruire sistemi
che producono risultati errati sporadicamente e senza un meccanismo semplice per determinarne il motivo
succede.

Per affrontare questo rischio, è consigliabile partizionare l'albero tra processi concorrenti
tale che se un processo accede al filesystem in modo improprio, allora un errore è
immediatamente sollevata in modo deterministico. Normalmente, questo si ottiene assegnando a ciascuno
processo simultaneo una "sandbox" in cui è consentito scrivere, dove le sandbox di no
due processi concorrenti possono sovrapporsi.

Inoltre, ogni processo contrassegna le sandbox di qualsiasi altro processo eventualmente simultaneo
come "non leggere". Se un processo legge un file che un altro processo simultaneo è responsabile
per la scrittura (e che quindi potrebbe non essere ancora scritta), allora viene sollevato un errore
immediatamente.

sandboxing per Sequenziale Processi
Quando la build è partizionata per processi makepp simultanei, di solito c'è anche a
relazione sequenziale tra varie coppie di processi. Ad esempio, potrebbe esserci un
dozzina di processi di compilazione simultanei, seguiti da un singolo processo di collegamento che non può iniziare
fino al completamento di tutti i processi di compilazione. Tali relazioni sequenziali devono essere
imposto da qualunque meccanismo stia orchestrando i vari processi makepp (ad esempio,
il sistema di coda dei lavori).

Quando i processi hanno una relazione sequenziale nota, normalmente non è necessario sollevare un
errore quando accedono alla stessa parte dell'albero, perché il risultato è comunque
deterministico.

Tuttavia, è generalmente utile specificare --non-costruire opzioni per i dipendenti
processo (il processo di collegamento nel nostro esempio) che lo notifica delle aree che hanno già
stato aggiornato dai processi prerequisiti (i lavori di compilazione nel nostro esempio). In questo
modo, evitiamo la maggior parte del lavoro non necessario di obiettivi di costruzione nulli che erano solo
aggiornato.

Usa makepp_sandbox online utilizzando i servizi onworks.net


Server e workstation gratuiti

Scarica app per Windows e Linux

Comandi Linux

Ad