8.15.1 Limiti della risorsa

L'utilizzo delle risorse può venire limitato tramite la funzione setrlimit() descritta sotto. Ogni risorsa viene controllata da una coppia di limiti: un limite soft ed uno hard. Il limite soft è il limite corrente, e può essere eccezionalmente diminuito od aumentato da un processo. Il limite soft non può mai eccedere il limite hard. Il limite hard può venire diminuito fino ad un qualunque valore superiore a quello del limite soft, ma non può essere aumentato. (Solamente i processi con l'UID effettivo del super utente possono aumentare un limite hard.)

Il tipo di risorse che possono venire limitate dipendendono dal sistema. Vengono descritte nella pagina del manuale di getrlimit(2). Le risorse mostrate sotto vengono supportate quando il sistema operativo sottostante a sua volta le supporta; le risorse che non possono venire controllate o gestite dal sistema operativo non vengono definite in questo modulo su quelle piattaforme.

getrlimit( resource)
Restituisce una tupla (soft, hard) con i limiti correnti soft ed hard della risorsa resource. Solleva l'eccezione ValueError se viene specificata una risorsa non valida, o error se la chiamata di sistema sottostante fallisce inaspettatamente.

setrlimit( resource, limits)
Imposta nuovi limiti di consumo della risorsa resource. L'argomento limits deve essere una tupla (soft, hard) di due numeri interi che descrivono i nuovi limiti. Si può utilizzare un valore di -1 per specificare il limite superiore massimo possibile.

Solleva l'eccezione ValueError se viene specificata una risorsa non valida, se il nuovo limite soft eccede il limite hard, o se un processo tenta di aumentare il proprio limite hard (a meno che il processo non possieda un UID effettivo di super utente). Può anche sollevare l'eccezione error nel caso la chiamata di sistema sottostante fallisca.

Questi simboli definiscono le risorse il cui consumo può venire controllato utilizzando le funzioni setrlimit() e getrlimit() descritte sotto. I valori di questi simboli sono esattamente le costanti usate dai programmi C.

La pagina del manuale Unix di getrlimit(2) elenca le risorse disponibili. Notate che non tutti i sistemi utilizzano lo stesso simbolo e lo stesso valore per denotare la medesima risorsa. Questo modulo non tenta di mascherare le differenze tra le piattaforme -- i simboli non definiti per una piattaforma non saranno disponibili in questo modulo su quella piattaforma.

RLIMIT_CORE
La dimensione massima (in byte) di un file core che il processo corrente può creare. Questo potrebbe causare la creazione di un file core incompleto se viene richiesto un core più grande per contenere l'intera immagine del processo.

RLIMIT_CPU
L'ammontare massimo di tempo del processore (in secondi) che un processo può utilizzare. Se questo limite viene superato, viene mandato al processo un segnale SIGXCPU. (Vedete la documentazione del modulo signal per informazioni su come catturare questo segnale e fare qualcosa di utile, ad esempio aggiornare i file aperti sul disco).

RLIMIT_FSIZE
La dimensione massima di un file che il processo può creare. Questo influenza solo lo stack del thread principale in un processo multi-thread.

RLIMIT_DATA
La dimensione massima (in bytes) dell'heap del processo.

RLIMIT_STACK
L'area massima (in bytes) dello stack delle chiamate per il processo corrente.

RLIMIT_RSS
La dimensione massima della quantita` di memoria fisica (non-swap) utilizzata dal processo.

RLIMIT_NPROC
Il numero massimo di processi che il processo corrente può creare.

RLIMIT_NOFILE
Il numero massimo di descrittori di file aperti disponibili per il processo corrente.

RLIMIT_OFILE
Il nome BSD per RLIMIT_NOFILE.

RLIMIT_MEMLOCK
Il spazio d'indirizzi massimo che può essere mantenuto in memoria.

RLIMIT_VMEM
La più grande area di memoria mappata che il processo può occupare.

RLIMIT_AS
L'area massima (in bytes) dello spazio d'indirizzi che può venir presa dal processo.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.