2012-03-08 20 views
20

Me gustaría saber si node.js con motor V8 es adecuado para implementarse en un dispositivo de memoria limitado (por ejemplo, 256mb) y funcionar en paralelo con otro proceso.Node.js con V8 adecuado para dispositivos de memoria limitada?

He leído que conectará el recurso de la máquina. ¿Hay alguna forma de limitar la memoria y el procesamiento del motor V8?

+0

NodeJS en Respberry Pi? Esto podría ser interesante. –

+0

¿Puede saber más sobre el dispositivo? Qué arquitectura de CPU, tipo de disco (sólido/giratorio), también necesita ejecutar una GUI, etc. – jholster

+0

Lo estoy ejecutando en Android rooteado, también necesita GUI. Entonces, lo mejor es restringir la memoria. – TonyTakeshi

Respuesta

14

256 MB es suficiente cantidad de RAM para ejecutar Node.js (por ejemplo, en la instancia de Linux VPS), suponiendo que no se ejecuta ningún otro software de memoria. Nodo tiene un argumento --max-stack-size para limitar el uso de la memoria. El modelo de servidor evented de un hilo de Node generalmente hace un uso eficiente de los recursos, pero es probable que el V8 debido a su arquitectura JIT use algo más de memoria que las implementaciones interpretadas/bytecompiled, como PHP o CPython (ofreciendo un rendimiento superior). Además, para aprovechar los múltiples núcleos de CPU, se deben ejecutar varios procesos Node.js (en comparación con los subprocesos de uso compartido de memoria), multiplicando efectivamente el uso de la memoria, pero esta limitación también se aplica a sus competidores más populares.

En el respeto de "correr en paralelo con otro proceso" o "conectar el recurso de la máquina", no hay nada especial acerca de cómo ejecutar el proceso de Node.js (excepto el tema de múltiples núcleos no son infrecuentes); se comporta de manera similar a cualquier programa de usuario y usuario. Puede priorizar poco el proceso Node.js en el nivel del sistema operativo (por ejemplo, con nice), pero dependiendo de su dispositivo/aplicación, las E/S pueden ser potencialmente un problema mayor.

Puramente desde la perspectiva técnica/de efectividad, Erlang es probablemente la opción más ideal para un lenguaje de alto nivel cuando se requiere un verdadero soporte de multiprocesamiento y alta concurrencia.

3

El BeagleBone tiene 256MB de RAM (y en una configuración normal, sin memoria virtual), y ejecuta node.js muy bien.

9

64 MB de RAM es suficiente para V8 y Node.js

Ver "Compiling Node.js for Arduino YÚN" y también "installing Node.js on Arduino YÚN".

Arduino YÚN ejecuta Linux con 64MB de RAM.

+0

"Node.js de pila completa es demasiado para Yun, y todo lo que se puede hacer son scripts muy simples" ver http://forum.arduino.cc/index.php?topic=193765.15 – nkint

+4

Sure, en un dispositivo de este tipo es muy limitado, pero que "solo scripts muy simples" es muy relativo también. En mi experimento, un TL-MR3020 con la mitad de la RAM de YÚN, ​​hace lo siguiente: * al servicio de una aplicación web HTML5; * recibiendo mensajes JSON en WebSocket Secure cada 200 ms; * envío de mensajes JSON en WebSocket Secure cada 50 ms; * envío y recepción de mensajes JSON en UDP cada 40 ms; * operaciones de registro en archivo de texto. Todo lo que funciona muy bien con 2 o 3 clientes, luego se vuelve un poco más lento con los mensajes. –

+0

@MatteoT. ¿Tendría un enlace/guía sobre cómo configura Node.js en ese dispositivo? ¿está usando OpenWRT? –

Cuestiones relacionadas