Come limitare il tempo e l’uso della memoria dei processi in Linux

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

Non è necessaria alcuna installazione, basta eseguire un comando insieme ai suoi argomenti utilizzando il programma timeout e questo monitorerà il consumo di memoria e tempo del comando, interrompendo il processo se supera i limiti e notificandoti con il messaggio predefinito.

Per eseguire questo script, è necessario avere Perl 5 installato sul proprio sistema Linux e il filesystem /proc montato.

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

$ perl -v
Check Perl Version in Linux

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 comando Linux usuale.

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

Ora vediamo come funziona lo script timeout.Limitazione di memoria di base (100M di memoria virtuale):

Limite di Memoria Base (100M di Memoria Virtuale):

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

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

$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Limiting Memory of Process

Tenendo conto dell’output del comando timeout sopra, i processi lavoratore stress-ng sono stati terminati dopo solo 1,16 secondi. Questo perché il consumo di memoria combinato dei VMS (438660 kilobyte) è maggiore del consumo di memoria virtuale consentito per stress-ng e i suoi processi figlio.

Limite di Tempo Base del Processo:

Per abilitare il limite di tempo del processo, utilizzare la bandiera -t come mostrato.

$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
Time Limiting of Process

Nell’esempio sopra, quando il stress-ng CPU+SYS supera il valore definito di 4, i processi lavoratore vengono uccisi.

Limite sia di Tempo che di Memoria del Processo

È inoltre possibile limitare sia memoria che 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 la rilevazione di arresti anomali.

$ ./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 ottenere il codice di uscita o il segnale+128 di un processo, utilizza l’opzione --confess o -c come mostrato.

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

Per ulteriori informazioni e esempi di utilizzo, consulta il repository di timeout su Github: https://github.com/pshved/timeout.

Potresti trovare utili anche i seguenti articoli correlati:

  1. Come Trovare i 15 Processi Principali per Utilizzo di 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 CPULimit Tool

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

Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/