Czy można w jakikolwiek sposób zmienić limit liczby pthreadów, które proces może utworzyć? Obecnie na moim systemie Linux mogę utworzyć około 380 wątków, ale chcę to zwiększyć, jeśli tylko pamięć jest dostępna.Zmiana limitu maksymalnej liczby pthreadów przez aplikację
Odpowiedz
Spójrz na to:
Maximum number of threads per process in Linux?
i spojrzeć na to jak to może odnosić się do pytania:
' kota?/proc/sys/kernel/threads-max' pokazuje '16384' .Ale nie mogę utworzyć więcej niż 380 pthreadów, próbowałem nawet wstawić pustą funkcję jako treść wątków – Sukanto
jaki błąd dostałeś? –
po 380 wątkach otrzymuję 'EAGAIN' jako wartość zwracaną' pthread_create() ', która zgodnie z' pthread_create() 'man page jest" W systemie brakowało niezbędnych zasobów do utworzenia innego wątku lub nałożonego przez system ograniczenia na całkowita liczba wątków w procesie {PTHREAD_THREADS_MAX} zostałaby przekroczona. " – Sukanto
Twoim problemem jest to, że nie nazwali pthread_detach na wątki, o których mowa. To mówi pthread, że zasoby związane z każdym wątkiem zostaną zwolnione po zakończeniu wątku. Musisz wywołać pthread_join lub pthread_release we wszystkich wątkach, aby zwolnić zasoby wątku. Oznacza to, że musisz również wywołać pthread_detach w swoich programach obsługi anulowania pthread_join lub wycieku.
zmniejszyć rozmiar stosu użytkownika "ulimit -s 1024
";
default: 8MB
reduced: 1MB
do zwiększenia liczby wątków.
ustawić rozmiar stosu: pthread_attr_setstacksize(1024)
cat /proc/sys/kernel/threads-max
może pracować w Linuksie, ale nie innych systemów UNIX. Myślałem, że właściwym sposobem jest
Maximum number of threads per process - sysconf(_SC_THREAD_THREADS_MAX) failing
która działa na niektórych systemach UNIX (jak HPUX), ale nie w systemie Solaris lub Linux ...
- 1. Zmiana limitu czasu SqlConnection
- 2. Zagnieżdżanie maksymalnej liczby kształtów na powierzchni
- 3. Ustalanie maksymalnej liczby grupowej w Doctrine
- 4. Określanie maksymalnej liczby kolumn z sqlite3
- 5. Optymalizacja maksymalnej liczby wątków uruchomionych na procesorze
- 6. Zmiana maksymalnej szerokości dokumentów przecen R
- 7. Konfigurowanie maksymalnej liczby jednoczesnych otwartych WebSockets (w IE)
- 8. Czego potrzebuję do debugowania pthreadów?
- 9. znajdowanie maksymalnej i minimalnej liczby z 2 liczb w tablicy
- 10. Dynamiczna zmiana liczby kolumn GridLayoutManager
- 11. Przerwanie dwóch pthreadów blokujących według sygnałów
- 12. Ustawianie maksymalnej liczby widocznych wierszy do wyświetlenia listy
- 13. Błąd lub ograniczenie wartości maksymalnej Delphi. stałe liczby całkowite?
- 14. LINQ: GroupBy z maksymalnej liczby w każdej grupie
- 15. Jak napisać ograniczenie dotyczące maksymalnej liczby wierszy w postgresql?
- 16. Java jest bardzo ograniczona pod względem maksymalnej liczby wątków?
- 17. Wyrażenia regularne: Dopasuj do słowa lub maksymalnej liczby słów
- 18. jQuery datatables, programowa zmiana liczby wierszy wyświetlanych
- 19. Zmiana domyślnego limitu czasu sesji aplikacji internetowej wiosennej
- 20. Zurb Foundation 3 - Pełna sekcje i zmiana maksymalnej szerokości?
- 21. Rozróżnienie limitu czasu od anulowania przez użytkownika
- 22. Jak używać ograniczonego API bez limitu liczby trafień?
- 23. Zmiana nazwy liczby mnogiej w systemie Django
- 24. Zmiana liczby wierszy zakładek widocznych w NetBeans
- 25. Zmiana liczby wątków w TensorFlow na Cifar10
- 26. Zmiana liczby ponownych prób żądań w boto3
- 27. Jak mogę uniknąć ogromnej liczby błędów stronicowania generowanych przez moją aplikację C# .NET?
- 28. Wywołanie API POSIX do wyświetlenia wszystkich pthreadów działających w procesie
- 29. Ograniczanie liczby rozproszonych
- 30. Zmiana liczby rdzeni podczas przetwarzania równoległego w R
Ciekawe ... masz uważane za jedne z konsekwencjami takich projekt systemu? Pojedynczy punkt awarii (SPOF) przychodzi na myśl. – jldupont
Nie jestem ekspertem, ale założę się, że posiadanie ponad 380 wątków przytłoczy twój procesor przełącznikami kontekstowymi. Przełączanie kontekstu dla wątku jest mniejsze niż w przypadku oddzielnego procesu, ale nadal musisz zapisać licznik programu i zarejestrować plik oraz być może inne rzeczy, których zapominam. Ile wątków potrzebujesz? Sugerowałbym profilowanie aplikacji, aby określić obciążenie wątku dla 10 wątków w porównaniu do 100 wątków, a następnie spróbuj ekstrapolować do docelowej liczby wątków. Może się okazać, że nie jest to warte wysiłku. A może po prostu jestem w błędzie ... –
Nie będę go używać praktycznie nigdzie ... ale potrzebuję go do pewnych eksperymentów? – Sukanto