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.