Compartir RAM a través de la red


49

Mi colega está usando una aplicación que consume mucha memoria, lo que hace que el sistema sea demasiado lento. ¿Es posible compartir memoria con otras PC a través de Internet?

El sistema tiene 8 GB de RAM y la aplicación consume más de 6 GB.


55
Ejecútelo en un servidor de alta potencia a través de Escritorio remoto, VNC o X11 ??
WGroleau

3
Es mejor usar unidades de almacenamiento grandes (HDD o SSD) como caché, como ya se mencionó en las respuestas.
Firebug


79
Es posible que tenga más suerte descargando más RAM ...
Mehrdad

44
Las versiones modernas de Windows le permiten usar memorias USB o tarjetas SD para mejorar el rendimiento. En realidad, no significa que el dispositivo se utiliza como RAM, sino algo que funciona entre la RAM y el disco duro basado en disco.
Salman A

Respuestas:


162

Solo he considerado una aplicación independiente que se ejecuta en una máquina "estándar" sin la capacidad de instalarla en otro lugar o usar hardware o software especializado. Otras respuestas (correctamente) abordan la migración de software o hardware dedicado para la tarea.

Cualquier forma de "compartir RAM" a través de una red estará sujeta a limitaciones de ese medio de red. Como incluso Gigabit Ethernet está limitado a aproximadamente 100 MB / s (megabytes), esto significa que su velocidad de "RAM" también estará limitada.

100 MB / s es una pequeña fracción de la velocidad de la RAM que está realmente en su sistema. Su programa será muy lento y parecerá que se ejecuta en una computadora desde principios de los 90

Los discos duros modernos son, para lectura y escritura secuenciales, un poco más rápidos que esto. Los SSD son varias veces más rápidos.

Esto ignora los problemas de latencia que harán que su programa sea un orden de magnitud más lento nuevamente.

Debido a la lentitud y otros problemas técnicos involucrados, este no es un problema que cualquiera haya considerado que valga la pena intentar resolver para los sistemas de "hogar" u "oficina". Es más barato y más efectivo comprar más RAM si es necesario.

Simplemente compre más RAM, o incluso un SSD para un archivo de página. No hay otra forma de hacer esto que no requiera una cantidad increíble de trabajo o hardware para obtener pocos beneficios.


46
El intercambio / paginación sobre ethernet gigabit puede tener una latencia más baja que un archivo de paginación en un disco magnético local . p. ej., 10 ms de latencia de disco frente a un tiempo de ping inferior a 1 ms para ethernet local. Si el servidor de archivos que contiene el archivo de paginación (o el dispositivo iSCSI al que está intercambiando) lo mantiene caliente en su RAM, es posible que gane. IDK si Windows admite la paginación a un archivo de red. (Estoy bastante seguro de que Linux lo hace, pero esta es una pregunta de Windows). Oh, acabo de ver que la pregunta dice "a través de Internet", así que nvm.
Peter Cordes

2
@ MarkHu Dado que esto se le preguntó a Super User, no creo que el autor de la pregunta tenga ningún control sobre el código del software que se está utilizando.
oldmud0

2
@PeterCordes Lo que describe sigue siendo una pérdida por comprar más RAM o un SSD. Y aún más ciertamente en Windows. ;)
jpmc26

11
@TomTom para uso doméstico y "normal", el uso de gigabit sigue siendo lo que obtienes en tu máquina de escritorio. El hecho de que 25G y 100G sean comunes (o al menos disponibles) para la infraestructura troncal no significa que es probable que lo vea en el escritorio. Ni siquiera puedo encontrar una tarjeta 10GigE de escritorio en ningún proveedor local a un costo razonable, y mucho menos una 25GigE. Las tarjetas 10GigE cuestan aproximadamente 4 veces el costo de una tarjeta de memoria de 8GB aquí. Sé cuál consideraría una actualización razonable.
Mokubai

99
"Siento que se está ejecutando en una computadora de principios de los 90" - extraño, las computadoras de los 90 se sintieron mucho más rápido que las computadoras de hoy.
Jeremy Visser

73

Solo para completar: InfiniBand permite el acceso directo a la memoria de otras máquinas.

Sin embargo, requiere:

  • Un interruptor InfiniBand
  • Una tarjeta InfiniBand agregada en cada máquina
  • La aplicación tiene que ser programada específicamente para usar esto

NO funciona en una red existente, requiere una infraestructura completamente independiente para todos los nodos conectados. Tampoco funciona a través de Internet.


53
También es ciertamente mucho más costoso que simplemente obtener otros 8 GiB más o menos de RAM :-).
sleske

40
Oh, solo por un orden de magnitud más o menos;)
Gerald Schneider

77
No necesitas infiniband, RoCE también es posible. Sin embargo, esto requiere NIC que admitan RDMA y probablemente un nuevo conmutador para admitir las NIC, y una aplicación programada para usar RDMA.
alex.forencich

77
+1 porque es excelente y correcto pero, para esta situación, una respuesta totalmente inútil :-)
daniel.neumann

1
Sí, a menos que obtenga 25G o 100G, que son más caros. RDMA no resuelve el problema de latencia.
TomTom

19
Is there any alternative solution?

Esto depende en gran medida de la naturaleza de los datos.

Puede ejecutar 2 servidores mysql diferentes en 2 máquinas diferentes.

Luego divida los datos en 1/2 y escriba el programa para saber automáticamente a qué servidor ir.

Por supuesto, esto se puede escalar a cualquier número de servidores si los tiene disponibles.


Había considerado mencionar que, en general, la forma en que "compartimos memoria" es moviendo activamente la aplicación a otra máquina y luego trabajando con ella de forma remota a través de los métodos disponibles. Definitivamente es una alternativa a comprar más memoria, especialmente si otra máquina ya está disponible. +1
Mokubai

1
¿Como un escritorio remoto?
Innov

44
Tiene 2 computadoras que ejecutan un sistema operativo separado, y cada una tiene una copia de mysql en ejecución. Por lo tanto, la computadora n. ° 1 podría ser 192.168.0.1 y la computadora n. ° 2 192.168.0.2 (o lo que sea). En su PC principal, ahora puede usar ambas IP para recuperar sus datos. Mysql o su reemplazo gratuito mariadb ofrece bibliotecas como libmysql para agregar a su programa para que tenga acceso nativo a mysql. Este no es un escritorio remoto, su relación cliente-servidor y / o cliente y servidor múltiple.
cybernard

15

Sí, es razonablemente fácil de hacer (y lo he hecho, para sistemas sin disco que necesitan intercambio), utilizando el protocolo Network Block Device.

Instale nbd-serveren la máquina del servidor y configúrelo para crear automáticamente archivos por host.

Asegúrese de que sus máquinas cliente tengan NBD compilado en sus núcleos, y luego configúrelos para cambiar a un dispositivo montado en NBD. El nbd-clientpaquete puede ayudar.

Lo siento si lo anterior es un poco vago: las máquinas en las que he hecho esto no son accesibles desde aquí; Es posible que pueda completar los detalles cuando tenga acceso a ellos.

Hay una implementación alternativa de servidor NBD llamada nbdkit; No se nada de eso.


Acabo de ver que la pregunta tiene una etiqueta de Windows. No sé nada sobre Windows, lo siento.
Toby Speight

8
+1, el intercambio sobre GigE en una LAN debe tener una latencia más baja que un disco duro magnético local, si el servidor de archivos al que está intercambiando mantiene el archivo de intercambio en caché en su RAM. Tiempos de búsqueda en HD de ~ 10 ms frente a tiempos de ping de LAN de ~ 0.25 ms. No tengo idea si Windows puede hacer algo similar, por ejemplo, con un archivo de página a través de Windows File Sharing (SMB) o cualquier otro protocolo, pero tal vez iSCSI podría funcionar. El OP menciona "a través de Internet"; Eso no sería una buena idea. A menos que su tiempo de ping sea menor que su latencia de acceso aleatorio HD, no es una victoria.
Peter Cordes

No veo cómo esto califica como "RAM adicional". No es diferente a volcar algunos datos en un archivo en un disco local, ¿no?
ivan_pozdeev

Para un cliente Wndows, se puede compartir un dispositivo de bloque en Linux a través de Samba y montarlo como un disco en Windows con ImDisk (el tamaño deberá especificarse manualmente).
ivan_pozdeev

También he hecho esto en el pasado en Linux, aunque utilicé mi propia implementación de servidor-cliente nbd, funcionó bien usar el dispositivo de bloque nbd como una partición de intercambio.
hanshenrik

9

Dados los pequeños detalles sin importancia "Windows 10, la estación de trabajo tiene 8G B de RAM" , en realidad solo hay una respuesta sensata: comprar más RAM y ejecutar menos basura.

Comprar una SSD y colocar el archivo de la página allí sería la siguiente mejor opción, pero realmente ... compre más RAM.

Por supuesto, es posible servir el archivo de página ("compartir memoria") a través de la red, pero es una muy mala idea. Si bien es cierto que existen casos límite donde el tiempo de acceso a través de la red va a ser mejor que el acceso a una unidad local, que es irrelevante para su caso de uso, ya que se necesita constante el tiempo de acceso de bajo y alto ancho de banda al mismo tiempo. Recuerde, no está anticipando fallas de una o dos páginas, está intercambiando constantemente. A menos que esté dispuesto a pagar un par de miles, no hay forma de que esté cerca de comprar RAM o un SSD.

8 GB no son suficientes para ejecutar Windows 10 y una aplicación con mucha memoria al mismo tiempo. Apenas es suficiente para ejecutar Word, Excel y Outlook al mismo tiempo. Esa es exactamente la típica "configuración corporativa de mierda total" completamente inutilizable con la que millones de personas tienen que vivir cada día en sus computadoras portátiles de trabajo. Invierta 100-200 monedas en otro módulo de memoria, y amortiza su costo en una semana (las cosas que tomaron minutos ahora toman segundos, y el tiempo es dinero; desafortunadamente, esto a menudo es difícil de conseguir en la cabeza de su contador local de frijoles).

Alternativamente, si posee la máquina, puede usar NTLite para reducir la basura de Windows 10, reduciendo su huella de memoria. O bien, puede desactivar el 80% de los servicios en su mayoría innecesarios. Parece increíble, pero es posible ejecutar una versión reciente de Windows con menos de 2 GB de RAM utilizada.

Pero en realidad, solo compre RAM ... es mucho más rápido y fácil que pasar horas de su valioso tiempo reduciendo la basura de Windows.


2
¿Es realmente tan malo Windows en RAM? Estoy ejecutando Debian con el sistema completo en ram (sin unidad física) y puedo tener docenas de pestañas abiertas del navegador web, texto y hojas de cálculo de LibreOffice, edición de fotos gimp y ver un video o escuchar música, dejando aproximadamente 3 conciertos gratis espacio para programas o archivos, todo en 8GB en total. No soy un hater-victoria, pero de sus palabras la "configuración total de las empresas BS" se parece mucho a sí mismo ventanas ...
Xen2050

1
Bueno, eso es discutible: el OP tiene razón. La última vez que compré 8gb machiens fue alrededor de 2010. Esto es 2017. Las aplicaciones que usan memoria de 16gb no son tan raras en ciertos campos (pista: no escribir correos electrónicos y no, la palabra también está bien, la mayoría de la gente no escribe novelas). Esta es una pequeña inversión: la memoria de 16 gb es un maldito almuerzo o algo así.
TomTom

77
@ Xen2050 Me preguntaba si realmente es tan malo, así que en mi máquina con Windows 10 de 6GB abrí Outlook, Excel, Word, Edge, tengo una instancia muy pequeña de SQL Server ejecutándose, Malwarebytes parece estar haciendo algo con 170MB , Abrí Visual Studio 2017, tengo Firefox abierto aquí, tengo un 65% de uso de memoria y Windows ni siquiera ha tenido que comenzar a usar memoria comprimida. Entonces, IME, Windows 10 funciona bien con menos de 8 GB de RAM y, de todos modos, la aparente aversión de Damon por Windows es irrelevante para la respuesta.
Andrew Morton

1
@Damon: Pero a menos que haya hecho algún tipo de análisis sobre lo que estaba consumiendo la RAM adicional, no hay base para echarle la culpa a "la basura de Windows" frente a "la basura del mercado de accesorios instalada por el empleador". Dado que muchas personas (incluido yo mismo) han realizado cálculos intensivos en memoria, en Windows 7, Windows 8.xy Windows 10, sin ese tipo de problema, sugiere (pero no prueba) que el culpable no sea parte del propio Windows.
Ben Voigt

6

Una alternativa simple sería ejecutar la aplicación en la PC remota , posiblemente bajo una cuenta de usuario dedicada, y simplemente controlarla mediante RDP, VNC o lo que sea conveniente.


Si la PC remota tiene suficiente ram ...
LateralTerminal

1
@LateralTerminal Eso está implícito.
Clonkex

2
Sí, fusionar la RAM de dos máquinas en una red ... net no funcionará, no para aplicaciones comunes (el tipo cuadrado, gris con botones y menús).
rackandboneman

6

Otra opción es implementar temporalmente la aplicación en un entorno en el que la memoria RAM se pueda ampliar o reducir fácilmente.

Vería una instancia de Amazon AWS, que se puede cambiar de tamaño con un reinicio.

Es decir, una instancia pequeña como un C5.large tiene 4 GB de RAM y 2 núcleos, y cuesta $ 2.04 USD por día para Linux, o $ 4.26 USD por día para una instalación de Windows. El espacio en disco de EBS es un costo adicional y se escala linealmente con GB asignado.

Puede configurar su sistema en este tamaño más pequeño, y luego, cuando quiera hacer todo el ruido, detenerlo, cambiar el tamaño de la instancia y ejecutar el software.

  • m5.4xlarge es 64 GB de RAM y 16 núcleos, por $ 18.44 USD / día o $ 36.10 USD / día para Windows.
  • r4.8xlarge es de 244 GB y 32 núcleos, por $ 51.07 USD / día o $ 86.40 USD / día con ventanas.
  • x1.32xlarge es 1952 GB y 128 núcleos, por $ 320.12 USD / día o $ 461.43 / día con windows

O el más grande ...

  • x1e.32xlarge es 3904 GB y 128 núcleos, por $ 640.52 USD / día o $ 781.82 / día con ventanas. Si su colega necesita más que esto, entonces el problema debe reescribirse de una manera más óptima.

https://www.ec2instances.info/ lo ayudará a elegir un tamaño adecuado. Tenga en cuenta que algunas ubicaciones cuestan más que otras. Singapur y el norte de California son caros. Sin embargo, su VM no cuesta nada cuando no se está ejecutando, aparte de los costos de almacenamiento en disco.

La desventaja es que si necesita esta memoria durante mucho tiempo, comprar tiempo de VM es una forma costosa de hacerlo. Sin embargo, los contadores parecen preferir a veces los costos operativos como el alquiler, a los costos de capital como las actualizaciones.


1
Me doy cuenta de que esta respuesta no se refiere a "acceder a la memoria RAM a través de la red" según la solicitud de OP. Es más como acceder a un host remoto que tiene más ram. Sin embargo, saber cómo funcionan los presupuestos en algunos lugares puede ser una solución válida para hacer el trabajo de una manera fundamentable.
Criggie

4

Como otros han dicho, es técnicamente posible pero no vale la pena.

Sin embargo, si desea acelerar el uso de su computadora, es posible externalizar algunas de sus aplicaciones a un servidor remoto.

Esto dependerá principalmente de lo que esté trabajando y de la aplicación que use. Si está ejecutando programas que requieren mucho tiempo de procesamiento para una pequeña salida de datos, puede hacer que se ejecuten en un servidor diferente de su computadora para ahorrar tiempo y recursos mientras trabaja en otra cosa.

El ejemplo que tengo en mente es un servidor que prueba mi código cada vez que presiono una modificación. La idea con tal solución es que se limita a casos de uso específicos.


4

Pídale a TI que compre más RAM para su PC y demuestre la necesidad de usar una captura de pantalla del uso de la aplicación en el Administrador de tareas.


44
Solución práctica ... incluso pedirle a TI que cambie temporalmente más ram de otros sistemas debería ser una respuesta "gratuita".
Xen2050

2
@ Xen2050 Mientras tanto, tu colega está llorando porque su sistema ya no arranca.
Willtech

3
@Willtech es normal y apropiado que TI mantenga repuestos de todas las partes y repuestos de sistemas de trabajo completos. El tiempo de inactividad es el costo real.
Christopher Hostage

3

Hay una solución comercial para esto, a través de una compañía llamada Kove ( http://kove.net/) Requiere una infraestructura Infiniband para funcionar en el "plano posterior" (Ethernet funciona normalmente), aunque otras opciones como RoCE a veces pueden estar disponibles, dependiendo de los detalles. Proporcionan una serie de interfaces transparentes para permitir la integración de cambio de código cero, y las API para omisión del núcleo con un acceso más directo a la CPU (es decir, evitando la sobrecarga del núcleo). En términos de rendimiento, depende de su aplicación. Si está vinculado a la CPU, el impacto podría ser mínimo (lo que puede ser sorprendente). Si tiene ancho de banda de memoria vinculado al host local, le proporcionarán una memoria más grande, pero el cuello de botella ya existente lo estrangulará. En este caso, ¿es ventajoso para la carga de trabajo tener una memoria más grande que la que se puede poner en una caja, y no se queda sin RAM? Hemos visto (muy) buenos resultados con las bibliotecas de virtualización y aprendizaje automático de Python. Las aplicaciones HPC de gama alta tienden a ser bastante peores, pero hemos utilizado las API de C y hemos logrado mantener el rendimiento aceptable mientras reducimos el recuento de nodos (los nodos estaban allí para la RAM, no para los ciclos de la CPU), lo cual es una ventaja en comparación con MPI . Es difícil saber si esta es una buena solución para su colega, pero es una opción que puede analizar. Espero que ayude. Para ser claros, no trabajo para Kove y no tengo ningún incentivo financiero, pero he colaborado con ellos durante varios años y creo que esta tecnología tiene el potencial de impactar sustancialmente la forma en que se realiza cierta computación. pero hemos utilizado las API de C y hemos logrado mantener el rendimiento aceptable mientras reducimos el recuento de nodos (los nodos estaban allí para la RAM, no los ciclos de la CPU), lo cual es una ventaja en comparación con MPI. Es difícil saber si esta es una buena solución para su colega, pero es una opción que puede analizar. Espero que ayude. Para ser claros, no trabajo para Kove y no tengo ningún incentivo financiero, pero he colaborado con ellos durante varios años y creo que esta tecnología tiene el potencial de impactar sustancialmente la forma en que se realiza cierta computación. pero hemos utilizado las API de C y hemos logrado mantener el rendimiento aceptable mientras reducimos el recuento de nodos (los nodos estaban allí para la RAM, no para los ciclos de la CPU), lo cual es una ventaja en comparación con MPI. Es difícil saber si esta es una buena solución para su colega, pero es una opción que puede analizar. Espero que ayude. Para ser claros, no trabajo para Kove y no tengo ningún incentivo financiero, pero he colaborado con ellos durante varios años y creo que esta tecnología tiene el potencial de impactar sustancialmente la forma en que se realiza cierta computación.


¿Cuántos Gigabytes de memoria puedes comprar para la configuración de infinityband?
joojaa

Sí, el problema principal aquí es el pequeño punto en el que habla de tener solo 8 GB de memoria y necesitar 16. Esto no es "¿Cómo uso el RAM remoto" sino "por qué diablos uso un sistema que tiene especificaciones de 10 años?" .
TomTom

@jooja Tenemos 6TB. Según lo que hemos visto, no hemos visto un límite. Puede seguir agregando dispositivos RAM remotos adicionales. Parece escalar de forma bastante lineal, por lo que es un problema de ingeniería / costo. Diseñamos un sistema de 1PB una vez en papel, pero obviamente no pudimos poner eso para probarlo.
Bill

@TomTom No vi el comentario sobre 8GB, pero sí, claramente si estamos hablando de 8GB frente a 16GB de RAM, unos pocos $ K para una nueva máquina resolverán el problema.
Bill

Diablos, por unos pocos cientos de dólares, probablemente pueda actualizar la RAM a 32 GB, a menos que la placa base sea ridículamente vieja y limitada.
esponjoso

2

Otro punto de vista: tal vez el problema no sea el límite de recursos del sistema, sino la aplicación derrochadora que está escribiendo su amigo. 6 GB de RAM es una gran cantidad de memoria.

El hecho de que muchas de las otras aplicaciones estén demasiado hinchadas no significa necesariamente que su aplicación amiga deba ser una de ellas. El uso de diferentes métodos de programación puede reducir los requisitos de memoria al tiempo que mejora la velocidad. Por ejemplo, si la aplicación carga todo el conjunto de datos en la memoria y luego funciona, será mucho más derrochador que, por ejemplo, almacenar datos en una base de datos SQL (local o remota) con pocos índices seleccionados y acceder a ellos desde allí. Haga que procese datos bloque por bloque si es posible, en lugar de cargarlos todos a la vez. Las estructuras en memoria también podrían ser un desperdicio. Memoria libre cuando hayas terminado con eso. No cargue en RAM lo que puede asignar en su memoria. Y cientos de otros consejos ...

Sin embargo, si la aplicación realmente necesita más memoria que debe almacenarse en otras computadoras, puede modificarse para usar memcached y similares para almacenarla allí. Puntos de bonificación ya que se escalará mejor en el futuro.


55
6 gb de memoria no es mucho dependiendo de la aplicación. Incluso los usuarios finales hacen edición de fotos (a Photoshop le encanta la RAM y una cámara de alta gama captura imágenes de 64 megapíxeles), Edición de video (MUCHO peor), luego hay trabajo matemático. Diablos, incluso Excel usará con mucho gusto un par de GB. No todos escriben correos electrónicos, usan Twitter y otras cosas similares.
TomTom

@TomTom si necesita un alto procesamiento de megapíxeles, tendrá altos requisitos de memoria (por la naturaleza de la solicitud). Pero a menos que esté haciendo un empalme del genoma de ADN en su hoja de Excel y todavía esté usando un par de GB de RAM, es exactamente el tipo de programación desordenada y descuidada de la que estoy hablando. Usted sabe, como, su presupuesto familiar fue procesado felizmente tan rápido (o más rápido) en Lotus 1-2-3 hace algunas décadas en máquinas con 3 órdenes de magnitud menos RAM (y al menos cientos de procesadores más lentos) que su Excel de hoy.
Matija Nalis

1
Vaya, qué ignorante anser. Solo puedo suponer que tienes muy poca experiencia con lo que la gente usa Excel. Cuando Microsoft hizo la versión de 64 bits de Office, dijeron que tiene poco uso, EXCEPTO para Access y Excel ya que hay algunas personas (en su mayoría gerentes) que ejecutan análisis brutalmente grandes a través de Excel, usando muchos gigabytes de memoria. La flexibilidad de Excel y la accesibilidad para quienes no son programadores lo convierten en su herramienta (los estadísticos tienden a estar capacitados para usar R). Personalmente, he visto archivos de Excel de 200 hojas de algunas personas de finanzas.
TomTom

Si el presupuesto de su hogar demora mucho en calcularse en Excel, usted es mucho más rico que yo. Pregunta interesante sobre Excel vs 1-2-3: el ciclo de cálculo del núcleo puede ser más rápido en 1-2-3 porque no funciona tanto. Pero en una máquina multinúcleo, Excel vencerá fácilmente 1-2-3. Y, obviamente, las gigantescas hojas de empalme del genoma probablemente no se abrirán en 1-2-3 debido a los tamaños de las hojas. En aras de la transparencia, debo admitir que anteriormente trabajé en Excel en el equipo central de cálculo, por lo que puedo ser parcial ...
Chris Rae

1

Entonces, el usuario preguntó CÓMO compartir la memoria a través de la red. No si es una buena idea. Así que aquí es cómo puedes hacerlo.

No digo que esta sea una buena idea, o será rentable, pero debería funcionar.

  • Computadora 1 = "maestro" - donde se ejecuta el código
  • Computadora 2 = "niño" - donante de memoria

Supongo que este no es Windows Server donde podría crear un punto de montaje iSCSI.

Computadora 1 Pasos:

  1. Descargue el ramdisk gratuito de Dataram: http://memory.dataram.com/products-and-services/software/ramdisk
  2. Cree un ramdisk y formatee con NTFS: las instrucciones están disponibles en su sitio
  3. Dentro de Disk Manager, cree un archivo VHD en el disco RAM formateado con NTFS
  4. Comparta el directorio raíz de Ramdisk en la red con SMB: haga clic con el botón derecho en la unidad, comparta, comparta esta carpeta

Computadora 2 pasos:

  1. Asigne la unidad compartida del cild a una unidad
  2. Monte el VHD que creó en el paso 3 anterior en el Administrador de discos
  3. Mueva la ubicación del archivo de página local al VHD montado mediante Mover archivo de página de Windows
  4. Elimine cualquier otra entrada de archivo de página.

¡Hecho!

Advertencias: puede omitir las tonterías de VHD si Windows le permite mover el archivo de página al recurso compartido de red. No hay muchos ejemplos de esto en línea (por razones obvias).

Puede ocurrir inestabilidad completa del sistema, o algo completamente diferente. Nadie sabe realmente lo que sucedería.


0

Como mencionas "RAM" para compartir en la red, no solo "memoria" de ningún tipo, la respuesta final será teóricamente sí, prácticamente no.

Mientras que otros tipos de memoria como el almacenamiento y otros datos temporales se comparten regularmente a través de la red por diversos fines y razones. De la misma manera, la RAM puede ser técnicamente posible compartir a través de la red si es necesario. Pero el rendimiento y el costo serán demasiado altos para ser factibles en el mundo real.

La memoria RAM o de acceso aleatorio es utilizada por un sistema operativo como espacio de trabajo, por lo que se realizan muchas operaciones de lectura / escritura. En el sistema promedio, la capacidad de velocidad de datos con RAM es más alta en comparación con otras partes. Si coloca RAM en una red, debe tener una capacidad de transferencia de datos de muy alta velocidad y el costo será muy alto, incluso si es posible lograrlo técnicamente. Con una pequeña parte del costo de una actualización de velocidad de red, obtendrá RAM para su máquina localmente.


0

Las aplicaciones generalmente se ejecutan en la memoria virtual, por lo que su requisito de memoria virtual puede exceder la memoria física disponible del sistema sin otra consecuencia que el rendimiento. El sistema operativo será simplemente la página virtual de la memoria a cabo disco para liberar la memoria física, según sea necesario en un momento dado para un uso activo. Esto generalmente funciona bien para aplicaciones que tienen una localidad razonable (la actividad en un momento dado está algo enfocada a áreas limitadas en el espacio de memoria virtual de la aplicación). Si una aplicación tiene una localidad pobre (haciendo referencia constantemente a la memoria en todo su espacio virtual), funcionará mal a menos que toda su memoria virtual se pueda acomodar en la memoria física (toda su memoria virtual es residente).

Entonces, hay algunas posibilidades aquí:

  • Si la aplicación simplemente tiene una gran superficie pero una buena localidad, debería poder ejecutarla en la computadora que tiene disponible; el rendimiento puede ser aceptable, puede o no mejorar notablemente en una computadora que tiene más memoria.
  • Si tiene una localidad pobre, es posible que se ejecute en la computadora disponible de todos modos, muy mal. (Este parece ser el caso para ti)
  • Actualice la unidad de disco magnético (supuesta) a una unidad de estado sólido (son significativamente más rápidas)
  • Agregue memoria a la computadora que tiene disponible (si es posible)
  • Es posible que necesite encontrar una computadora que tenga más memoria y ejecutarla en eso.
  • Mejore la aplicación para que tenga una huella virtual más pequeña o una mejor localidad (si está o está asociado con el autor de la aplicación).

La idea de usar memoria en una computadora remota es básicamente crear un archivo de paginación en red . En teoría, puede funcionar, pero en la práctica, el rendimiento será mucho mejor si el archivo de paginación fuera local para la computadora (su propio disco duro) debido al ancho de banda y la latencia de la red. No importa si el sistema remoto aloja el archivo de paginación en su memoria o en su disco, el cuello de botella (el limitador de rendimiento más significativo) será la red. Esto será especialmente cierto en Internet, pero también será cierto incluso si la computadora remota está adyacente en la misma LAN.


Windows no permitirá un archivo de paginación en una unidad de red, por lo que incluso si fuera lo suficientemente rápido, simplemente no se puede hacer.
Jamie Hanrahan

@JamieHanrahan Aparentemente, puedes cambiar la configuración directamente en el registro. Sin embargo, me pregunto si excluyeron algunos detalles ya que las unidades de red son por usuario en Windows. También sospecho que esto se romperá después de un reinicio.
ivan_pozdeev

1
Sin embargo, es una idea terrible, por lo que la interfaz de usuario lo impide. Las conexiones de red no son lo suficientemente confiables para confiar en la paginación. Recuerde que se pueden paginar muchos datos del kernel (grupo paginado). Si no es accesible, incluso por un tiempo muy corto, el sistema operativo se bloqueará.
Jamie Hanrahan

0

Esto realmente depende de qué tipo de aplicación es y para qué se usa el ram.

Por ejemplo, muchas aplicaciones web pueden usar RAM a través de la red conectándose a un memcachedservidor. Esto permitirá almacenar datos de caché (y otros datos de acceso rápido) en otra computadora con mucha RAM.

Por supuesto, esto es específico de la aplicación y necesita una aplicación que pueda usar memcached. Esto no lo ayudará a abrir una segunda instancia de holgura ya que un navegador no admite el uso de dicho backend de caché.


-1

En lugar de compartir la RAM, solo codifique esa aplicación para crear un archivo .exe secundario , que se ejecutará en la PC de red y hará lo mismo en esa PC.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.