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?
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?
Respuestas:
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.
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.
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.
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.
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á '