Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/03/2014, à 23:18

Daniel94

Virtualisation - Exercice

Bonjour, je suis étudiant en Réseau et Télécom. Mon professeur ma donner une série d'exercice à réalisé. Cependant il  y en a un que je ne comprend pas du tout, j'ai beau m'aider de mon cour mais je n'y arrive pas.

Voici l'énoncé : Un programme est une suite d'instruction élémentaires exécutées par le microprocesseur d'une machine. Dans un environnement virtualisé, chaque instruction de ce programme est "simulé" par le logiciel hyperviseur ( qui exécute un microprocesseur virtuel).

Si l'on considère que chaque instruction d'un programme virtualisé donne lieu à l’exécution de 5 instructions physique par l'hyperviseur, calculer l'allongement de la durée d’exécution de ce programme.

Merci d'avance de votre aide !!

Hors ligne

#2 Le 14/03/2014, à 23:41

Zakhar

Re : Virtualisation - Exercice

La réponse est : ça dépend. tongue


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 15/03/2014, à 00:09

J5012

Re : Virtualisation - Exercice

regle de trois a une inconnue : le temps

→ solution basique : rien a voir avec l'informatique ! la proposition est de l'enrobage ...

Hors ligne

#4 Le 15/03/2014, à 00:11

J5012

Re : Virtualisation - Exercice

le parametre est 5, l'allongement est 5t

Hors ligne

#5 Le 15/03/2014, à 00:21

Daniel94

Re : Virtualisation - Exercice

Merci de vos réponse mais je ne comprend pas très bien vos explications.Pouvez vous les détaillez si'il vous plait ?

Hors ligne

#6 Le 15/03/2014, à 00:23

Daniel94

Re : Virtualisation - Exercice

J5012 a écrit :

le parametre est 5, l'allongement est 5t

Tu veux donc dire que c'est juste un simple équation à une inconnue. Telle quel 5=5t.
Donc l'allongement est de une seconde ?

Dernière modification par Daniel94 (Le 15/03/2014, à 00:23)

Hors ligne

#7 Le 15/03/2014, à 00:50

lynn

Re : Virtualisation - Exercice

Daniel94 a écrit :

Donc l'allongement est de une seconde ?

Ca peut être une seconde, une heure, un siècle, ce n'est pas la question. Comme l'a fait remarquer J5012, dans ton exercice, c'est l'allongement qui doit être déterminé et non la valeur de "t".


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#8 Le 15/03/2014, à 08:26

Daniel94

Re : Virtualisation - Exercice

lynn a écrit :
Daniel94 a écrit :

Donc l'allongement est de une seconde ?

Ca peut être une seconde, une heure, un siècle, ce n'est pas la question. Comme l'a fait remarquer J5012, dans ton exercice, c'est l'allongement qui doit être déterminé et non la valeur de "t".

Tu va peut être me prendre pour un idiot mais malgré ton explication je vois toujours pas la solution. Ne devrons pas connaître le nombre d'instructions élémentaires exécutées par le microprocesseur et la durée de chacune d'elle pour déterminer l’allongement ?
L'allongement est bien une durée ? L'allongement correspond bien à la durée de l’exécution de la première instruction jusqu’à la dernière ?

Merci

Dernière modification par Daniel94 (Le 15/03/2014, à 08:27)

Hors ligne

#9 Le 15/03/2014, à 11:50

Zakhar

Re : Virtualisation - Exercice

L'exercice est mal posé.

Supposons que tu aies un programme pour Motorola 6809. Il s'agit du processeur qui animait les Thomson MO5... il y a 25 ans !
Sur le MO5, le processeur tournait à 1MHz. Oui j'ai bien dit MHz, pas GHz !..

Donc si tu as un hyperviseur sur un PC à base de core i7, il te faut traduire les instructions 6809 en instructions i686 pour que ton ancien programme fonctionne. Comme le dit l'exercice, tu as peut-être alors besoin de 5 instructions (en moyenne) i686 pour "émuler" les instructions 6809.

Sauf que le core i7 tourne à plusieurs GHz, et sait exécuter plusieurs instructions par cycle. Donc, même avec 5 instructions (moyenne) pour émuler une instruction 6809, ton programme émulé tournera plusieurs centaines de fois plus vite que le programme d'origine sur le 6809.

C'est d'ailleurs en général le cas lorsque tu utilises des émulateurs de console par exemple.

Il manque donc des donnés importantes dans l'énoncé pour déterminer le résultat, c'est :
- quel est le processeur émulé
- sur quel processeur on émule

Si les deux sont identiques la réponse est triviale, le programme va 5 fois moins vite. Mais c'est aussi trivialement idiot, car si tu as un programme qui tourne sur le processeur dont tu dispose, émuler les instructions n'est pas une bonne idée, et de toute façon ce serait plutôt 1 pour 1, donc la moyenne de 5 est n'importe quoi.

Donc en résumé, la réponse est celle que je t'ai faite en #2 :

ça dépend !

(et l'énoncé tel que tu nous l'as mis, ne permet pas de déterminé la réponse... à moins que tu n'aies oublié de nous recopier un bout de cet énoncé !)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#10 Le 15/03/2014, à 14:33

Daniel94

Re : Virtualisation - Exercice

J'ai bien vérifier j'ai bien donné tout l'énoncé de l'exercice. Mais trois exercices avant celui si on nous parle d’un processeur INETL Xeon 8 coeurs. Cependant on ne dit pas que ces exercices on un lien ...

Hors ligne

#11 Le 15/03/2014, à 15:09

Korak

Re : Virtualisation - Exercice

Bonjour,

Daniel94 a écrit :

Voici l'énoncé : Un programme est une suite d'instruction élémentaires exécutées par le microprocesseur d'une machine. Dans un environnement virtualisé, chaque instruction de ce programme est "simulé" par le logiciel hyperviseur ( qui exécute un microprocesseur virtuel).

Dans la première partie de l'énoncé, il y a deux choses a retenir:

1) En non-virtualisé, c'est le processeur physique qui exécute les instructions.
2) En virtualisé, c'est un processeur virtuel qui exécute les instructions.

Daniel94 a écrit :

Si l'on considère que chaque instruction d'un programme virtualisé donne lieu à l’exécution de 5 instructions physique par l'hyperviseur, calculer l'allongement de la durée d’exécution de ce programme.

Dans la deuxième partie de l'énoncé, il y a deux choses a retenir:

1) En non-virtualisé, le processeur physique exécute une instruction.
2) En virtualisé, le processeur virtuel exécute cinq instructions pour faire la même chose.

Nous ne connaissons pas la durée d'exécution de l'instruction (et l'on s'en fiche), donc on la remplace par t (le temps).

Ce qui nous donne que l'allongement est de 5t (cinq fois le temps).

Pour aller un peu plus loin, nous ne connaissons pas non plus le nombre d'instructions a exécuter. Donc on le remplace par x.

Ce qui nous donne que l'allongement est de 5tx (cinq fois le temps fois le nombre d'instructions a exécuter).

Dernière modification par Korak (Le 15/03/2014, à 15:23)


OS: Ubuntu 22.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF   Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur.   Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !

Hors ligne

#12 Le 15/03/2014, à 15:20

lynn

Re : Virtualisation - Exercice

Korak a écrit :

(...)
Nous ne connaissons pas la durée d'exécution de l'instruction (et l'on s'en fiche), donc on la remplace par t (le temps).

Ce qui nous donne que l'allongement est de 5t (cinq fois le temps).

+1


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#13 Le 15/03/2014, à 15:53

Nasman

Re : Virtualisation - Exercice

Je ne m'y connait pas trop mais je ne suis pas sur que le temps soit multiplié par 5.
En affet au lieu de procéder à n instructions élémentaires (dont les temps ne sont pas les mêmes) il faudra traiter 5xn instructions par le virtualiseur et je pense que chacune de ces 5xn instructions prendra plus de temps que la même instruction effectuée directement par le processeur.

Pour chacune de ces instructions il faudra rajouter un temps pour gérer les transferts virtualiseur/processeur.
Donc au lieu de d'un temps t pour une instruction (processeur) il faudra 5xT en virtualisé (avec T>t)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

Hors ligne

#14 Le 15/03/2014, à 15:58

DenisS

Re : Virtualisation - Exercice

Allez, juste pour chipoter smile

Le programme émulé met bien 5t à s'exécuter, mais l'allongement (par rapport au temps d'exécution du programme non émulé -- 1t) n'est que de 4t.

@Nasman : je pense que pour la simplification de l'exercice, on suppose que toutes les instructions consomment le même nombre de cycles d'horloge. Sinon, ça devient vite impossible à calculer (à moins de faire la somme instruction par instruction).

Dernière modification par DenisS (Le 15/03/2014, à 16:00)

Hors ligne

#15 Le 15/03/2014, à 16:09

Korak

Re : Virtualisation - Exercice

Nasman a écrit :

Pour chacune de ces instructions il faudra rajouter un temps pour gérer les transferts virtualiseur/processeur.

Non, l'énoncé ne le dit pas.

Nasman a écrit :

Donc au lieu de d'un temps t pour une instruction (processeur) il faudra 5xT en virtualisé (avec T>t)

Non plus.

D'après l'énoncé, pour moi c'est: l'allongement est de 5t (cinq fois le temps).

Ou: l'allongement est de 5tx (cinq fois le temps fois le nombre d'instructions a exécuter).

Il ne faut pas oublier que c'est un cas d'école, pas la réalité pure et dure.

Donc, il faut savoir faire abstraction des transferts et autres.

DenisS a écrit :

Le programme émulé met bien 5t à s'exécuter, mais l'allongement (par rapport au temps d'exécution du programme non émulé -- 1t) n'est que de 4t.

Oui, on pourrait considérer que c'est 5t - 1t. Ça dépend de ce que le prof comprend par allongement.

Dernière modification par Korak (Le 15/03/2014, à 16:16)


OS: Ubuntu 22.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF   Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur.   Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !

Hors ligne

#16 Le 15/03/2014, à 17:00

Daniel94

Re : Virtualisation - Exercice

Merci à tous de votre aide. Forum très réactif smile

Hors ligne

#17 Le 15/03/2014, à 17:05

Korak

Re : Virtualisation - Exercice

Tu as trouvé la solution???


OS: Ubuntu 22.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF   Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur.   Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !

Hors ligne

#18 Le 15/03/2014, à 17:20

Daniel94

Re : Virtualisation - Exercice

Non pas réellement mais je me suis inspirer de ce que vous m'avez dit en essayant d'expliquer ce que je fait.

Question hs : on ne peut pas ajouter de la ram, carte réseau ou autre dans une VM à chaud. Mais pourquoi cela ?

Hors ligne

#19 Le 15/03/2014, à 17:28

Korak

Re : Virtualisation - Exercice

Daniel94 a écrit :

Non pas réellement mais je me suis inspirer de ce que vous m'avez dit en essayant d'expliquer ce que je fait.

Compare nos solutions avec tes cours. Tu devrais pouvoir t'en sortir.

Daniel94 a écrit :

Question hs : on ne peut pas ajouter de la ram, carte réseau ou autre dans une VM à chaud. Mais pourquoi cela ?

Il faut arrêter la machine virtuelle pour ajouter de la RAM.

Pour la carte réseau, il faut l'installer dans la machine virtuelle.


OS: Ubuntu 22.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF   Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur.   Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !

Hors ligne

#20 Le 15/03/2014, à 17:48

Zakhar

Re : Virtualisation - Exercice

Bien sûr que si tu peux ajouter une carte réseau.

En réalité tout dépend du bus où elle est branchée et s'il supporte le hotplug ou pas.

J'ajoute régulièrement mon dongle Wifi-USB dans ma VM. Wifi = carte réseau, mais en l'occurrence il est en USB et pour l'USB c'est tout à fait prévu de rajouter/supprimer à la volée.

Maintenant si tu parles d'une carte PCI, comme ce n'est pas prévu de rajouter/enlever des choses sur le bus PCI à la volée, eh bien ça demande effectivement à redémarrer la machine.

@Korak, je ne suis pas d'accord avec ton raisonnement. Regarde bien l'énoncé. Il n'est indiqué nulle part que le programme virtualisé est sur le même jeu d'instructions que l'hyperviseur. Ta réponse paraît juste, mais elle compare des choux et des carottes en supposant que le programme virtualisé tournerait en non-virtualisé comme si c'était du 1 pour 1 sur la machine cible. Rien ne le précise. L'énoncé est donc bancal.
Si effectivement on est sur le même jeu d'instruction, ta réponse est alors correcte (et la chose est superbement ridicule, pourquoi utiliser un tel hyperviseur dans ce cas !)
Si on n'est pas sur le même jeu d'instructions, la chose a un intérêt, mais dans ce cas le programme d'origine il faut mesurer son temps sur la machine d'origine qui n'est pas celle sur laquelle tourne l'hyperviseur. Et selon la machine d'origine, l'allongement sera N%, ou ce sera un raccourcissement si l'origine est ancienne.

Exemples (même si ce n'est pas un hyperviseur) : faire tourner un programme pour mobile ARM dans QEMU. En général ça va moins vite que dans l'ARM d'origine. A contrario, PCSX qui émule une Playstation sur i686 va bien plus vite que la PSX d'origine.

Donc réponse : ça dépend !


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#21 Le 15/03/2014, à 18:00

Korak

Re : Virtualisation - Exercice

Zakhar a écrit :

@Korak, je ne suis pas d'accord avec ton raisonnement. Regarde bien l'énoncé. Il n'est indiqué nulle part que le programme virtualisé est sur le même jeu d'instructions que l'hyperviseur.

Justement, il faut ce détacher de ce genre de données.

C'est un cas d'école et il faut s'en tenir à l'énoncé.


OS: Ubuntu 22.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF   Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur.   Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !

Hors ligne

#22 Le 15/03/2014, à 18:45

Zakhar

Re : Virtualisation - Exercice

Oui, et l'énoncé n'est pas très pédagogique donc.

Effectivement, si comme tu le supposes (car c'est omis dans l'énoncé) les jeux d'instructions sont similaires, la réponse est effectivement celle que tu donnes. Mais dans ce cas là quel intérêt !

Bref, si c'est bien ça qui est attendu, je trouve ça assez idiot comme exercice et donc pas du tout pédagogique... à moins que ce ne soit pour te faire réfléchir à l'ineptie de la chose. big_smile


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#23 Le 15/03/2014, à 19:01

Korak

Re : Virtualisation - Exercice

Zakhar a écrit :

Oui, et l'énoncé n'est pas très pédagogique donc.

Si, il est pédagogique.

Zakhar a écrit :

Effectivement, si comme tu le supposes (car c'est omis dans l'énoncé) les jeux d'instructions sont similaires, la réponse est effectivement celle que tu donnes. Mais dans ce cas là quel intérêt !

Faire réfléchir l'étudiant.

Zakhar a écrit :

Bref, si c'est bien ça qui est attendu, je trouve ça assez idiot comme exercice et donc pas du tout pédagogique... à moins que ce ne soit pour te faire réfléchir à l'ineptie de la chose. big_smile

Ce n'est pas idiot du tout, ça sert a faire réfléchir l'étudiant et voir ce qu'il retire de cet exercice.

J'ai eu le même genre de question lors de mes cours de technicien en programmation.


OS: Ubuntu 22.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF   Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur.   Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !

Hors ligne

#24 Le 16/03/2014, à 01:42

J5012

Re : Virtualisation - Exercice

@Daniel94 : l'exercise vise a justement te faire reflechir sur tous les points souleves ci-avant ! ton prof ne te demande pas une reponse arithmetique ... comme je le disais au debut, le propos informatique c'est du papier cadeau = de l'enrobage pour dissimuler le vrai objectif de l'exo ...

et l'allongement est bien 5t , 5tx serait le nombre total d'instructions ...
allongement signifie la duree total d'une execution en cours, on ne compte ou ne decompte pas la premiere instruction , allongement ne veut pas dire duree supplementaire !

Hors ligne

#25 Le 16/03/2014, à 10:41

maxire

Re : Virtualisation - Exercice

@J5012, tu as une curieuse appréciation de ce qu'est un allongement, un allongement reste une variation de longueur d'un objet, généralement positive, sinon cela serait un raccourcissement, je t'invite à consulter cette définition du C.N.T.R.L..

Mais le sujet n'est pas vraiment là, cet exercice peut sembler au premier abord simpliste voire absurde, ce n'est pas le cas.
À mon point de vue  ce qui est à considérer c'est d'une part, le temps d'exécution d'une instruction par le processeur virtualisé en réel et  d'autre part, le temps d'exécution d'une instruction par  le processeur de la machine hôte.

Illustration:

La machine invitée simule un processeur dont le temps d'exécution d'une instruction élémentaire est I.
La machine hôte exécute une instruction élémentaire en un temps H.
Ces deux durées I et H sont différentes à moins que la machine invitée ne simule un environnement identique à la machine hôte.

Nous aurons donc un allongement du temps d'exécution d'une instruction élémentaire dt = 5H - I

Considérons maintenant le ratio r = I/H alors I = r x H ce qui nous donne dt = (5 - r) x H ou bien dt =  (5/r - 1) I

Je ne crois pas qu'il soit possible de simuler un processeur de dernière génération dans une machine virtuelle d'une machine hôte avec un processeur d'une génération précédente, nous aurons donc H <= I soit r >=  1

Exemples:
si r = 1 (processeurs hôte et invité identiques), dt = 4 x H, donc allongement du temps d'exécution
si r = 2 (processeur hôte 2 x plus rapide que  l'invité), dt = 3 x H donc un allongement du temps d'exécution.
Si r = 5 (processeur hôte 5 x plus rapide que l'invité), dt = 0 donc un temps d'exécution identique.
Pour r > 5, dt < 0, temps d'exécution plus rapide, pour une exécution plus rapide des instructions, il faut donc un processeur hôte au moins 5 fois plus rapide que le processeur simulé.

Il ne reste plus qu'à tracer une jolie courbe traduisant ceci, soit une étude de fonction mathématique classique ...

Conclusion:
Ceci est un très bon exercice de réflexion, un apprentissage de la problématique (comment poser un problème).

Dernière modification par maxire (Le 16/03/2014, à 10:46)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne