Zwiększenie limitu stosu w OS X Yosemite

12

Szukam sposobu (niekoniecznie na stałe) zwiększenia stosu dostępnego dla aplikacji terminalowych w OS X 10.10.

Wiem, że istnieje wiele pytań związanych ze zmianami zmiennych środowiskowych, w tym limitem stosów, w Internecie, a tu w szczególności (np. Tym ), ale żadne z zaproponowanych przeze mnie rozwiązań nie wydaje mi się skuteczne.

Najbardziej mi wydostać launchctlsię z użyciem sudo launchctl limit stack 67104768 67104768gdzie 67104768 jest domyślnym ciężko limitu. Inne launchctlpolecenia z wyższymi limitami wydają się nie działać.

Potem jest sysctl, ale strony podręcznika raportują kern.stack_sizejako niezmienne.

Mam nadzieję, że nie przeoczyłem żadnych rozwiązań, które zostały już gdzieś zaproponowane; każda pomoc byłaby bardzo mile widziana!

Edycja: Chciałbym zwiększyć limit stosów, aby obejść coś, co wydaje się być błędem w ocamlopt, natywnym kompilatorze OCaml, który przepełnia stos przetwarzając konkretny (rozsądny) program; Nie mogę teraz znaleźć raportu o błędzie.

Krzysztof
źródło
1
Czy wyraźnie pytasz, jak zwiększyć limit stosów Yosemite?
1
Tak. Przepraszam, jeśli nie było to jasne z tekstu.
Christopher
1
Znalazłem pytanie na superuser.com/questions/836883/…, które może ci pomóc ... W pierwszej odpowiedzi pokazuje limit maxfiles. Być może zmień go na limit stosu i zapisz jako limit.stack.plistw launchDaemons?
TheBro21
1
Dzięki! Właśnie tego spróbowałem, ale bez powodzenia.
Christopher
1
Ok. I czy rzeczywiście znalazłeś plik z limitem? Jeśli go nie ma. Spędzę czas na szukaniu go i rozwiązywaniu problemu. I konfigurując ten plist, instruowałem wcześniej.
TheBro21

Odpowiedzi:

5

Jednym ze sposobów zwiększenia wielkości stosu jest użycie ulimit:

shell> ulimit -s new_size_in_kb

Pamiętaj tylko, że wydaje się, że istnieje sztywny limit wielkości stosu w OSX, a limit ten wynosi 65532 kb:

shell> ulimit -s 65533
ulimit: value exceeds hard limit
shell> ulimit -s 65532
shell> ulimit -a | grep stack
-s: stack size (kbytes)             65532

ulimit -sJest również tymczasowy i resetuje się po zakończeniu sesji terminala.

Jeśli chcesz się upewnić, że stos jest zwiększany dla każdej sesji terminala, możesz umieścić ulimit -spolecenie w .zshrc lub odpowiedniku.

fpierfed
źródło
Dziękuję za to! Niestety w tym konkretnym przypadku muszę zwiększyć rozmiar stosu poza twardy limit OSX i miałem nadzieję znaleźć rozwiązanie, które zwiększy ten limit.
Christopher
Tak: również ulimit -s unlimitedwydaje się być ograniczony do 65532 Kb: ulimit -a | grep stackdaje-s: stack size (kbytes) 65532
fpierfed