GNU/Linux >> Linux Esercitazione >  >> Linux

Forking più rapido di processi di grandi dimensioni su Linux?

Su Linux, puoi usare posix_spawn(2) con il POSIX_SPAWN_USEVFORK flag per evitare l'overhead della copia delle tabelle delle pagine durante il fork da un processo di grandi dimensioni.

Vedere Riduzione al minimo dell'utilizzo della memoria per la creazione di processi secondari dell'applicazione per un buon riassunto di posix_spawn(2) , i suoi vantaggi e alcuni esempi.

Per approfittare di vfork(2) , assicurati di #define _GNU_SOURCE prima del #include <spawn.h> e poi semplicemente posix_spawnattr_setflags(&attr, POSIX_SPAWN_USEVFORK)

Posso confermare che funziona su Debian Lenny e fornisce un'enorme accelerazione durante il fork da un processo di grandi dimensioni.

benchmarking the various spawns over 1000 runs at 100M RSS
                            user     system      total        real
fspawn (fork/exec):     0.100000  15.460000  40.570000 ( 41.366389)
pspawn (posix_spawn):   0.010000   0.010000   0.540000 (  0.970577)

Risultato :stavo per seguire il percorso del sottoprocesso dell'helper generato all'inizio come suggerito da altre risposte qui, ma poi mi sono imbattuto in questo utilizzo dell'enorme supporto della pagina per migliorare le prestazioni del fork.

Dopo averlo provato io stesso utilizzando libhugetlbfs per fare semplicemente in modo che tutti i malloc della mia app allochino pagine enormi, ora sto ottenendo circa 2400 fork/s indipendentemente dalla dimensione del processo (oltre la gamma che mi interessa comunque). Incredibile.


Linux
  1. Avvio di Linux più veloce

  2. Come eliminare i processi in esecuzione in Linux

  3. comando Linux ps

  4. Scopri i processi orfani di Linux

  5. I thread sono implementati come processi su Linux?

Come spostare un gran numero di file in Linux

Come copiare un gran numero di file in Linux

Come Gzip file di grandi dimensioni (100 GB+) più velocemente in Linux

Monitoraggio dei processi su Linux

Comprensione dei processi su Linux

Comando Linux ps – 20 esempi di vita reale