È possibile modificare in qualsiasi modo il limite del numero di pthread che un processo può creare? Attualmente sul mio sistema linux posso creare circa 380 thread ma voglio aumentare quello per dire finchè la memoria è disponibile.Modifica del limite del numero massimo di pthreads da un'applicazione
risposta
Guardate questa:
Maximum number of threads per process in Linux?
e dare un'occhiata a questo come potrebbe appartenere alla tua domanda:
' gatto?/proc/sys/kernel/threads-max' mostra '16384' .Ma non riesco a creare più di 380 pthreads.Ho persino provato a mettere una funzione vuota come corpo dei thread. – Sukanto
quale errore ottieni? –
dopo 380 thread ottengo 'EAGAIN' come valore di ritorno di' pthread_create() ', che secondo' pthread_create() 'man page è" Il sistema non aveva le risorse necessarie per creare un altro thread, o il limite imposto dal sistema sul il numero totale di thread in un processo {PTHREAD_THREADS_MAX} verrà superato. " – Sukanto
Il tuo problema è che non hai chiamato pthread_detach su i fili in questione. Questo indica che le risorse associate a ciascun thread verranno rilasciate quando il thread termina. Devi chiamare pthread_join o pthread_release su tutti i thread per rilasciare le risorse del thread. Ciò significa che devi anche chiamare pthread_detach nei tuoi gestori di cancellazione pthread_join o perdite.
ridurre le dimensioni dello stack dell'utente 'ulimit -s 1024
';
default: 8MB
reduced: 1MB
per aumentare il numero di thread.
impostare la dimensione dello stack: pthread_attr_setstacksize(1024)
cat /proc/sys/kernel/threads-max
può funzionare in Linux, ma non anche per altri sistemi UNIX. Ho pensato che il modo giusto è
Maximum number of threads per process - sysconf(_SC_THREAD_THREADS_MAX) failing
che funziona su alcuni sistemi UNIX (come HPUX), ma non su Solaris o Linux ...
- 1. scopo del numero massimo in php & mysql
- 2. Numero massimo di parametri nella dichiarazione del metodo Java
- 3. Limite massimo di ManyToManyField
- 4. Gestione del segnale tra pthreads
- 5. Gestione del segnale in pthreads
- 6. numero massimo di visualizzazioni del fondo per contenitore
- 7. ActiveRecord: selezionare il limite massimo
- 8. Sencha Touch List Paging: numero limite del record del negozio
- 9. Modifica numero di versione del database SQLite
- 10. Modifica del numero di telefono del sistema linux
- 11. Il limite del parametro "limite" del grafico di Facebook
- 12. Limite di lettura del limite del flusso di ingresso bufferizzato
- 13. qualsiasi limite del numero di connessioni di SQL Server?
- 14. Limite massimo di MultipartFile nell'innesto a molla
- 15. Qual è il numero massimo di elementi o dimensioni del file per un documento HTML?
- 16. Come convalidare il numero massimo di file prima del caricamento?
- 17. Numero massimo di thread
- 18. Qual è il numero massimo di connessioni cURL impostato da?
- 19. Numero massimo di database supportati da MongoDB
- 20. Parametri funzione numero massimo
- 21. Il nome dell'oggetto contiene più del numero massimo di prefissi. Il massimo è 3
- 22. Numero massimo di processi in linux
- 23. Misurazione del tempo di modifica del rendering avviato da Javascript
- 24. UISegmentedControl modifica del numero di segmenti a livello di programmazione
- 25. Modifica del numero di righe di schede visibili in NetBeans
- 26. Errore report Crystal: Limite massimo di processi di elaborazione report
- 27. Stampa con asse scientifico, modifica del numero di cifre significative
- 28. Utilizzando limite() del modello contenuta
- 29. risultati del limite di ricerca github
- 30. OkHttpClient ha un numero massimo di tentativi
Interessante ... avete considerato alcune delle implicazioni di tale sistema di design? Viene in mente Single Point Of Failure (SPOF). – jldupont
Non sono esperto, ma scommetterei che avere più di 380 thread sovraccarichi il tuo processore con le opzioni di contesto. Il cambio di contesto per un thread è inferiore rispetto a un processo separato, ma è comunque necessario salvare il contatore del programma e registrare il file e forse alcune altre cose che sto dimenticando. Quanti thread pensi di aver bisogno? Suggerirei di profilare la vostra applicazione per determinare il sovraccarico del thread per 10 thread rispetto a 100 thread e quindi tentare di estrapolare il numero di thread di destinazione. Potresti scoprire che non ne vale la pena. O forse ho sbagliato ... –
Non lo userò praticamente da nessuna parte ... ma ne ho bisogno per alcuni esperimenti? – Sukanto