Journal le langage E et l'informatique distribuée

Posté par .
6
29
mai
2011

L'autre jour je traînais sur le site du langage E, et je survolais la doc. J'apprends alors que c'est un langage conçu notamment pour gérer la programmation distribuée.

Ce serait drôlement cool si plus de programmes pouvaient être écrits dans un tel langage.

Imaginez par exemple que vous lancez l'encodage d'une vidéo, un calcul complexe pour votre thèse de doctorat, un rendu sous Blender ou que sais-je encore, et qu'en fait les calculs se fassent quelque part sur le net, par des milliers de machines choisies au hasard ou en fonction de leur disponibilité.

En gros ce serait comme si votre PC était un terminal pour un super-méga-ordinateur. Une sorte de BOINC généralisé et programmable.

Est-ce encore de la science fiction ? Je n'en suis pas sûr, et je ne serais pas étonné si ça prenne forme au cours de ce siècle.

  • # un sujet

    Posté par . Évalué à 6.

    Apres un rapide coup d'oeil, le langage à l'air interessant sur pas mal de points, notamment au niveau sécu.
    Par contre niveau informatique distribué, je ne vois pas trop l'apport par rapport aux solutions déjà existante pour de nombreux langages de scripts.
    L'autre problématique pour les exemples que tu donnes (l'encodage vidéo et le rendu sous blender), c'est que l'envoi des données sur internet est (actuellement) bien plus long que le calcul lui même.

    • [^] # Re: un sujet

      Posté par (page perso) . Évalué à 1.

      Ça me semble être le principe des trojans l'informatique distribuée. Bon, bien sur, je choisi de faire du boinc.
      Il faut donc être d'accord et s'inscrire, sinon c'est un ver.
      Cela reste possible.
      Amis ayant besoin de faire du calcul, développez un virus !

      « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

    • [^] # Re: un sujet

      Posté par . Évalué à 3.

      l'envoi des données (...) est (...) bien plus long que le calcul lui même
      C'est d'ailleurs toute la problèmatique du calcul distribué : paralléliser correctement les sections qui le peuvent, et minimiser les échanges entre les différents nœuds de calcul pour conserver un gain de temps total malgré les transferts de données.

  • # Erlang

    Posté par . Évalué à 6.

    L'erlang est pas mal aussi pour ca: http://www.erlang.org/

  • # Scepticisme, quand tu nous tiens...

    Posté par . Évalué à 10.

    • En acceptant les conditions d'utilisation suivantes, vous vous engagez à contribuer à l'effort de calcul distribué tout autant que vous y avez accès.
    • Il vous est donc interdit d'éteindre votre machine, qui doit être disponible au moins 80% du temps, contraintes techniques extérieures comprises.
    • Il vous est notamment interdit de couper votre machine pendant un calcul envoyé de l'extérieur, sauf cas de coupure technique sur laquelle vous n'avez pas de contrôle. Si vous désirez couper volontairement votre machine, cliquez sur l'icône "je souhaite me déconnecter bientôt. Tous vos calculs à l'extérieur seront interrompus, et ceux que vous hébergés seront terminés avant que la coupure soit effective.
    • Vous êtes également priés de NE PAS faire le rapport entre la puissance de calcul dont vous avez besoin et la consommation d'électricité que vous allez manger, sachant que comme tout le monde accède au calcul distribué en même temps, vous avez de bonnes chances de vous retrouver distribué sur une machine identique à la vôtre, temps de parcourt des données en plus.
    • Notez qu'avec la notion de calcul distribué, vous n'avez pas besoin d'un gros ordinateur... les autres non plus. Ne vous attendez pas à voir vos calculs faits sur des supers-ordinateurs, eux se démerdent mieux tous seuls qu'avec du distribué sur 10 ARM...

    Bon, ça se voit que je n'y crois pas trop?

    • [^] # Re: Scepticisme, quand tu nous tiens...

      Posté par . Évalué à 2.

      Vous êtes également priés de NE PAS faire le rapport entre la puissance de calcul dont vous avez besoin et la consommation d'électricité que vous allez manger, sachant que comme tout le monde accède au calcul distribué en même temps, vous avez de bonnes chances de vous retrouver distribué sur une machine identique à la vôtre, temps de parcourt des données en plus.

      C'est vraiment différent d'internet, ça? Ou même de l'informatique personnelle?
      Le rapport entre le cout de l'énergie consommée et l'intérêt du travail effectué, ça n'a pas empêché ni l'un ni l'autre de se développer.

    • [^] # Re: Scepticisme, quand tu nous tiens...

      Posté par . Évalué à -2.

      Faudrait que je vérifie mais j'ose espérer que les systèmes de calculs distribués sont conçus pour résister à une interruption de service pour un noeud donné, qu'il y a une certaine redondance dans les requêtes, une certaine analyse statistique des ressources disponibles, etc.

      Sinon ça n'aurait aucun intérêt. Un peu comme si un fichier disparaissait d'un réseau torrent dès lors que je le supprime sur mon disque.

      • [^] # Re: Scepticisme, quand tu nous tiens...

        Posté par . Évalué à 3.

        Normalementt ça doit être prévu, pour ne pas recommencer depuis le début. Par contre je pense que si tu préviens le système que tu vas arrêter un noeud, il aura le temps de migrer tranquillement le process ainsi que ses données vers un autre noeud, ce qui doit prendre moins de temps que de reprendre le calcul à un point de commit donné.

        • [^] # Re: Scepticisme, quand tu nous tiens...

          Posté par . Évalué à 2.

          Exactement.
          On parle de calculs à grande échelle non?
          Le but, c'est d'accéder à une plus grosse puissance à moindre coût, non?
          Si la moitié de la puissance est passée à faire la moitié du calcul atomique et puis pouf! Plus rien, ordi éteint, ben on va pas réduire la bande-passante et optimiser la puissance disponible...

          • [^] # Re: Scepticisme, quand tu nous tiens...

            Posté par . Évalué à 2.

            Je ne comprends pas ou tu veux en venir. Peux-tu etayer STP ?

            • [^] # Re: Scepticisme, quand tu nous tiens...

              Posté par . Évalué à 2.

              L'idée c'est d'avoir pour réseau distribué les ordinateurs du monde entier.
              Je ne sais pas pour vous, mais moi j'éteins le mien la nuit, par exemple.

              Maintenant, combien de temps perdrait-on dans les coupures intempestives des utilisateurs "normaux" (puisqu'on parle d'utiliser les ordinateurs de tout le monde)?

              Pour que les performances soient viables, il faut minimiser le risque que le calcul "atomique" (je ne sais pas comment traduire ça: le calcul affecté à un noeud en particulier, avec les données qui vont avec) soit interrompu et perdu.

              Or, le grand public (y compris nos ordis domestiques) est très loin de cette contrainte. Il faut l'imposer.

              Et je repars aussi sur un autre argument: pourquoi l'ordi du voisin serait plus puissant que le mien? Le grand public utilise sa machine plutôt suivant une plage horaire fixe (comprendre: on y est tous en même temps). Donc envoyer mes calculs à mes voisins pendant qu'eux m'envoient les leurs en même temps, je ne pense pas que ça soit très cohérent...

              • [^] # Re: Scepticisme, quand tu nous tiens...

                Posté par . Évalué à -1.

                L'idée c'est d'avoir pour réseau distribué les ordinateurs du monde entier. Je ne sais pas pour vous, mais moi j'éteins le mien la nuit, par exemple.

                Peut-être mais le jour et la nuit à l'échelle mondiale, c'est très relatif, hein...

                Maintenant, combien de temps perdrait-on dans les coupures intempestives des utilisateurs "normaux" (puisqu'on parle d'utiliser les ordinateurs de tout le monde)?

                Combien exactement, je ne sais pas. Beaucoup, probablement. Mais je ne vois pas pourquoi ce ne serait pas gérable.

                Pour que les performances soient viables, il faut minimiser le risque que le calcul "atomique" (je ne sais pas comment traduire ça: le calcul affecté à un noeud en particulier, avec les données qui vont avec) soit interrompu et perdu.
                Or, le grand public (y compris nos ordis domestiques) est très loin de cette contrainte. Il faut l'imposer.

                Il ne faut pas le minimiser, il faut juste faire avec. Il n'y aucune raison d'imposer quoi que ce soit.

                Et je repars aussi sur un autre argument: pourquoi l'ordi du voisin serait plus puissant que le mien? Le grand public utilise sa machine plutôt suivant une plage horaire fixe (comprendre: on y est tous en même temps). Donc envoyer mes calculs à mes voisins pendant qu'eux m'envoient les leurs en même temps, je ne pense pas que ça soit très cohérent...

                Ben oui, déshabiller Pierre pour habiller Paul, ça ne serait pas très malin. L'idée c'est plutôt d'aller chercher les ressources CPU là où elles sont disponibles.

                • [^] # Re: Scepticisme, quand tu nous tiens...

                  Posté par . Évalué à 3.

                  Et je repars aussi sur un autre argument: pourquoi l'ordi du voisin serait plus puissant que le mien? Le grand public utilise sa machine plutôt suivant une plage horaire fixe (comprendre: on y est tous en même temps). Donc envoyer mes calculs à mes voisins pendant qu'eux m'envoient les leurs en même temps, je ne pense pas que ça soit très cohérent...

                  Ben oui, déshabiller Pierre pour habiller Paul, ça ne serait pas très malin. L'idée c'est plutôt d'aller chercher les ressources CPU là où elles sont disponibles.

                  Les systèmes distribués gèrent ce genre de contrainte. En gros un process de calcul sera lancé dans la mesure du possible sur le noeud local, et si celui-ci ne suffit pas, on le lance ailleurs. Il y a des algorithmes prévus pour gérer ça. En gros si ta machine lance un calcul ailleurs, c'est parce que ça coute moins de temps de lancer le calcul sur une autre machine que d'attendre que ta machine soit libre de calculer. Et si ta machine lance un calcul ailleurs, il nefaut pas t'attendre à ce qu'elle accepte les calculs du voisin : elle ne pourra pas les encaisser.

      • [^] # Re: Scepticisme, quand tu nous tiens...

        Posté par . Évalué à 3.

        C'est pas "on doit", c'est obligatoire. Le taux de panne augmente avec le nombre de machine, c'est mathématique (1000 machines fiables à 99.99%, ça fait déjà 10% de proba pour qu'une d'elle tombe en panne). Il y aura au moins une machine ou un bidule réseau qui tombera en panne, momentanément ou définitivement.

        Si ton système ne résiste pas à une quelconque panne alors c'est pas un système distribué.

        • [^] # Re: Scepticisme, quand tu nous tiens...

          Posté par (page perso) . Évalué à 3.

          Si ton système ne résiste pas à une quelconque panne alors c'est pas un système distribué.

          Si, il est distribué, mais très fragile.

          Sinon, le stats c'est pas mon truc, mais 99,99% de 1000 machines qui font 10% de proba qu'une machine tombe en panne, j'ai dû rater qq chose en cours (bon, y'a longtemps).

          Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

          • [^] # Re: Scepticisme, quand tu nous tiens...

            Posté par . Évalué à 6.

            Bon, d'abord ça n'est valable que sur une échelle de temps, donc disons que 1000 machines qui ont 99.99% de fonctionner correctement toute la durée du calcul, ça fait que chaque machine à 0.9999 de probabilité de fonctionner.

            Elles doivent toutes fonctionner en même temps. Si on a deux machines, la probabilité qu'elles fonctionnent toutes les deux en même temps, c'est 0.9999*0.9999.

            Si on a 1000 machines, la proba qu'elles fonctionnent toutes en même temps sans faillir, c'est 0.9999^1000=0.9048

            On tombe bien sur ~10% (ou alors c'est mes probas à moi qui sont à revoir...) de probabilité qu'au moins une machine tombe en panne.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.