Linux tidak memiliki utas terpisah per batas proses, hanya batas jumlah total proses pada sistem (utas pada dasarnya hanyalah proses dengan ruang alamat bersama di Linux) yang dapat Anda lihat seperti ini:
cat /proc/sys/kernel/threads-max
Standarnya adalah jumlah halaman memori/4. Anda dapat meningkatkan ini seperti:
echo 100000 > /proc/sys/kernel/threads-max
Ada juga batasan jumlah proses (dan karenanya thread) yang dapat dibuat oleh satu pengguna, lihat ulimit/getrlimit
untuk detail tentang batasan ini.
Ini SALAH untuk mengatakan bahwa LINUX tidak memiliki utas terpisah per batas proses.
Linux mengimplementasikan jumlah maksimum utas per proses secara tidak langsung!!
number of threads = total virtual memory / (stack size*1024*1024)
Dengan demikian, jumlah utas per proses dapat ditingkatkan dengan menambah total memori virtual atau dengan mengurangi ukuran tumpukan. Namun, mengurangi ukuran tumpukan terlalu banyak dapat menyebabkan kegagalan kode karena kelebihan tumpukan sementara memori virtual maksimum sama dengan memori swap.
Periksa mesin Anda:
Total Memori Virtual:ulimit -v
(standarnya tidak terbatas, jadi Anda perlu menambah memori swap untuk meningkatkannya)
Ukuran Tumpukan Total:ulimit -s
(standarnya adalah 8Mb)
Perintah untuk meningkatkan nilai ini:
ulimit -s newvalue
ulimit -v newvalue
*Ganti nilai baru dengan nilai yang ingin Anda batasi.
Referensi:
http://dustycodes.wordpress.com/2012/02/09/increasing-number-of-threads-per-process/
Dalam istilah praktis, batas biasanya ditentukan oleh ruang tumpukan. Jika setiap utas mendapatkan tumpukan 1MB (saya tidak ingat apakah itu default di Linux), maka sistem 32-bit Anda akan kehabisan ruang alamat setelah 3000 utas (dengan asumsi bahwa gb terakhir dicadangkan untuk kernel) .
Namun, kemungkinan besar Anda akan mengalami kinerja yang buruk jika Anda menggunakan lebih dari beberapa lusin utas. Cepat atau lambat, Anda mendapatkan terlalu banyak overhead pengalihan konteks, terlalu banyak overhead di penjadwal, dan seterusnya. (Membuat utas dalam jumlah besar tidak lebih dari memakan banyak memori. Tetapi banyak utas dengan pekerjaan yang sebenarnya lakukan akan memperlambat Anda karena mereka berjuang untuk waktu CPU yang tersedia)
Apa yang Anda lakukan di mana batas ini bahkan relevan?