GNU/Linux >> Belajar Linux >  >> Linux

Jumlah maksimum utas per proses di Linux?

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?


Linux
  1. Linux – Batasi Penggunaan Memori Untuk Proses Linux Tunggal?

  2. Penggunaan memori puncak dari proses linux/unix

  3. Membatasi penggunaan memori proses/CPU di linux

  1. Cara meningkatkan jumlah maksimum utas JVM (Linux 64bit)

  2. Jumlah maksimum hard drive di Linux 64-bit?

  3. mencatat memori RAM tanda air tinggi dari proses Linux

  1. Batasi penggunaan memori untuk satu proses Linux

  2. Bagaimana cara mengetahui jumlah core suatu sistem di Linux?

  3. Memori tidak aktif Linux