Furtum, qui de machinis virtualis processus furatus tempore

Furtum, qui de machinis virtualis processus furatus tempore

Salve! Vobis simplicibus verbis dicere volo de mechanicis furandi intus virtualis machinis et de quibusdam artificiis non manifestis quae in eius investigatione investigare potuimus, quas intendere debebam tamquam directorem technicum nubis suggestum. Mail.ru Cloud Solutions. Rostra decurrit in KVM.

CPU tempus furandi est tempus quo virtualis machina non accipit processus facultates ad eius executionem. Hoc tempus tantum computatur in hospitio systemata operativa in ambitus virtualisationum. Causae quibus hae facultates maxime partitatae sunt, ut in vita, valde obscurae sunt. Verum nos eam inspicere decrevimus, atque etiam experimenta complura peragere. Non est quod nunc omnia de furto novimus, sed aliquid nunc interest vobis dicamus.

1. quid furantur

Furtum igitur est metricum quod processuum temporis defectum indicat processuum intra virtualem machinam. Ut dictum est in KVM kernel panni rudisFurtim tempus est quo hypervisor alios processus in exercitu OS exercet, quamvis virtualem machinae processum ad executionem amet. Hoc est, furari computatur differentia temporis cum processu paratus est ad exequendum et tempus cum processu temporis partita est.

Apparatus virtualis nuclei accipit furtum metricum ab hypervisore. Eodem tempore hypervisor non exacte determinat quid alii processus currit, simpliciter dicit "dum occupatus sum, tempus tibi dare non possum." Die KVM, subsidium furandi calculi to additum est pittacia passim disposita. Duo cardinis hic sunt:

  • Apparatus virtualis de furto ab hypervisore discit. Hoc est, ex parte damnorum, nam processus in ipsa machina virtuali haec mensura indirecta est quae variis depravationibus obnoxia esse potest.
  • Hypervisor non communicat informationes cum virtuali machina de quid aliud agit - summa res est quod tempus ei non vacat. Propter hoc, machina ipsa virtualis depravationes deprehendere non potest in indicator furto, quod a natura processuum certandi aestimari potest.

2. Quod accidit furantur

2.1. Calculum furantur

Essentialiter furtum computatur circa CPU utendo tempus normale idem. Non multum notitia est quomodo redivivus consideretur. Probabiliter quia plerique hanc quaestionem considerant manifestam. Sed et hic foveae sunt. Ad hoc processum consuescere, legere potes article by Brendan Gregg: de multis nuances cognosces cum utendo computando et de condicionibus cum hoc calculus erroneus erit propter has causas;

  • Processus overheats, cyclos to skip causans.
  • Admitte/disable turbo boost, quod processus horologii velocitatem mutat.
  • Mutatio in longitudinem temporis scalpere quae fit cum processus potentiae salutaris technologiae utens sicut SpeedStep.
  • Problema cum mediocris computandi: aestimare unum minutum utendo ad 80% posse celare breve terminum disrumpentis 100%.
  • Sera nent processus processus revinciri facit, sed processus usoris nullum progressum in eius executione videt. Quam ob rem, processus calculi utendi per processum centum centesimis erit, quamvis processus temporis processum physice non consumat.

Articulum similem pro furandi ratione describentem (si nosti, commentarium non inveni). Sed, ex codice fonte, mechanismus calculus eadem est ac redivivus. Simpliciter, in nucleo aliud calculus additur, directe ad processum KVM (processus apparatus virtualis), qui durationem processus exspectationis CPU temporis KVM numerat. Peripatetici informationes accipit de processu ab eius specificatione et compescendo, num omnes eius ricini per processum rectum machinae adhibeantur. Si haec omnia, tunc ponatur processus machinalis processus virtualis tantum occupatum esse. Alioquin notum facimus quod processus aliud agens, furatus apparuit.

Furtum processus numerandi sub iisdem quaestionibus ac regularibus redivivus computatione subicitur. Talia problemata saepe non dicam, sed dissuasiones spectant.

2.2. Genera virtualization in KVM

Latius tria sunt genera virtualisationum, quae omnia KVM sustentantur. Mechanismus furandi occursus a specie virtualizationis dependet.

iaci. In hoc casu, operatio machinae virtualis systematis operantis cum machinis hypervisoris physicis occurrit aliquid simile;

  1. Hospes operandi mandatum mandat hospitio suo fabrica.
  2. Hospes fabrica coegi imperium accipit, petitionem pro fabrica BIOS generat et ad hypervisorem mittit.
  3. Processus hypervisoris translates mandatum est ad imperandum pro fabrica physica, faciens illud, inter alia, tutiorem.
  4. Coegi fabrica corporis modificatum imperium accipit et ad ipsam fabricam physicam mittit.
  5. Eventus mandati faciendi eandem viam regrediuntur.

Commodum translationis est quod sinit te aliquam machinam aemulari nec specialem praeparationem nuclei systematis operantis requirit. Sed ad hoc debes, imprimis in celeritate.

Hardware virtualization. In hoc casu, machinam in gradu hardware ad imperium operating ratio intelligat. Hoc est celerrime et optime. Sed, proh dolor, non sustinetur ab omnibus cogitationibus physicis, hypervisoribus et hospitibus systematibus operantibus. In statu, principalia inventa quae virtualisation hardware subsidii sunt processus.

Paravirtualization. Optionem frequentissimam pro fabrica virtualizationis in KVM et fere modum frequentissimum virtualisationum rationum hospitum operandi. Proprium eius est, quod cum quibusdam subsystematibus hypervisoris opus est (exempli gratia cum acervo reticulo vel disco) vel paginarum memoriae destinatio utens hypervisore API occurrit, sine imperiorum humili gradu translato. Incommodum virtualisationis huius methodi est quod hospes nuclei systematis operandi mutandus est ut communicare possit cum hypervisore hoc API utente. Solet autem hoc solvi instituendis rectoribus specialibus in ratio operandi hospite. In KVM hoc API vocatur virtio API.

Cum paravirtualizatione, respectu dimissionis, via ad corporis fabrica signanter reducitur mittendo mandata directe a apparatus virtuali ad processum hypervisoris in exercitum. Hoc permittit ut omnium instructionum exsecutionem intra virtualem machinam accelerare sinat. In KVM, hoc fit a virtio API, quod solum ad certas machinas operatur, ut reticulum vel disci adaptor. Inde est, quod rectores virtio intus virtualis machinis installantur.

Huius accelerationis downsidium est quod non omnes processus qui intra rectum apparatus currunt, intus manent. Hoc facit aliquos speciales effectus qui provenire possunt in furando satagere. Commendo incipiens a detailed studium huius exitus cum API pro virtual I/O: virtio.

2.3. "Pulchrum" scheduling

Recta machina in hypervisore est, re vera, processus ordinarius qui legibus scheduling (distributione inter processuum) in Linux nucleo obtemperat, ut eam propius inspiciamus.

Linux sic dicta CFS utitur, Scheduler Omnino Pulchra, quae facta est default schedula ab nucleo 2.6.23. Ut hoc algorithmum intelligas, legere potes architecturam Linux Kernel vel source codicis. Essentia CFS est processus temporis distribuere inter processus secundum durationem suae executionis. Quo magis CPU tempus processum requirit, CPU tempus quo minus recipit. Hoc efficit ut omnes processus "satis" efficiantur, ut unus processus non constanter omnes habeat processus, aliosque processus etiam exequi possint.

Aliquando hoc paradigma ducit ad artificia iucunda. Diu Linux utentes probabiliter recordantur congelationem editoris ordinarii textus in escritorio cum applicationes resource intensivas ut compilator currentes. Hoc factum est quia non-resource-intensiva opera in applicationibus escritorio contenderunt cum operibus intensivis ope- ram, sicut compilator. CFS hoc iniquum esse putat, ut editor textum periodice sistit et processus officia compilatoris permittat. Hoc correctum est per mechanism sched_autogroupsed multae aliae notae distributae processus temporis inter opera manserunt. Profecto hoc non narratur quomodo omnia mala sint in CFS, sed conatum admonere ad id quod "aequum" distributio processus temporis minime minimi munus est.

Alterum momentum in schedula preemption est. Hoc est necessarium ex processu snickering calcitrare processus et alii operari. Processus eiectio dicitur commutatio contextus. Hoc in casu, totus operis contextus conservatur: status acervus, registralis, etc., post quem processus ad exspectandum mittitur, alius succedit. Haec opera pretiosa est OS et raro adhibetur, sed nihil in se mali est. Frequens contextus commutationes quaestionem in OS significare potest, sed plerumque continua est nec aliquid in particulari indicat.

Tam longa narratio opus est ut unum explicemus: quo magis processus facultates processus in honesta Linux schedula consumere nititur, eo citius obstruetur ut alii processus etiam operari possint. Utrum hoc verum sit necne, quaestio implicata est quae aliter sub diversis oneribus solvi potest. In Fenestra, usque nuper, schedula in prioritate processus applicationum escritorio notatus est, qui processus background ut congelatur. Sol Solaris quinque generibus schedulas habebat. Cum virtualizationem emisissemus, sextam unam addimus; Aequum schedulerpropterea quod quinque priores cum Solaris Zonis virtualizatione non sufficienter laborant. Commendo incipiens a detailed studium huius exitus cum libris similibus Interna Solaris: Solaris 10 et OpenSolaris Kernel Architecture aut Intellectus Linux Kernel.

2.4. Quomodo monitor furatur?

Cras furtum intra machinam virtualem, sicut quilibet alius processus metricus, simplex est: nullo processu instrumento metrico uti potes. Summa est quod virtualis apparatus in Linux est. Aliqua causa Fenestra haec informationibus suis utentibus non praebet. πŸ™

Furtum, qui de machinis virtualis processus furatus tempore
Output of the top command: details processus onus, in the rightmost column - steal

Difficultas oritur cum hanc informationem ab hypervisore obtinere conatur. Conari potes praedicere furtum machinae hospitis, exempli gratia, usura Mediocris (LA) parametri - valor mediocris numeri processuum exspectantium in executione queue. Methodus huius parametri calculandi simplex non est, sed in genere, si LA numero filorum processivorum normalizata est plus quam 1, hoc indicat Linux server aliquid cumulatum esse.

Quid hi omnes processus exspectant? Patet responsio processus. Sed responsum non est omnino verum, quia interdum processus liber est, sed LA abit scala. memento quomodo decidit NFS et quomodo crescit LA. Idem evenire potest cum disci et aliis input/output machinationibus. Re quidem vera, processus finem cuiuslibet cincinnorum expectare possunt, sive physicae, cum I/O fabrica, sive logica, ut mutex. Hoc etiam includit densis in ambitu ferramentorum (eadem responsionis ab orbe), seu logica (primitivis densis sic dictis, quae includit fasciculum entium, mutex adaptiva et subtemen, semaphores, conditiones variabiles, rw cincinnos, ipc cincinnos. ...).

Aliud notum LA est quod ratio operativa mediocris censetur. Exempli gratia, 100 processus unius fasciculi certant, deinde LA=50. Tanta vis indicare videtur quod ratio operativa malum sit. Sed in aliis prave scriptis Codicibus, hoc potest esse normale status, non obstante quod solum sit malum, et alias processus in operante ratio non patiatur.

Qua de re fere (nec minus quam per minutum) aliquid ab LA indicator definire non est munus maxime praemii, cum in casibus certis valde incertis consequitur. Si eam figurare conaris, invenies articulos in Vicipaedia aliisque opibus praestantibus solum simpliciores casus describere, sine alta explicatione processus. Mitto item omnes qui intersunt; hic ad Brendanum Gregg  β€” nexus infra sequuntur. Quis nimis piger est loqui Latine - translatio popularis articuli de LA.

3. Speciales effectus

Nunc inspiciamus principales casus furandi quos invenimus. Dicam tibi quomodo sequatur ex omnibus supradictis et quomodo indices hypervisoris narrant.

Redivivus. Simplicissimum et frequentissimum: hypervisor est reus. Immo multum currunt machinis virtualis, magni processus consummationis in iis, multum certationis, LA USUS plus quam 1 (normalised stamina processus). Omnia intus omnia virtualis machinis cohibetur. Furtum ab hypervisore traductum etiam augescit, necesse est ut onus redimat vel aliquem avertat. In genere omnia sunt logica et intelligibilia.

Paravirtualization vs. Una tantum machina virtualis hypervisoris est, sed parvam eius partem consumit, sed magnum I/O pondus producit, verbi gratia in disco. Et alicunde parvum furtum in eo apparet, usque ad 10% (ut pluribus experimentis ostenditur).

Ita res est iucunda. Furtum hic praecise apparet propter interclusionem in ambitu aurigarum paravirtualitatis. Interrumpa creatur intra machinam virtualem, ab agitatore processit et ad hypervisorem mittitur. Ob interpellationem hypervisoris tractationem, nam apparatus virtualis sicut petitionem missam spectat, ad supplicium parata est et processum exspectat, sed tempus processus non datur. Rectum puella putat hoc tempus subreptum esse.

Hoc accidit momento quiddam quod mittitur, hypervisoris spatium in nucleum it, et exspectans incipimus. Quanquam ex parte machinae virtualis, statim rediret. Ergo fu- cundum algorithmum calculum, hoc tempore furatum putatur. Verisimile, in hoc situ aliae machinae possunt esse (exempli gratia, processus quidam alius sys vocat), sed non multum differunt.

Scheduler versus onustus virtualis machinis. Cum una machina virtualis plus quam aliis furari laborat, hoc schedulae debetur. Quo magis processus processus onerat, eo celerius schedula eum calcitrabit ut caeteri operari possint. Si machina virtualis parum consumat, vix furtum videbit: processus eius honeste sedit et expectavit, necesse est ut hoc tempus reddat. Si machina virtualis maximum onus in omnibus suis nucleis producit, saepe e processu recalcitravit et non multum temporis dare conantur.

Etiam peius est, cum processus intra machinae virtualis plus processus acquirere conantur, quia cum processui notitiae tolerare non possunt. Tunc ratio operativa in hypervisore, propter honestam optimizationem, tempus processus minus et minus providebit. Hic processus accidit sicut NIVIS, et furantur ad caelum prosiliunt, licet aliae virtuales machinis id vix animadvertere possint. Et quanto plures choros, eo peius machina affectata. In summa, machinas virtuales oneratas cum multis corollis maxime laborant.

Humilis LA, sed furtum est. Si LA est circiter 0,7 (id est hypervisor subonerari videtur), sed intra singula virtualia machinis furari observatur;

  • Optio paravirtualisationi iam supra scripta est. Apparatus virtualis potest recipere metri indicans furtum, licet hypervisor tenuis sit. Secundum eventus experimentorum nostrorum haec optio furandi non excedit 10% nec notabilis ictum habere debet in applicationibus faciendis intra machinam virtualem.
  • LA modulus perperam computatur. Accuratius, in unoquoque momento recte computatur, sed cum in uno minuto averaged minoris evenit. Exempli gratia, si una machina virtualis hypervisoris per tertiam partem consumat omnes processus ejus ad exacte dimidium minutum, tunc LA per minutum hypervisoris erit 0,15; quattuor huiusmodi machinis virtualis simul operantibus 0,6 dabunt. Et quod per dimidium minutum in singulis eorum furatus erat silvestris ad 25% secundum indicator LA evelli non potest.
  • Item propter cedularum qui placuit aliquem multum comedere et aliquem expectare. Interea contextum mutabo, interpellationes tractabo et aliarum rerum magni ponderis curam geram. Quam ob rem aliae machinis virtualis quaslibet difficultates non vident, aliae vero degradationem gravissimam experiuntur.

4. Aliae corruptelae

Plus decies centena millia causae sunt ad retardationem reditus processus temporis in virtuali machina. Exempli gratia, hyperthreading et NUMA difficultates in calculos inducunt. Electionem nuclei nuclei ad capiendum processum omnino confundunt, quia schedulae coefficientes ponderibus utitur, quae calculum difficiliorem reddunt cum contextu mutando.

Distorquentur ex technologiae sicut turbo boost vel e contrario modus salutaris industriae, qui, cum utendo computando, artificiose augere vel minui potest frequentiam vel etiam tempus scalpere in calculonis. Ut turbo boost reducit unius processus sequelae ob augmentum in effectu alterius. Hoc momento, notitia de frequentia processus currentis ad virtualem machinam non transmittitur, et credit aliquem tempus suum furari (exempli gratia, postulavit 2 GHz, sed dimidium illius accepit).

In genere multae possunt esse pravitatis rationes. Aliquid aliud reperias in particulari ratione. Melius est cum libris incipere quibus nexus supra dedi, et statistica hypervisoris restituens utilitas utens ut perf, sysdig, systemtap, quarum of dozens.

5. Conclusiones

  1. Aliquid furandi copia ob paravirtualizationem fieri potest, et ordinaria considerari potest. In interreti scribunt hunc valorem 5-10% esse posse. Ex applicationibus intra virtualem machinam dependet et ab onere quod in suis corporis machinis induit. Hic interest attendere quomodo applicationes intus virtualis machinis sentiunt.
  2. Ratio oneris hypervisoris et machinae virtualis intus furantur, non semper evidenter inter se cohaerent, utrumque furtum opiniones in certis condicionibus sub diversis oneribus erroneae esse possunt.
  3. Schedularius malus habitus est ad processuum qui multum quaeritur. Plus petentibus minus dare conatur. Magnae virtuales machinae sunt malae.
  4. Modicum furtum esse potest norma etiam sine paravirtualizatione (inspecta oneris intra machinae virtualis, indoles oneris vicinorum, distributio oneris per fila et alia factorum).
  5. Si subintroire vis in certa ratione, explorare varias optiones, metrica collige, diligenter eas resolve et quomodo pondera aequaliter distribuas cogita. Deviationes ex quibusvis casibus possibilia sunt, quae experimento confirmari debent vel in nucleo debugger spectari.

Source: www.habr.com