rtprio
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher)
priority
the priority to run user process with (negative values boost process priority)
Perché sono diversi?
Esistono diverse classi di programmatori di processo su Linux. Quello di default (CFQ) sostanzialmente fornisce una quantità uguale di intervalli di tempo a ciascun processo che desidera eseguire e mette in coda le attività eseguibili in modo tale che tutti aspettino in media un uguale periodo di tempo per il loro turno. Esistono alcune eccezioni a questa regola, ma questa è l'idea di base.
Un'altra classe di scheduler è lo scheduler in tempo reale. Il tempo reale è un po 'diverso, attività piuttosto eseguibili in coda in uno schema di accodamento equo, il processo in tempo reale otterrà il tempo della CPU non appena è necessario dal processo, questo sfrutta un processo in esecuzione dalla CPU al fine di fare spazio per il' tempo reale ' processi.
Quali valori possono assumere?
Ciò che la "priorità" fa è alterare la gentilezza della processione in modo che al momento dell'accesso il processo principale inizi con una certa gentilezza, anche i processi figlio generati iniziano con la stessa gentilezza.
Ciò ha l'effetto di rendere più probabile la pianificazione in favore di altri processi concorrenti e l'esperienza dell'utente può essere resa più reattiva / interattiva per i valori di gentilezza inferiori e meno reattiva / interattiva se la gentilezza è aumentata.
Potrebbe essere importante per gli utenti con accesso normale avere una priorità inferiore rispetto ai demoni utilizzabili, ad esempio, oppure root avere una priorità sull'accesso rispetto a tutto il resto.
Per quanto riguarda il tempo reale, la contesa viene gestita con il campo "rtprio". Se hai due attività in tempo reale che vogliono eseguire entrambe, il valore 'rtprio' viene utilizzato per determinare quale dei processi scegliere prima per priorità. Un rtprio più elevato produce attività con priorità più elevata.
Impostandolo in limits.conf, è possibile impostare le attività in tempo reale su una particolare banda prioritaria senza la necessità di root per impostare il valore. Ciò non ha alcun effetto sulle attività non impostate per essere eseguite utilizzando uno scheduler in tempo reale.
Il valore "bello" dovrebbe fare lo stesso di "rtprio" ma per la pianificazione CFQ standard. Non l'ho mai provato però. Imposta il processo iniziale generato quando PAM sta impostando questi limiti su quel bel vaule, un utente normale può quindi passare a quel bel livello o superiore senza bisogno di root per impostarli. Se non si rinnova esplicitamente, significa che tutti i processi generati da una shell da quel login (per esempio) erediteranno il bel valore impostato in limits.conf dal processo genitore che era stato inizialmente creato.
Quali sono le impostazioni predefinite?
I limiti 'predefiniti': tecnicamente sono tutti impostati su ciò che è pid 1, a meno che non sia esplicitamente impostato, i limiti delle risorse sono ereditati dal processo padre, se non sono stati definiti o sovrascritti limiti da nessuna parte, allora l'ereditarietà init
è quella predefinita.
Altri valori
data
maximum data size (KB)
Quando un processo viene inizializzato, alloca parte della memoria nota come "segmento di dati" quando il processo viene copiato in memoria, qui è dove si trova lo spazio per i globi, forse alcuni altri dati inizializzati e la memoria allocata dall'heap. Il limite controlla la quantità massima assegnata che un processo può richiedere.
È improbabile che tu abbia mai raggiunto questo limite perché malloc () usa raramente il segmento di dati per archiviare i dati.
fsize
maximum filesize (KB)
Questo imposta letteralmente solo la dimensione massima su cui un file può essere scritto come con quell'utente.
memlock
maximum locked-in-memory address space (KB)
Quasi tutta la memoria acquisita da un'applicazione è "evictable". Questo può essere scambiato. La memoria bloccata non è mai sostituibile e rimane residente. Questo valore è rigorosamente controllato perché può essere abusato dalle persone per far morire di fame un sistema di memoria e causare lo scambio. In genere è utile con le applicazioni di sicurezza (che non vogliono mai scambiare le proprie pagine e diventare leggibili dalla partizione di swap).
cpu
maximum CPU time (minutes)
Ciò rappresenta il tempo totale che un processo può impiegare su una CPU. Un processo che supera questo valore viene interrotto. Si noti che NON corrisponde al tempo trascorso dall'avvio del processo. Per esempio, un limite di cputime di 1 minuto richiederebbe 1 minuto per essere consumato se il processo avesse un utilizzo della CPU del 100%, ma 2 minuti per consumarlo se il processo usasse un utilizzo del 50%.
Cosa succede quando viene superato il CPU?
Al processo viene inviato un segnale di SIGXCPU
interruzione che termina il processo. Questo può quindi essere catturato dal processo padre e gestito lì.
Solo un processo o l'intero utente viene escluso dall'uso della CPU?
Quasi tutti i limiti indicati sono gestiti in base al processo. Tempo CPU incluso. Credo che i soli a non essere il numero totale di accessi e il numero totale di processi da parte di quell'utente.
Alcuni altri trucchi con limiti sono:
- I processi max includono il numero di fili leggeri.
- Il limite RSS non fa nulla e non ha per un certo numero di anni, è inutile impostare.