Comment partager CPU ou RAM?


21

Dans la mise en réseau, nous partageons un fichier (pilote de disque) ou des bases de données. Mais comment partager le CPU ou la RAM sur le réseau.


3
Le problème avec cela est que par rapport aux latences à l'échelle nanoseconde entre CPU et RAM, un réseau est incroyablement lent!
Phoshi

@Phoshi: Même avec les latences ajoutées par le réseau, une telle configuration peut être plus rapide qu'un échange sur disque.
Piskvor le

@Piskvor: Mais comme tout le monde peut vous le dire, le swap sur disque est un énorme succès en termes de performances!
Phoshi

@ Phoshi: Je suis d'accord - en effet c'est le cas, et la solution optimale est "d'ajouter plus de mémoire physique". Tout ce que je dis, c'est que la pagination vers un périphérique rapide (par exemple, un disque virtuel) sur un réseau rapide peut toujours être plus rapide que la pagination vers un disque physique. En d'autres termes: cela pourrait être un périphérique d'échange plus rapide qu'un échange sur un support physique, même s'il sera beaucoup plus lent que la RAM physique.
Piskvor

1
@Piskvor: Tout à fait plausible, et même si vous vous trompez, c'est certainement du même ordre de grandeur, donc ce ne serait pas bien pire dans le pire des cas. Je suppose que c'est probablement juste moins cher d'avoir plus de stockage physique local!
Phoshi

Réponses:


21

Pour ce faire, le ou les programmes accédant aux ressources CPU / RAM doivent être spécifiquement conçus pour accéder auxdites ressources. Un système configuré de cette manière s'appelle un cluster, et la façon typique de partager des ressources est avec un protocole appelé MPI (Message Passing Interface). C'est un téléchargement gratuit et son utilisation avec Linux peut produire un cluster puissant (peut-être même un super ordinateur) pour un coût minimal, mais encore une fois, il est inutile sauf si vous avez des programmes spécialement conçus pour tirer parti de MPI. Il existe de bons tutoriels de cluster, si vous êtes toujours intéressé, vous devriez en consulter un.

Éditer:

Je recommanderais le tutoriel ici si vous souhaitez configurer un cluster. J'ai créé un cluster en suivant ce tutoriel il y a environ un an et cela a plutôt bien fonctionné. Le tutoriel est un peu ancien, donc certains fichiers peuvent ne pas être exactement là où le tutoriel le dit (parfois les fichiers sont déplacés dans des distributions Linux différentes / plus récentes) mais si vous êtes le moins familier avec Linux, cela ne devrait pas être un problème. Le didacticiel utilise une ancienne version de MPI, mais j'ai utilisé la dernière version et je n'ai eu aucun problème qui n'était pas facilement résolu. Selon ce que vous faites, il peut y avoir un programme qui peut tirer parti de MPI. Je sais qu'il existe des programmes d'encodage vidéo et de calcul des nombres qui tirent parti du MPI et peuvent être téléchargés à partir de sources universelles.


s'il vous plaît dites-moi quelques références.
MJH

1
@MJH voir ma réponse modifiée.
ubiquibacon

merci. mais ce tutoriel fonctionne sous Linux et j'utilise Windows. par cela, l'application doit écrire sous MPI, et sa contrainte.
MJH

3
@MJH si vous voulez travailler avec Windows, vous avez juste besoin d'une bibliothèque MPI qui fonctionne avec Windows, mais le concept est le même. MPICH fonctionne avec Windows, ou vous pouvez créer votre cluster Windows avec Windows HPC (a intégré la conductivité MPI) si vous avez de l'argent à perdre. Bien que cela vous permette d'utiliser Windows, vous devrez toujours utiliser des programmes écrits pour MPI, il n'y a aucun moyen de contourner cela pour le moment.
ubiquibacon

2
Merci pour cette réponse - le didacticiel référencé semble avoir changé d'adresse en uiowa.edu/mihpclab/hpcSystsemTechnicalReport/… ... A bientôt !
sdaau

9

Vous pouvez partager la RAM à l'aide de disques RAM, mais cela ressemble à un partage de disques normaux, sauf qu'ils se trouvent dans la RAM d'un autre ordinateur. Il n'y a pas de moyen direct pour un ordinateur d'utiliser la RAM d'un autre ordinateur comme s'il s'agissait de sa propre RAM, mais il existe certaines façons d'utiliser la RAM d'un autre ordinateur. Plus à ce sujet dans le paragraphe suivant.

Quant au partage de CPU, c'est possible mais il n'y a pas de standard unique. Vous ne pouvez pas simplement le partager et laisser un autre ordinateur prendre les ressources nécessaires. Au lieu de cela, vous devez avoir des applications spécialement conçues qui peuvent fonctionner sur plusieurs ordinateurs à la fois. Ceci est souvent appelé calcul distribué et est utilisé par certains projets de recherche tels que SETI @ Home, Einstein @ Home, Climateprediction.net et bien d'autres.

Fondamentalement, les programmes fonctionnent de telle manière qu'il existe un serveur central qui distribue le travail qui doit être fait. Les ordinateurs du réseau téléchargent les unités de travail à partir de l'ordinateur central et les traitent. Après cet ordinateur central reçoit les résultats des clients et les fusionne en un résultat cohérent. De cette façon, les ordinateurs «partagent» les ressources CPU et RAM sur le réseau. L'inconvénient est que les programmes doivent être créés de manière à fonctionner sur le réseau et que l'informatique distribuée n'est pas actuellement assez populaire parmi les utilisations courantes pour un ordinateur, donc seul un petit nombre de programmes spécialisés le prennent en charge. D'un autre côté, il est couramment utilisé à des fins scientifiques car il est moins coûteux d'obtenir un grand nombre d'ordinateurs personnels ou de stations de jeu 3 que d'accéder à un ordinateur central.


existe-t-il un logiciel pour partager mon application dans mon réseau? sans avoir besoin de réseau étranger! (par exemple, je veux rendre un fichier, que mon PC le rende en 7 jours, mais je le partage sur mon réseau et le rendu est réduit à 1 jour?
MJH

@MJH Malheureusement, je n'ai pas entendu parler de programmes qui pourraient le faire pour le rendu.
AndrejaKo

1
partager des disques virtuels est un peu inutile, n'est-ce pas? Vous obtenez la volatilité du RAM, avec la lenteur du stockage en réseau
Journeyman Geek

1
@AndrejaKo Pour le transcodage vidéo direct, je n'en ai pas entendu parler non plus (mais certains faisant de la recherche sur Google, j'ai trouvé un ou deux projets en alpha / bêta qui le font). Cependant, pour le rendu 3D, je n'ai pas vu de programme de rendu 3D depuis les années 90 qui ne supporte pas le rendu réseau .
Scott Chamberlain

5

existe-t-il un logiciel pour partager mon application dans mon réseau? sans avoir besoin de réseau étranger! (par exemple, je veux rendre un fichier, que mon PC le rende en 7 jours, mais je le partage sur mon réseau et le rendu est réduit à 1 jour? - MJH 12 mars 2011 à 1:19

Vous êtes tombé sur un problème XY , vous ne devriez pas vous demander "comment puis-je partager des ordinateurs cpu et ram accros" mais "comment puis-je utiliser plusieurs ordinateurs pour accélérer mes rendus en utilisant ZZZZZ?"

Cela dépend fortement du logiciel que vous utilisez et de ce que vous rendez ( transcodez- vous de la vidéo ou rendez-vous un modèle / vidéo 3D?).

Pour prendre quelques exemples, le logiciel 3D gratuit Blender prend en charge le rendu distribué où vous pouvez avoir de nombreux ordinateurs travaillant tous ensemble pour générer une sortie. Si vous effectuez un rendu vidéo, une recherche rapide sur Google a trouvé le projet open source MediaEncodingCluster qui vous permet de rendre des fichiers vidéo et audio à l'aide de plusieurs ordinateurs.


5

Le seul système d'exploitation que je connaisse qui permet de partager CPU / RAM est plan9. Là, vous pouvez exporter / monter presque n'importe quoi. Cela ne signifie pas pour autant que les performances sont bonnes.


0

Ce serait une fonctionnalité intéressante pour partager cpu / ram pour des tâches sur le réseau. Actuellement, nous sommes toujours liés par de vieilles notions à garder les programmes dans la boîte où les choses se passent, mais nous pouvons autoriser plusieurs processeurs sur la même machine à accéder au même fragment de code. Nous avons une méthode (au moins) qui fait quelque chose comme ça. java sur les pages Web fonctionne en utilisant à la fois le serveur et le client, mais il est toujours verrouillé de manière serveur-client pour faire des choses (où le serveur contient la plupart des données). Ce dont nous avons besoin pour être en mesure d'affecter des tâches aux machines de la même manière que lorsque nous avons plusieurs processeurs (à l'exception de la machine qui fait le travail, un découpage de programme et un découpage de données doivent être affectés. Cela alourdit cependant la charge sur le réseau si les tâches elles-mêmes ne sont pas de nature simple et pourraient entraîner la formation de nouveaux goulots d'étranglement. J'aime l'idée

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.