/etc/security/limits.conf
Makinemdeki kullanıcı başına işlem sayısını ve nproc değeri ile sınırlamak istiyorum .
Burada Linux'un süreçler ve iş parçacıkları arasında ayrım yapmadığını okudum mu?
Kullanıcı başına geçerli nproc sınırım 1024'tür, ancak bu da konu içeriyorsa, benim görüşüme göre çok düşük. Man-page limits.conf
sadece nproc için "işlem" den bahseder ve başka bir şeyden söz etmez.
// düzenleme // Boost ile C ++ örnek kodu // 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;
}
test (bazı satırlar kaldırıldı):
$ 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)
Dizüstü bilgisayarım boştayken ~ 130 işlem kullanıyor. Dolayısıyla nproc veya Linux daha geniş bir bakış açısıyla süreçler ve iş parçacıkları arasında ayrım yapmaz. Bu benim için makul görünüyor, çünkü iplikler sadece süreçleri değil aynı zamanda yorucuydu.