¿Cómo compartir CPU o RAM?

21

En redes compartimos archivos (controlador de disco) o bases de datos. Pero, ¿cómo podemos compartir CPU o RAM a través de la red?

MJH
fuente
3
El problema al hacer esto es que, en comparación con las latencias a escala de nanosegundos entre la CPU y la RAM, ¡una red es increíblemente lenta!
Phoshi
@Phoshi: incluso con las latencias agregadas por la red, dicha configuración podría ser más rápida que el intercambio basado en disco.
Piskvor
@Piskvor: ¡Pero como cualquiera puede decirte, el intercambio basado en disco es un éxito de rendimiento bastante masivo!
Phoshi
@Phoshi: Estoy de acuerdo, de hecho lo es, y la solución óptima es "agregar más memoria física". Todo lo que digo es que la paginación a un dispositivo rápido (por ejemplo, un disco RAM) a través de una red rápida aún podría ser más rápida que la paginación a un disco físico. En otras palabras: este podría ser un dispositivo de intercambio más rápido que un intercambio en un medio físico, a pesar de que será mucho más lento que la RAM física.
Piskvor
1
@Piskvor: completamente plausible, e incluso si te equivocas, ciertamente es del mismo orden de magnitud, por lo que no sería significativamente peor en el peor de los casos. ¡Supongo que probablemente sea más barato tener más almacenamiento físico local!
Phoshi

Respuestas:

21

Para hacer esto, los programas que acceden a los recursos de CPU / RAM deben estar específicamente diseñados para acceder a dichos recursos. Un sistema configurado de esta manera se llama un clúster, y la forma típica en que se comparten los recursos es con un protocolo llamado MPI (interfaz de paso de mensajes). Es una descarga gratuita y su uso con Linux puede generar un poderoso clúster (posiblemente incluso una supercomputadora) por un costo mínimo, pero nuevamente es inútil a menos que tenga programas diseñados específicamente para aprovechar MPI. Hay algunos buenos tutoriales de clúster, si todavía está interesado, debería consultar uno.

Editar:

Recomendaría el tutorial aquí si desea configurar un clúster. Hice un clúster siguiendo este tutorial hace aproximadamente un año y funcionó bastante bien. El tutorial es un poco antiguo, por lo que algunos archivos pueden no estar exactamente donde dice el tutorial (a veces los archivos se mueven en diferentes / más nuevas distribuciones de Linux), pero si está familiarizado con Linux, no debería ser un problema. El tutorial utiliza una versión anterior de MPI, pero utilicé la versión más nueva y no tuve problemas que no se resolvieran fácilmente. Dependiendo de lo que esté haciendo, puede haber un programa que pueda aprovechar MPI. Sé que hay algunos programas de codificación de video y procesamiento de números que aprovechan MPI que pueden descargarse de fuentes universales.

ubiquibacon
fuente
por favor dime algunas referencias
MJH
1
@MJH ve mi respuesta editada.
ubiquibacon
gracias. pero este tutorial funciona en Linux y también uso Windows. Además, la aplicación debe escribir bajo MPI y su restricción.
MJH
3
@MJH si quieres trabajar con Windows, entonces solo necesitas una biblioteca MPI que funcione con Windows, pero el concepto es el mismo. MPICH funciona con Windows, o podría construir su clúster de Windows con Windows HPC (tiene conductividad MPI incorporada) si tiene alguna moneda para soltar. Si bien esto le permite usar Windows, aún tendrá que usar programas escritos para MPI, no hay forma de evitarlo en este momento.
ubiquibacon
2
Gracias por esta respuesta: el tutorial mencionado parece haber cambiado de dirección a uiowa.edu/mihpclab/hpcSystsemTechnicalReport/… ... ¡Salud!
sdaau
9

Puede compartir RAM usando discos RAM, pero eso se parece a compartir discos normales, excepto que están en la RAM de otra computadora. No hay una forma directa para que una computadora use la RAM de otra computadora como si fuera su propia RAM, pero hay algunas maneras de usar la RAM de otra computadora. Más sobre eso en el próximo párrafo.

En cuanto al uso compartido de la CPU, es posible, pero no hay un estándar único para ello. No puede simplemente compartirlo y dejar que otra computadora tome los recursos necesarios. En cambio, debe tener aplicaciones diseñadas específicamente que puedan funcionar en varias computadoras a la vez. Esto a menudo se llama computación distribuida y es utilizado por algunos proyectos de investigación como SETI @ Home, Einstein @ Home, Climateprediction.net y muchos otros.

Básicamente, los programas funcionan de tal manera que hay un servidor central que distribuye el trabajo que debe hacerse. Las computadoras en la red descargan unidades de trabajo de la computadora central y las procesan. Luego, la computadora central recibe los resultados de los clientes y los fusiona en un resultado coherente. De esta manera, las computadoras "comparten" recursos de CPU y RAM a través de la red. La desventaja de esto es que los programas deben hacerse de tal manera que funcionen a través de la red y en este momento la informática distribuida no es lo suficientemente popular entre los usos comunes de una computadora, por lo que solo un pequeño número de programas especializados la admiten. Por otro lado, se usa comúnmente con fines científicos, ya que es más barato obtener una gran cantidad de computadoras personales o estaciones de juegos 3 que obtener acceso a una computadora central.

AndrejaKo
fuente
¿hay software para la cuota de mi solicitud en mi red sin necesidad de red extranjera (por ej que quiero mezclar un archivo, que mi PC hacen esto en 7 días, pero comparto esto a mi red y la prestación de reducción de 1 día?!.?
MJH
@MJH Desafortunadamente, no he oído hablar de ningún programa que pueda hacer eso para renderizar.
AndrejaKo
1
compartir ramdisks no tiene sentido, ¿no? Obtiene la volatilidad del ram, con la lentitud del almacenamiento conectado a la red
Journeyman Geek
1
@AndrejaKo Para la transcodificación directa de videos, tampoco he oído hablar de ninguno (pero algunos que buscan en Google encontré 1 o dos proyectos en alfa / beta que sí lo hacen). Sin embargo, para el procesamiento 3D, he no visto un programa de procesamiento de 3D desde las 90 de que no soporte la red de representación .
Scott Chamberlain
5

¿hay software para compartir mi aplicación en mi red? ¡sin necesidad de una red extranjera! MJH Mar 12 '11 a 1:19

Has caído en un problema XY , no deberías preguntarte "¿cómo puedo compartir computadoras cpu y ram accros" sino "cómo puedo usar varias computadoras para hacer mis renders usando ZZZZZ más rápido?"

Depende en gran medida del software que esté usando y de lo que esté renderizando (¿está transcodificando video o está renderizando un modelo / video 3D?).

Para elegir algunos ejemplos, el software gratuito 3D Blender admite renderizado distribuido donde puede tener muchas computadoras trabajando juntas para generar una salida. Si está haciendo renderizado de video, algunos google rápidos encontraron el proyecto de código abierto MediaEncodingCluster que le permite renderizar archivos de video y audio usando múltiples computadoras.

Scott Chamberlain
fuente
5

El único sistema operativo que conozco que permite compartir CPU / RAM es plan9. Allí puede exportar / montar casi cualquier cosa. Esto no significa que las actuaciones sean buenas, por supuesto.

Heinrich Spindeln
fuente
0

Sería una buena característica compartir CPU / RAM para tareas a través de la red. Actualmente, todavía tenemos un poco de viejas nociones para mantener los programas en la caja donde suceden las cosas, pero podemos permitir que varios cpus en la misma máquina accedan al mismo fragmento de código. Tenemos un método (al menos) que hace algo como esto. Java en las páginas web funciona utilizando tanto el servidor como el cliente, pero todavía está bloqueado de una manera servidor-cliente para hacer cosas (donde el servidor contiene la mayoría de los datos). Lo que necesitamos para poder asignar tareas a las máquinas de la misma manera que lo hacemos cuando tenemos múltiples cpus (excepto que la máquina que hace el trabajo necesita tener un recorte de programa y un recorte de datos asignados. Sin embargo, esto pone una carga más pesada en la red) si las tareas en sí no son de naturaleza simple y podrían dar lugar a la formación de nuevos cuellos de botella. Me gusta la idea de dónde está '

k9dog
fuente