Pracuję w środowisku osadzonym, w którym zasoby są dość ograniczone. Staramy się używać node.js, który działa dobrze, ale zazwyczaj zużywa około 60 megabajtów pamięci wirtualnej (używana pamięć rzeczywista to około 5 megabajtów.) Biorąc pod uwagę nasze ograniczenia, jest to za dużo pamięci wirtualnej; możemy pozwolić sobie tylko na to, aby plik node.js mógł używać co najwyżej 30 megabajtów maszyny wirtualnej.Jak ograniczyć wykorzystanie pamięci wirtualnej przez plik node.js?
Istnieje kilka opcji wiersza polecenia dla node.js, takie jak „--max_old_space_size” „--max_executable_size” i „--max_new_space_size”, ale po doświadczeniach uważam, że to wszystko kontrolować rzeczywistą pamięć użycie, a nie maksymalny rozmiar pamięci wirtualnej.
Jeśli to ma znaczenie, pracuję w wariancie Ubuntu linux na architekturze ARM.
Czy istnieje opcja lub ustawienie, które pozwoli ustawić maksymalną ilość pamięci wirtualnej, której może używać proces node.js?
. Dlaczego miałby to być problem? Linux używa nadmiernej alokacji: Ta wirtualna pamięć będzie istnieć tylko jako wpisy w tabeli stron procesu, dopóki nie zostanie * dokładnie * wykorzystana. –
Hm. Nie jestem pewny. Jest to środowisko osadzone (co oznacza: brak miejsca na dysku), więc czy nie wszystkie wirtualne alokacje zużywałyby trochę prawdziwej pamięci? Przedstawię tę myśl mojemu szefowi, ale mam wrażenie, że to nie sprawi żadnej różnicy; Kazano mi zredukować ślad i kłócić się, że nie powinienem był nie mieć zbyt dużego ciężaru. "Klient ma zawsze rację". Poza tym natknąłem się na inny problem; Napisałem funkcję przy użyciu setrlimit(), aby ograniczyć użycie pamięci wirtualnej do mniej niż 55 megabajtów, a teraz plik node.js kończy działanie z błędem malloc. Jakieś sugestie? – Mike
Cześć Mike. Jak to rozwiązałeś? – Industrial