Ricerca nel sito web

Come limitare il tempo e l'utilizzo della memoria dei processi in Linux


Lo script timeout è un utile programma di monitoraggio delle risorse per limitare il consumo di tempo e memoria dei processi in Linux. Consente di eseguire programmi sotto controllo e di imporre limiti di tempo e memoria, terminando il programma in caso di violazione di questi parametri.

Non è necessaria alcuna installazione, è sufficiente eseguire un comando insieme ai suoi argomenti utilizzando il programma timeout e monitorerà la memoria del comando e il consumo di tempo, interrompendo il processo se esce dai limiti e avvisandoti con l'impostazione predefinita Messaggio.

Per eseguire questo script, devi avere Perl 5 installato sul tuo sistema Linux e il filesystem /proc montato.

Per verificare la versione installata di Perl sul tuo sistema Linux, esegui il comando seguente.

perl -v

Successivamente, clona il repository timeout sul tuo sistema utilizzando il comando git, quindi spostati nel repository locale utilizzando il comando cd e invocalo come un normale comando Linux.

cd ~/bin
git clone https://github.com/pshved/timeout.git
cd timeout

Diamo ora un'occhiata a come funziona lo script timeout.

Limitazione della memoria di base (100 MB di memoria virtuale):

Questo primo esempio mostra come limitare l'utilizzo della memoria di un processo a 100M di memoria virtuale, utilizzando il flag -m. L'unità predefinita per la memoria è kilobyte.

Qui, il comando stress-ng esegue 4 fattori di stress della memoria virtuale (VMS) che si combinano per utilizzare il 40% della memoria disponibile per 10 minuti. Pertanto ogni fattore di stress utilizza il 10% della memoria disponibile.

./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Considerando l'output del comando timeout riportato sopra, i processi di lavoro stress-ng sono stati terminati dopo soli 1,16 secondi. Questo perché il consumo combinato di memoria del VMS (438660 kilobyte) è maggiore dell'utilizzo consentito della memoria virtuale per stress-ng e il suo figlio processi.

Limitazione temporale di base del processo:

Per abilitare la limitazione temporale del processo, utilizzare il flag -t come mostrato.

./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

Nell'esempio sopra, quando il tempo stress-ng CPU+SYS supera il valore definito di 4, i processi di lavoro vengono terminati.

Limitare sia il tempo che la memoria del processo

Puoi anche limitare sia la memoria che il tempo contemporaneamente come segue.

./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Timeout supporta anche alcune opzioni avanzate come --detect-hangups, che abilita il rilevamento dei blocchi.

./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Puoi monitorare il limite di memoria RSS (resident set size) utilizzando l'opzione --memlimit-rss o -s .

./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

Inoltre, per restituire il codice di uscita o il segnale+128 di un processo, utilizzare l'opzione --confess o -c come mostrato.

./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

Per ulteriori informazioni ed esempi di utilizzo, vedere il repository Github timeout: https://github.com/pshved/timeout.

Potresti trovare ugualmente utili anche i seguenti articoli correlati:

  1. Come trovare i primi 15 processi in base all'utilizzo della memoria con "top" in modalità batch
  2. CPUTool: limita e controlla l'utilizzo della CPU di qualsiasi processo in Linux
  3. Come limitare l'utilizzo della CPU di un processo in Linux con lo strumento CPULimit

Lo script timeout è un semplice programma di monitoraggio delle risorse che sostanzialmente limita il tempo e il consumo di memoria dei processi in Linux. Puoi fornirci feedback sullo script timeout tramite il modulo di commento qui sotto.