GNU/Linux >> Linux Esercitazione >  >> Linux

Informazioni su Mem e Vmem?

Sto lavorando con una macchina cluster in esecuzione su Linux.

Ho uno script di shell che usa mpirun per inviare i miei lavori alla macchina del cluster. Nello stesso script, posso scegliere il numero di nodi che verranno assegnati al lavoro. Fin qui tutto bene.

Il mio problema sorge dopo:quando invio alcuni lavori, tutto funziona bene, tuttavia, quando riempio la capacità dei nodi, alcuni dei lavori inviati non verranno completati. Di conseguenza, sospetto che la memoria disponibile sul cluster non sia sufficiente per gestire tutti i miei lavori contemporaneamente.

Questo è il motivo per cui voglio controllare l'utilizzo della memoria di ogni lavoro nel tempo, quindi utilizzo il qstat -f comando, ma mostra molte cose e la maggior parte di esse non riesco a capirle.

Quindi ecco la mia domanda: Nell'output di esempio di qstat -f comando sotto, possiamo vedere due tipi di memoria:mem e vmem . Vorrei sapere qual è la differenza tra questi due e qual è la quantità reale di memoria utilizzata?

resources_used.cput = 00:21:04
resources_used.mem = 2099860kb
resources_used.vmem = 40505676kb
resources_used.walltime = 00:21:08

Inoltre, apprezzerei qualsiasi riferimento in cui l'output di questo comando sia dettagliato. Ho provato man qstat ma non entra nei dettagli di ogni riga restituita.

Risposta accettata:

Giusto per rimuovere questo dall'elenco delle domande aperte e per dare una risposta semplificata (il commento di Goldilocks sopra e la documentazione di qstat presuppongono una maggiore familiarità con i sistemi):

La risposta dipende da cosa intendi esattamente con "la quantità reale di memoria utilizzata" (e più avanti nella tua risposta al commento:"lo spazio RAM utilizzato").

"mem" è la quantità di RAM della macchina utilizzata dal lavoro, più precisamente il picco di utilizzo osservato. Questo non è necessariamente il vero picco di utilizzo poiché il sistema di monitoraggio del lavoro sul tuo cluster potrebbe controllare l'utilizzo solo ogni tanto. Il tuo lavoro potrebbe tentare di utilizzare molta più memoria di quella riportata qui, ma il sistema non fornisce più memoria al lavoro, ad esempio perché non c'è più memoria o altre attività in esecuzione sulla stessa macchina competono per la memoria. Inoltre, la cache del file system può essere un concorrente per la RAM se c'è un'attività pesante sui file (I/O).

Correlati:Linux:quale applicazione utilizzare per un calendario?

"vmem" è una quantità correlata al modo in cui i moderni processori gestiscono la memoria. Ancora una volta è un valore di picco. Questo numero può includere varie cose a cui i processi possono accedere, come file mappati in memoria e spazio di scambio. Include lo spazio che un processo ha allocato ma mai utilizzato e può quindi essere abbastanza grande. Se il numero è basso, ti consente di concludere che la memoria non è il problema, ma se è alta, non lo sai e devi indagare ulteriormente. Alcune applicazioni allocano molta memoria virtuale anche se necessitano solo di una frazione.


Linux
  1. C Tutorial di programmazione 4 - Variabili e memoria

  2. 10 fatti interessanti e divertenti su Linux

  3. Come eliminare i buffer di memoria e la cache in Linux

  4. C'è un nuovo hub per i lavori open source e non si tratta solo di sviluppatori e amministratori

  5. qstat e nomi di lavoro lunghi

Come installare e utilizzare lo strumento forense della memoria Volatility

Come aumentare la memoria e la CPU sulla macchina Vagrant

Monitoraggio efficace della larghezza di banda, della CPU e della memoria della rete

10 curiosità su Linus Torvalds e Linux

Crea ed elimina un lavoro Cron

Limite di memoria e limite della CPU nel contenitore Docker