2012-08-22 16 views
65

próbuję zainstalować Intel MPI odniesienia w moim komputerze i otrzymuję błąd:widelec: ponowić: Zasoby chwilowo niedostępne

fork: retry: Resource temporarily unavailable 

Potem ten błąd ponownie po uruchomieniu polecenia ls i top.

Co powoduje ten błąd?

Konfiguracja moja maszyna:

Dell precision T7500 
Scientific Linux release 6.2 (Carbon) 
+0

Sprawdź dokumentację systemu Linux pod kątem zwiększenia liczby procesów. – theglauber

+1

Być może pomogłoby to: http://stackoverflow.com/questions/344203/maximum-number-of-threads-per-process-in-linux – theglauber

Odpowiedz

63

Jest to często spowodowane przez wyczerpaniu deskryptorów.

Nie

to systemy całości pliku limitu deskryptora, co można uzyskać z poleceniem:

sysctl fs.file-nr 

ta zwraca liczbę deskryptorów plików:

<in_use> <unused_but_allocated> <maximum> 

Aby dowiedzieć się, jakie pliki użytkowników deskryptor limit uruchamia polecenia:

sudo su - <username> 
ulimit -Hn 

Aby dowiedzieć się, ile deskryptorów plików s są używane przez użytkownika uruchom polecenie:

sudo lsof -u <username> 2>/dev/null | wc -l 

Więc teraz, jeśli masz plik systemowy limitu deskryptora problem trzeba edytować plik /etc/sysctl.conf i dodać lub zmodyfikować go go już istnieje, linia z opcją fs.file-max i ustaw ją na wartość wystarczająco dużą, aby poradzić sobie z wymaganą liczbą deskryptorów plików i zrestartować komputer.

fs.file-max = 204708 
+9

FYI, można użyć "sysctl -p", aby zastosować bieżące ustawienia w pliku /etc/sysctl.conf, zapisujące restart. – EmmEff

+2

Ponadto, jeśli masz tylko do odczytu// etc, możesz użyć "sysctl -w fs.file-max = 204708" w czasie wykonywania. –

39

Inną możliwością jest zbyt wiele wątków. Właśnie napotkaliśmy ten komunikat o błędzie podczas uruchamiania wiązki testowej przeciwko aplikacji korzystającej z puli wątków. Użyliśmy

watch -n 5 -d "ps -eL <java_pid> | wc -l"

obserwować trwającą rachubę Linux rodzimych wątków uruchomionych w danym procesie ID Java. Po tym trafieniu około 1000 (dla nas - YMMV), zaczęliśmy otrzymywać komunikat o błędzie, o którym wspomniałeś.

+2

Kiedy testowałem, 'ps -eL' pracował dla pokazania wszystkich procesów i' ps -L 'pracował dla pokazania procesów dotyczących' '. 'ps -eL ' pokazuje tylko wszystkie procesy, niezależnie od ''. –

+1

@Willie Wheeler Co zrobiłeś, aby pokonać limit nici? Szukałem i testowałem wiele rozwiązań znalezionych online, bezskutecznie, na DAYS. Nic nie pozwoli na więcej niż 1k wątków, z wyjątkiem restartu systemd-logind, który trwa około godziny, zanim błędy zaczną się ponownie! –

+0

Maszyny mają ograniczone zasoby. Jeśli uderzasz w limit, użyj mniej wątków (na przykład kontrolowanych z pulą wątków) lub innych maszyn. –