Compartir recursos de hardware a través de la red: específicamente RAM

8

Tengo dos sistemas Una es una computadora portátil y tiene 2 GB de RAM, mientras que la otra es una computadora de escritorio con 8 GB de RAM. ¿Es posible compartir estos recursos para que ambos sistemas tengan 10 GB de RAM?

El software que quiero ejecutar en ambos sistemas es Android Studio ... que actualmente la computadora portátil no está manejando bastante bien.

Información adicional: Ambos sistemas ejecutan Windows 8 y tienen procesadores Intel Core i3 .

gracias ppl, pero tengo otra pregunta ... ¿qué tal compartirlo a través de un cable ethernet? como en un conmutador o v-lan, ¿no está utilizando Internet en absoluto y obtiene una tasa de transferencia de descenso?

Alvin
fuente
2
No, ram no es transferible.
Ctrl-alt-dlt
15
Claro que podrías hacer eso. Pero la RAM compartida solo sería tan rápida como la velocidad de su red. En otras palabras, esto es posible (bueno, teóricamente de todos modos), pero no práctico.
Ajedi32
44
No es razonable pedirle que cambie los sistemas operativos, pero sí sabe que Linux tiene compresión de memoria virtual, lo que significa que puede usar más RAM de la que tiene físicamente al comprimir ciertos segmentos con LZO.
Naftuli Kay
55
Si usabas Linux, podrías armar algo usando un disco RAM, un dispositivo de bloqueo de red y un archivo de intercambio. No creo que Windows tenga este tipo de capacidad.
Mark
44
Estás haciendo la pregunta equivocada. La pregunta que debe hacer es, ¿cómo aprovechar la máquina más poderosa para realizar compilaciones? Y una posible respuesta es el complemento Gradle SSH .
Michael Hampton

Respuestas:

21

Solo algunos programas permiten dividir procesos a través de la red (algunos programas de renderizado 3D, compartiendo RAM de manera efectiva) (Ver respuesta de Julian Knight)

El problema con internet sería demasiado lento (Ver respuesta de Spiff)

Creo que la RAM de su computadora de escritorio no será compatible con el hardware, por lo que no basta con colocar las tiras de RAM en su computadora portátil.

Lo que puedes hacer:

Instale un cliente de escritorio remoto en su computadora portátil y conéctese a su escritorio. De esta manera puede "trabajar en su escritorio" a través del túnel.

¡Entonces el programa pesado (estudio de Android) se ejecutará en su escritorio! Y la computadora portátil solo sería molestada por el cliente de escritorio remoto.

Esto, efectivamente, utiliza el hardware de la PC y, por lo tanto, funcionaría mejor (si su computadora portátil y su cliente de escritorio remoto son suficientes y fáciles de trabajar.

Me gustaría agregar que esto no "comparte" la RAM, sino que solo usa la RAM de la PC, que es suficiente.

Pablo
fuente
1
Creo que hay programas que le permiten arrastrar una ventana de un sistema operativo a otro, pero no estoy seguro del nombre, si el procesamiento aún se realiza localmente o cualquier otra cosa.
Ismael Miguel
1
Paralelos, pero eso es virtualización.
Arthur Kay
1
@Alvin Una aplicación de escritorio remota no pasaría por Internet a menos que configurara específicamente su red para eso. Si se conecta a su escritorio usando su IP en la red, la conexión existirá solo en su red.
Logarr
9

Probablemente no, ya que sería bastante lento en comparación con la paginación de memoria virtual en una unidad local. SATA-3 es de 6 gigabits por segundo, y tengo un HDD SATA-3 de 4TB 7200 RPM de dos años con una velocidad sostenida de lectura / escritura de 157 MebiByte / seg (~ 1.3 gigabit / seg). Las velocidades de transferencia sostenidas sobre Gigabit Ethernet son de alrededor de 0.942 gigabits / seg en el mejor de los casos.

Spiff
fuente
44
Tenga en cuenta que, para algunas cargas de trabajo, la latencia de acceso aleatorio es más importante que el ancho de banda (y sospecho que la cifra de ancho de banda de su disco fue para grandes accesos, no fragmentos aleatorios de 4KiB). Incluso con los gastos generales de red, la transferencia de 4KiB directamente de un sistema a otro probablemente sería más rápido que el acceso promedio al disco (con búsqueda, solución y demoras en la rotación). Antes de que los SSD se hicieran populares, se investigó el uso de la RAM de otros sistemas para el espacio de intercambio. La respuesta de FuaZe de trasladar el trabajo al sistema más grande parece más práctica.
Paul A. Clayton
3
Correcto, pero su unidad tiene una velocidad de acceso aleatorio MUCHO MUCHO menor que la de Gigabit Ethernet. Para eso necesitarías un estado sólido.
Arthur Kay
@Spiff gracias ppl, pero tengo otra pregunta ... ¿qué tal compartirlo a través de un cable de Ethernet? como en un conmutador o v-lan, ¿no está utilizando Internet en absoluto y obtiene una tasa de transferencia de descenso?
Alvin
@ArthurKay: O una unidad de clase profesional de 30Krpm que se utiliza en clústeres de virtualización de equilibrio de carga.
user2284570
@Alvin Eso es exactamente de lo que esta respuesta está hablando. "... tasas de transferencia a través de Gigabit Ethernet ..."
BenjiWiebe
1

No, esto no es posible.

La única pequeña excepción es cuando está utilizando una herramienta que es capaz de dividir el procesamiento en varias máquinas, como la representación de gráficos en 3D. Sin embargo, esto no es realmente lo que estás preguntando.

Julian Knight
fuente
¿Sabes infierno ? Como está usando x86, el acceso DMA en red puede ser de gran ayuda.
user2284570
El OP especificó Windows 8, así que eso no lo ayuda, me temo.
Julian Knight
Esto fue solo para decir que, al contrario de lo que dijiste, es posible. Para el sistema operativo, el sistema aparece como un sistema SMP de memoria no compartida.
user2284570
1

Hace unos siete años, el controlador de memoria se movió de un chip separado ( northbridge o concentrador de controlador de memoria) a la CPU. ¿Sabes por qué? Para disminuir la latencia, porque la CPU necesita acceso de muy, muy alta velocidad a la RAM. Las CPU actuales acceden a la RAM con 68 GB / s : http://ark.intel.com/products/82930/Intel-Core-i7-5960X-Processor-Extreme-Edition-20M-Cache-up-to-3_50-GHz . La moderna Ethernet de 1 Gbit / s le brinda aproximadamente 120 MB por segundo, por lo tanto, 560 veces más lento. Por lo tanto, no es algo que pueda hacer en las PC normales.

Existen soluciones basadas en computación en clúster con muchas computadoras conectadas a una red y cada una almacena parte de los datos en su RAM. Es mucho más lento que la RAM normal, pero no tiene otra opción si necesita 10 TB de datos para estar disponibles. Pero tales soluciones deben ser compatibles con el software. Y Android Studio no lo admite.

Entonces, la respuesta es no, desafortunadamente.

usuario996142
fuente
1
Para usar clústeres resistentes a fallas de virtualización, puedo decir que compartir RAM a través de Ethernet Cat5E a unidades aún más lentas funciona bien con sistemas operativos y programas modernos.
user2284570
1

Actualmente no es posible, pero en realidad se incluyó en las tarjetas de alguna forma y se escribió para " After Vista " como parte del sistema 'ReadyBoost' que le permite usar una memoria USB como medio para leer el archivo de página (y otros archivos) más rápido que usar el disco. No es RAM adicional como tal, pero si está usando mucha RAM, puede reducir la cantidad de tiempo que su computadora pasa buscando y buscando en el disco.

Parece que en su escenario se beneficiaría de una memoria USB de 32 GB dedicada a ReadyBoost .

Matthew Steeples
fuente
Esto no parece responder a la pregunta del OP. Si bien puede haber sido el plan original de ReadyBoost para permitir compartir RAM en la red, no es así como se implementa actualmente.
ChrisInEdmonton
@ChrisInEdmonton OK, he editado mi respuesta para afirmar específicamente que no es posible, pero se planificó en un punto en lugar de solo indicar que se planificó.
Matthew Steeples
2
Y ReadyBoost es demasiado lento para ser útil. Las computadoras en realidad se ralentizan cuando usan ReadyBOOST. No es un gran impulso en absoluto.
Tonny
1
@Tonny Piensa que es uno de esos escenarios de "tu millaje puede variar". Personalmente, descubrí que aceleró las computadoras más lentas y que hizo poca diferencia con las computadoras rápidas. Nunca lo experimenté ralentizar una computadora. Obviamente, no hay sustituto para una tonelada de discos RAM y SSD, pero si no puede / no lo hará y los buses USB no están llenos, entonces podría ayudar
Matthew Steeples
0

Esto no es posible, al menos no sin un gran esfuerzo por parte de Google.

Básicamente, Android Studio tendría que admitir el procesamiento distribuido de múltiples nodos al igual que la minería BitCoin y Folding @ Home.

Al presionar compilar en su computadora portátil, enviará un fragmento de código a su escritorio para su procesamiento. Una vez que el escritorio haya terminado de procesarse, lo enviará nuevamente a su computadora portátil para que pueda unir las cosas.

MonoZeus
fuente
Dudo que la compilación sea ​​lo que quema la memoria en Android Studio.
Atsby
-1

Tengo una oficina; una sala con un asistente personal y un gabinete que almacena 5000 libros y un escritorio con espacio para 20 libros. Imagine esta configuración como

  • Oficina = computadora
  • Me = procesador (CPU)
  • Asistente = sistema operativo (SO)
  • Escritorio = RAM
  • Gabinete = disco duro

En cualquier momento, mi asistente puede sacar 20 libros, como máximo, del gabinete y colocarlos en mi escritorio para trabajar. Debido al trabajo de mi secretaria, él puede colocar uno o dos libros en mi escritorio (digamos que somos pobres y no podemos pagar otro escritorio).

Si quiero trabajar en otros libros, no hay más espacio, y mi asistente tiene que determinar qué libro (s) actual (es) en el escritorio es menos probable que use en este momento, y colocará ese libro nuevamente en el gabinete para dar paso a los otros libros que quiero. El asistente tiene que caminar de un lado a otro del escritorio y del gabinete cada vez que deseo trabajar en un libro que no esté a mi alcance.

Para un sistema con RAM insuficiente, eso es lo que hace el sistema operativo para procesos que no parecen estar muy activos: tome su contenido de memoria y escríbalo en el disco en un almacén de memoria virtual, liberando RAM para otros procesos que lo necesitan. Al igual que hay una distancia entre el escritorio y el gabinete, existe una "distancia" entre el procesador, la RAM y el disco. El disco está increíblemente lejos y es lento, tal como lo experimentas con tu computadora portátil.

En la siguiente oficina, mi colega tiene un escritorio lo suficientemente espacioso para 80 libros. ¿No sería bueno si pudiera "compartir" algo de su escritorio para guardar mis libros? ¿Para poder tener virtualmente 100 libros?

Bueno, antes que nada, los asistentes en cada oficina inevitablemente necesitan colocar algunos de sus propios libros para que puedan realizar su propio trabajo (no negociable). Todos los sistemas operativos en un sistema necesitan usar algo de RAM para hacer su trabajo; de lo contrario, no tendría un sistema operativo para comenzar. Así que realmente no obtengo la asignación completa de 20 libros, ni a mi colega con una asignación completa de 80 libros. Y mi colega tiene su propio trabajo que hacer, lo que agota aún más el espacio disponible.

Además, los asistentes no están capacitados para mover libros entre oficinas (supongamos que sus niveles de competencia tienen un límite). La arquitectura existente de Windows no tiene una disposición para usar directamente la RAM de otra computadora remota.

Ahora, imagine que si los asistentes estuvieran realmente capacitados para mover libros de una oficina a otra y recuerden claramente la propiedad de los libros, caminar entre las oficinas probablemente será un procedimiento aún más lento porque caminar de una oficina a otra es una distancia mayor. No solo eso, cuando el asistente saca los libros de la otra oficina, todavía tendría que despejar el espacio en su propio escritorio, arrastrando los libros no deseados al gabinete. ¿Por qué hacerlo caminar tanto?

No es posible salir de una computadora para almacenar / recuperar cosas en otra computadora a través de la red, al menos para su caso de uso, porque la aplicación ni el sistema operativo no saben cómo lograrlo. Y tampoco sería muy eficiente.

Si desea continuar trabajando con la computadora portátil, instale más RAM (escritorio más grande) o instale un disco de estado sólido (gabinete con características de organización que agilizan la localización de libros).

Tenga en cuenta que, en algunas configuraciones, en realidad puede ser más rápido almacenar y recuperar datos de computadoras remotas (existen tecnologías de software de agrupación que hacen exactamente eso) y luego acceder a discos de giro lento, pero aún no se adaptan a su escenario.

Considere las escalas de tiempo de acceso a datos entre recursos de hardware .

icelava
fuente
77
Creo que estás interpretando la pregunta demasiado literalmente. Obviamente, es imposible que las computadoras tengan 10GB cada una, pero en principio es posible que las computadoras compartan 10GB para que, por ejemplo, puedan usar 5GB cada una en lugar de que la computadora portátil esté limitada a 2GB. El rendimiento sería terrible, pero es posible en principio.
David Richerby
@DavidRicherby - Las preguntas deben leerse literalmente. La palabra escrita es algo maravilloso, lo único que significa es exactamente lo que dices. Entonces, el autor literalmente pregunta si pueden combinar la memoria del sistema de dos computadoras independientes para aumentar el rendimiento, lo que por supuesto no es posible.
Ramhound
66
@Ramhound Parece que has entendido mal esta respuesta. Esta respuesta dice que es imposible combinar un sistema de 2GB y un sistema de 8GB para obtener dos sistemas cada uno con 10GB (porque eso sería un total de 20GB, que no existe). Interpretada demasiado literalmente, eso es lo que hace la pregunta. Estás hablando de combinar 2GB + 8GB para obtener dos sistemas que compartan 10GB, que es sobre lo que se pretende hacer la pregunta. Así que prefieres dispararte en el pie con tu afirmación de que las preguntas deben leerse literalmente: la pregunta literal no tiene sentido; la pregunta prevista al menos tiene sentido.
David Richerby
@DavidRicherby: si tú lo dices. La respuesta me pareció útil. Como señaló correctamente, no se puede combinar la memoria del sistema de dos sistemas informáticos independientes al igual que no se pueden combinar dos tanques de gas de dos automóviles independientes e independientes. Por supuesto, no estoy seguro de que salga con 220, que de hecho no tiene sentido.
Ramhound
Esta pregunta y la respuesta es perfecto ejemplo de Gigo :)
Ratna