2012-03-08 10 views
20

Chciałbym wiedzieć, że jest to node.js z silnikiem V8 odpowiednim do wdrożenia na ograniczonym urządzeniu pamięciowym (na przykład 256 MB) i działającym równolegle z innym procesem.Node.js z V8 odpowiednie dla ograniczonej pamięci?

Przeczytałem, że nastąpi podłączenie zasobu urządzenia. Czy istnieje sposób ograniczenia pamięci i wykorzystania przetwarzania samego silnika V8?

+0

NodeJS na Respberry Pi? To może być interesujące. –

+0

Czy możesz powiedzieć więcej o urządzeniu? Którą architekturę procesora, typ dysku (stały/wirujący), musi on również uruchamiać graficzny interfejs użytkownika itp. – jholster

+0

Używam go na zrootowanym Androidzie, potrzebuje również GUI. Więc najlepiej jest ograniczać pamięć. – TonyTakeshi

Odpowiedz

14

256 MB jest wystarczającą ilością pamięci RAM do uruchomienia Node.js (na przykład w przypadku instancji VPS w systemie Linux), zakładając, że nie jest uruchomione żadne inne oprogramowanie typu pamięć-hog. Węzeł ma argument -max-stack-size dla ograniczenia użycia pamięci.

Węzły model węzła z pojedynczym wątkiem generalnie wydajnie wykorzystuje zasoby, ale V8 z powodu swojej architektury JIT może zużywać nieco więcej pamięci niż interpretowane/złożone kompilacje implementacji, takie jak PHP lub CPython (przy zapewnieniu najwyższej wydajności). Ponadto, aby skorzystać z wielu rdzeni procesora, wiele procesów Node.js musi być uruchomionych (w przeciwieństwie do wątków współużytkowania pamięci), skutecznie pomnażając użycie pamięci, ale to ograniczenie dotyczy również jego najpopularniejszych konkurentów.

W odniesieniu „działa równolegle z innym procesie” lub „podpinania się zasób maszyny”, nie ma nic szczególnego uruchomiony proces node.js (z wyjątkiem Nierzadko wielordzeniowych wystawienia); zachowuje się podobnie do dowolnego programu użytkownika. Można obniżyć priorytet procesu Node.js na poziomie systemu operacyjnego (np. Z nice), ale w zależności od urządzenia/aplikacji, operacje wejścia/wyjścia mogą być potencjalnie większym problemem.

Erlang z punktu widzenia technicznego/efektywnościowego jest prawdopodobnie bardziej idealnym wyborem dla języka wysokiego poziomu, gdy wymagana jest prawdziwa obsługa wieloprocesorowego przetwarzania i wysoka współbieżność.

3

Numer BeagleBone ma 256 MB pamięci RAM (w normalnej konfiguracji, brak pamięci wirtualnej) i całkiem dobrze działa node.js.

9

64MB RAM wystarcza do V8 i node.js

Patrz "Compiling Node.js for Arduino YÚN" a także "installing Node.js on Arduino YÚN".

Arduino YÚN uruchamia Linux z 64 MB pamięci RAM.

+0

"Node.js na pełnym stosie to po prostu zbyt wiele dla Yun'a, a wszystko, co można zrobić, to tylko bardzo proste skrypty" zobacz http://forum.arduino.cc/index.php?topic=193765.15 – nkint

+4

Oczywiście, na takim urządzeniu jesteś bardzo ograniczony, ale "bardzo proste skrypty" również są bardzo względne. W moim eksperymencie TL-MR3020 z połową pamięci RAM YÚN wykonuje następujące czynności: * obsługuje aplikację internetową HTML5; * odbieranie wiadomości JSON na WebSocket Secure co 200ms; * wysyłanie wiadomości JSON na WebSocket Secure co 50ms; * wysyłanie i odbieranie komunikatów JSON na UDP co 40ms; * operacje logowania na pliku tekstowym. Wszystko, co działa bardzo dobrze z 2 lub 3 klientami, następnie staje się nieco wolniejsze z wiadomościami. –

+0

@MatteoT. czy masz link/przewodnik na temat ustawiania Node.js na tym urządzeniu; czy używa OpenWRT? –

Powiązane problemy