Saya ingin membatasi jumlah proses per pengguna di komputer saya, dengan /etc/security/limits.conf
dan nilai nproc.
Saya telah membaca di sini bahwa dosen Linux tidak membedakan antara proses dan utas?
Batas nproc saya saat ini per pengguna adalah 1024, tetapi jika ini juga termasuk utas, terlalu rendah dalam pandangan saya. Halaman manual limits.conf
hanya menyebutkan "proses" untuk nproc dan tidak ada yang lain.
// edit // kode sampel dalam C ++ dengan Boost // g ++ -o boost_thread boost_thread.cpp -lboost_thread
#include <unistd.h>
#include <iostream>
#include <boost/thread.hpp>
using namespace std;
int counter;
void print_thread(int i) {
counter++;
cout << "thread(" << i << ") counter " << counter << "\n";
sleep(5);
counter--;
}
int main() {
int i = 0;
int max = 1000000;
while (i < max) {
boost::thread(print_thread, i);
i++;
}
return 0;
}
tes (menghapus beberapa baris):
$ ulimit -u
1024
$ ./thread
...
...
...
thread(828) counter 828
thread(829) counter 829
thread(830) counter 830
thread(831) counter 831
thread(832) counter 832
thread(610) counter thread(833833) counter 834
thread(834) counter 835
thread(835) counter 836
thread(836) counter 837
thread(837) counter 838
thread(838) counter 839
thread(839) counter 840
thread(840) counter 841
thread(841) counter 842
thread(842) counter 843
thread(843) counter 844
thread(844) counter 845
thread(845) counter 846
thread(846) counter 847
thread(847) counter 848
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::thread_resource_error> >'
what(): boost::thread_resource_error
Aborted (core dumped)
Laptop saya menggunakan ~ 130 proses saat dalam keadaan idle. Jadi nproc , atau Linux dalam pandangan yang lebih luas, tidak membedakan antara proses dan utas. Yang menurut saya masuk akal, karena utas juga bisa melelahkan, tidak hanya proses.