దొంగిలించు: వర్చువల్ మిషన్ల నుండి ప్రాసెసర్ సమయాన్ని దొంగిలించేవాడు

దొంగిలించు: వర్చువల్ మిషన్ల నుండి ప్రాసెసర్ సమయాన్ని దొంగిలించేవాడు

హలో! వర్చువల్ మెషీన్‌ల లోపల దొంగిలించే మెకానిక్స్ గురించి మరియు క్లౌడ్ ప్లాట్‌ఫారమ్ యొక్క సాంకేతిక డైరెక్టర్‌గా నేను డైవ్ చేయవలసి వచ్చిన దాని పరిశోధనలో మేము కనుగొనగలిగిన కొన్ని స్పష్టమైన కాని కళాఖండాల గురించి నేను మీకు సరళంగా చెప్పాలనుకుంటున్నాను. Mail.ru క్లౌడ్ సొల్యూషన్స్. ప్లాట్‌ఫారమ్ KVMలో నడుస్తుంది.

CPU దొంగిలించే సమయం అనేది వర్చువల్ మిషన్ దాని అమలు కోసం ప్రాసెసర్ వనరులను స్వీకరించని సమయం. ఈ సమయం వర్చువలైజేషన్ పరిసరాలలో అతిథి ఆపరేటింగ్ సిస్టమ్‌లలో మాత్రమే లెక్కించబడుతుంది. ఈ అత్యంత కేటాయించబడిన వనరులు ఎక్కడికి వెళ్తాయి అనేదానికి కారణాలు, జీవితంలో వలె, చాలా అస్పష్టంగా ఉన్నాయి. కానీ మేము దానిని గుర్తించాలని నిర్ణయించుకున్నాము మరియు అనేక ప్రయోగాలు కూడా చేసాము. దొంగతనం గురించి మాకు ఇప్పుడు ప్రతిదీ తెలుసు అని కాదు, కానీ మేము ఇప్పుడు మీకు ఆసక్తికరమైన విషయం చెబుతాము.

1. దొంగతనం అంటే ఏమిటి

కాబట్టి, దొంగతనం అనేది వర్చువల్ మెషీన్‌లోని ప్రాసెస్‌ల కోసం ప్రాసెసర్ సమయం లేకపోవడాన్ని సూచించే మెట్రిక్. వివరించిన విధంగా KVM కెర్నల్ ప్యాచ్‌లోస్టెల్త్ అనేది వర్చువల్ మెషీన్ ప్రక్రియను అమలు చేయడానికి క్యూలో ఉంచినప్పటికీ, హోస్ట్ OSలో ఇతర ప్రక్రియలను హైపర్‌వైజర్ అమలు చేస్తున్న సమయం. అంటే, ప్రక్రియ అమలు చేయడానికి సిద్ధంగా ఉన్న సమయానికి మరియు ప్రాసెసర్ సమయాన్ని కేటాయించిన సమయానికి మధ్య వ్యత్యాసంగా దొంగతనం లెక్కించబడుతుంది.

వర్చువల్ మెషీన్ కెర్నల్ హైపర్‌వైజర్ నుండి స్టెల్ మెట్రిక్‌ను అందుకుంటుంది. అదే సమయంలో, హైపర్‌వైజర్ అది ఏ ఇతర ప్రక్రియలను అమలు చేస్తుందో ఖచ్చితంగా పేర్కొనలేదు, ఇది కేవలం "నేను బిజీగా ఉన్నప్పుడు, నేను మీకు సమయం ఇవ్వలేను" అని చెబుతుంది. KVMలో, దొంగ లెక్కింపుకు మద్దతు జోడించబడింది పాచెస్. ఇక్కడ రెండు కీలక అంశాలు ఉన్నాయి:

  • వర్చువల్ మిషన్ హైపర్‌వైజర్ నుండి దొంగతనం గురించి తెలుసుకుంటుంది. అంటే, నష్టాల కోణం నుండి, వర్చువల్ మెషీన్‌లోని ప్రక్రియల కోసం ఇది వివిధ వక్రీకరణలకు లోబడి ఉండే పరోక్ష కొలత.
  • హైపర్‌వైజర్ వర్చువల్ మెషీన్‌తో ఇంకా ఏమి చేస్తుందో దానితో సమాచారాన్ని పంచుకోదు - ప్రధాన విషయం ఏమిటంటే అది దానికి సమయాన్ని కేటాయించదు. దీని కారణంగా, వర్చువల్ మెషీన్ స్వయంగా స్టీల్ ఇండికేటర్‌లో వక్రీకరణలను గుర్తించదు, ఇది పోటీ ప్రక్రియల స్వభావం ద్వారా అంచనా వేయబడుతుంది.

2. దొంగతనం ప్రభావితం చేస్తుంది

2.1 దొంగ లెక్క

ముఖ్యంగా, దొంగతనం అనేది సాధారణ CPU వినియోగ సమయం వలె దాదాపుగా లెక్కించబడుతుంది. రీసైక్లింగ్ ఎలా పరిగణించబడుతుందనే దాని గురించి చాలా సమాచారం లేదు. బహుశా చాలా మంది ఈ ప్రశ్నను స్పష్టంగా భావిస్తారు. కానీ ఇక్కడ ఆపదలు కూడా ఉన్నాయి. ఈ ప్రక్రియతో మిమ్మల్ని పరిచయం చేసుకోవడానికి, మీరు చదవగలరు బ్రెండన్ గ్రెగ్ వ్యాసం: వినియోగాన్ని లెక్కించేటప్పుడు మీరు చాలా సూక్ష్మ నైపుణ్యాల గురించి మరియు కింది కారణాల వల్ల ఈ గణన తప్పుగా ఉన్నప్పుడు పరిస్థితుల గురించి నేర్చుకుంటారు:

  • ప్రాసెసర్ వేడెక్కుతుంది, దీనివల్ల చక్రాలు దాటవేయబడతాయి.
  • ప్రాసెసర్ క్లాక్ స్పీడ్‌ని మార్చే టర్బో బూస్ట్‌ని ఎనేబుల్/డిసేబుల్ చేయండి.
  • స్పీడ్‌స్టెప్ వంటి ప్రాసెసర్ పవర్-పొదుపు సాంకేతికతలను ఉపయోగిస్తున్నప్పుడు సంభవించే టైమ్ స్లైస్ పొడవులో మార్పు.
  • సగటును లెక్కించడంలో సమస్య: ఒక నిమిషం వినియోగాన్ని 80%గా అంచనా వేయడం వలన 100% స్వల్పకాలిక బస్ట్‌ను దాచవచ్చు.
  • స్పిన్ లాక్ ప్రాసెసర్‌ని తిరిగి పొందేలా చేస్తుంది, అయితే వినియోగదారు ప్రక్రియ దాని అమలులో ఎటువంటి పురోగతిని చూడదు. ఫలితంగా, ప్రాసెస్ ద్వారా లెక్కించబడిన ప్రాసెసర్ వినియోగం వంద శాతం ఉంటుంది, అయినప్పటికీ ప్రక్రియ భౌతికంగా ప్రాసెసర్ సమయాన్ని వినియోగించదు.

దొంగిలించడానికి ఇదే విధమైన గణనను వివరించే కథనాన్ని నేను కనుగొనలేకపోయాను (మీకు తెలిస్తే, వ్యాఖ్యలలో భాగస్వామ్యం చేయండి). కానీ, సోర్స్ కోడ్ ద్వారా న్యాయనిర్ణేతగా, గణన విధానం రీసైక్లింగ్ కోసం అదే విధంగా ఉంటుంది. కేవలం, KVM ప్రాసెస్ (వర్చువల్ మెషీన్ ప్రాసెస్) కోసం నేరుగా కెర్నల్‌లో మరొక కౌంటర్ జోడించబడుతుంది, ఇది CPU సమయం కోసం వేచి ఉన్న KVM ప్రక్రియ యొక్క వ్యవధిని గణిస్తుంది. కౌంటర్ దాని స్పెసిఫికేషన్ నుండి ప్రాసెసర్ గురించి సమాచారాన్ని తీసుకుంటుంది మరియు దాని అన్ని టిక్స్ వర్చువల్ మెషీన్ ప్రాసెస్ ద్వారా ఉపయోగించబడుతుందో లేదో తనిఖీ చేస్తుంది. అంతే అయితే, ప్రాసెసర్ వర్చువల్ మెషీన్ ప్రాసెస్‌తో మాత్రమే ఆక్రమించబడిందని మేము అనుకుంటాము. లేకపోతే, ప్రాసెసర్ వేరే పని చేస్తోందని, దొంగతనం కనిపించిందని మేము తెలియజేస్తాము.

దొంగ లెక్కింపు ప్రక్రియ సాధారణ రీసైక్లింగ్ లెక్కింపు వంటి సమస్యలకు లోబడి ఉంటుంది. ఇటువంటి సమస్యలు తరచుగా కనిపిస్తాయని చెప్పలేము, కానీ అవి నిరుత్సాహపరుస్తాయి.

2.2 KVMలో వర్చువలైజేషన్ రకాలు

స్థూలంగా చెప్పాలంటే, మూడు రకాల వర్చువలైజేషన్ ఉన్నాయి, వీటన్నింటికీ KVM మద్దతు ఇస్తుంది. దొంగతనం సంభవించే విధానం వర్చువలైజేషన్ రకంపై ఆధారపడి ఉండవచ్చు.

అనువాదం. ఈ సందర్భంలో, భౌతిక హైపర్‌వైజర్ పరికరాలతో వర్చువల్ మెషీన్ ఆపరేటింగ్ సిస్టమ్ యొక్క ఆపరేషన్ ఇలా జరుగుతుంది:

  1. అతిథి ఆపరేటింగ్ సిస్టమ్ దాని అతిథి పరికరానికి ఆదేశాన్ని పంపుతుంది.
  2. అతిథి పరికర డ్రైవర్ ఆదేశాన్ని స్వీకరిస్తుంది, పరికరం BIOS కోసం అభ్యర్థనను ఉత్పత్తి చేస్తుంది మరియు దానిని హైపర్‌వైజర్‌కు పంపుతుంది.
  3. హైపర్‌వైజర్ ప్రక్రియ భౌతిక పరికరానికి కమాండ్ టు కమాండ్‌ను అనువదిస్తుంది, ఇది ఇతర విషయాలతోపాటు మరింత సురక్షితమైనదిగా చేస్తుంది.
  4. భౌతిక పరికర డ్రైవర్ సవరించిన ఆదేశాన్ని అంగీకరిస్తుంది మరియు దానిని భౌతిక పరికరానికి పంపుతుంది.
  5. ఆదేశాలను అమలు చేయడం యొక్క ఫలితాలు అదే మార్గంలో తిరిగి వెళ్తాయి.

అనువాదం యొక్క ప్రయోజనం ఏమిటంటే ఇది ఏదైనా పరికరాన్ని అనుకరించడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు ఆపరేటింగ్ సిస్టమ్ కెర్నల్ యొక్క ప్రత్యేక తయారీ అవసరం లేదు. కానీ మీరు దీనికి చెల్లించాలి, మొదటగా, వేగంతో.

హార్డ్‌వేర్ వర్చువలైజేషన్. ఈ సందర్భంలో, హార్డ్‌వేర్ స్థాయిలో పరికరం ఆపరేటింగ్ సిస్టమ్ నుండి ఆదేశాలను అర్థం చేసుకుంటుంది. ఇది వేగవంతమైన మరియు ఉత్తమమైన మార్గం. కానీ, దురదృష్టవశాత్తూ, దీనికి అన్ని భౌతిక పరికరాలు, హైపర్‌వైజర్‌లు మరియు అతిథి ఆపరేటింగ్ సిస్టమ్‌లు మద్దతు ఇవ్వవు. ప్రస్తుతం, హార్డ్‌వేర్ వర్చువలైజేషన్‌కు మద్దతు ఇచ్చే ప్రధాన పరికరాలు ప్రాసెసర్‌లు.

పారావర్చువలైజేషన్. KVMలో పరికర వర్చువలైజేషన్ కోసం అత్యంత సాధారణ ఎంపిక మరియు అతిథి ఆపరేటింగ్ సిస్టమ్‌ల కోసం సాధారణంగా అత్యంత సాధారణ వర్చువలైజేషన్ మోడ్. దీని ప్రత్యేకత ఏమిటంటే, కొన్ని హైపర్‌వైజర్ సబ్‌సిస్టమ్‌లతో పని చేయడం (ఉదాహరణకు, నెట్‌వర్క్ లేదా డిస్క్ స్టాక్‌తో) లేదా మెమరీ పేజీల కేటాయింపు హైపర్‌వైజర్ APIని ఉపయోగించి, తక్కువ-స్థాయి ఆదేశాలను అనువదించకుండా జరుగుతుంది. ఈ వర్చువలైజేషన్ పద్ధతి యొక్క ప్రతికూలత ఏమిటంటే గెస్ట్ ఆపరేటింగ్ సిస్టమ్ కెర్నల్ తప్పనిసరిగా సవరించబడాలి, తద్వారా ఈ APIని ఉపయోగించి హైపర్‌వైజర్‌తో కమ్యూనికేట్ చేయవచ్చు. కానీ అతిథి ఆపరేటింగ్ సిస్టమ్‌లో ప్రత్యేక డ్రైవర్లను ఇన్‌స్టాల్ చేయడం ద్వారా ఇది సాధారణంగా పరిష్కరించబడుతుంది. KVMలో ఈ API అంటారు virtio API.

పారావర్చువలైజేషన్‌తో, ప్రసారంతో పోలిస్తే, వర్చువల్ మెషీన్ నుండి హోస్ట్‌లోని హైపర్‌వైజర్ ప్రక్రియకు నేరుగా ఆదేశాలను పంపడం ద్వారా భౌతిక పరికరానికి మార్గం గణనీయంగా తగ్గించబడుతుంది. ఇది వర్చువల్ మెషీన్ లోపల అన్ని సూచనల అమలును వేగవంతం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. KVMలో, ఇది virtio API ద్వారా చేయబడుతుంది, ఇది నెట్‌వర్క్ లేదా డిస్క్ అడాప్టర్ వంటి నిర్దిష్ట పరికరాలకు మాత్రమే పని చేస్తుంది. అందుకే వర్చువల్ మిషన్లలో virtio డ్రైవర్లు ఇన్‌స్టాల్ చేయబడి ఉంటాయి.

ఈ త్వరణం యొక్క ప్రతికూలత ఏమిటంటే, వర్చువల్ మెషీన్ లోపల నడిచే అన్ని ప్రక్రియలు దాని లోపల ఉండవు. ఇది కొన్ని ప్రత్యేక ప్రభావాలను సృష్టిస్తుంది, దీని ఫలితంగా దొంగిలించడంపై సంతానోత్పత్తి జరుగుతుంది. ఈ సమస్యపై వివరణాత్మక అధ్యయనాన్ని ప్రారంభించాలని నేను సిఫార్సు చేస్తున్నాను వర్చువల్ I/O కోసం ఒక API: virtio.

2.3 "ఫెయిర్" షెడ్యూల్

హైపర్‌వైజర్‌లోని వర్చువల్ మెషీన్, వాస్తవానికి, Linux కెర్నల్‌లోని షెడ్యూలింగ్ (ప్రాసెస్‌ల మధ్య వనరుల పంపిణీ) నియమాలను పాటించే ఒక సాధారణ ప్రక్రియ, కాబట్టి దానిని నిశితంగా పరిశీలిద్దాం.

Linux CFS అని పిలవబడే కంప్లీట్లీ ఫెయిర్ షెడ్యూలర్‌ని ఉపయోగిస్తుంది, ఇది కెర్నల్ 2.6.23 నుండి డిఫాల్ట్ షెడ్యూలర్‌గా మారింది. ఈ అల్గారిథమ్‌ను అర్థం చేసుకోవడానికి, మీరు Linux కెర్నల్ ఆర్కిటెక్చర్ లేదా సోర్స్ కోడ్‌ని చదవవచ్చు. CFS యొక్క సారాంశం వాటి అమలు వ్యవధిని బట్టి ప్రక్రియల మధ్య ప్రాసెసర్ సమయాన్ని పంపిణీ చేయడం. ఒక ప్రక్రియకు ఎంత ఎక్కువ CPU సమయం అవసరమో, అది తక్కువ CPU సమయాన్ని పొందుతుంది. ఇది అన్ని ప్రక్రియలు "న్యాయంగా" అమలు చేయబడుతుందని నిర్ధారిస్తుంది - తద్వారా ఒక ప్రక్రియ నిరంతరం అన్ని ప్రాసెసర్‌లను ఆక్రమించదు మరియు ఇతర ప్రక్రియలు కూడా అమలు చేయగలవు.

కొన్నిసార్లు ఈ ఉదాహరణ ఆసక్తికరమైన కళాఖండాలకు దారి తీస్తుంది. కంపైలర్ వంటి రిసోర్స్-ఇంటెన్సివ్ అప్లికేషన్‌లను రన్ చేస్తున్నప్పుడు డెస్క్‌టాప్‌లో సాధారణ టెక్స్ట్ ఎడిటర్ స్తంభింపజేయడాన్ని దీర్ఘకాల Linux వినియోగదారులు బహుశా గుర్తుంచుకోవచ్చు. డెస్క్‌టాప్ అప్లికేషన్‌లలో నాన్-రిసోర్స్-ఇంటెన్సివ్ టాస్క్‌లు కంపైలర్ వంటి రిసోర్స్-ఇంటెన్సివ్ టాస్క్‌లతో పోటీపడటం వలన ఇది జరిగింది. CFS ఇది అన్యాయమని భావిస్తుంది, కాబట్టి ఇది క్రమానుగతంగా టెక్స్ట్ ఎడిటర్‌ను ఆపివేస్తుంది మరియు కంపైలర్ యొక్క విధులను నిర్వహించడానికి ప్రాసెసర్‌ని అనుమతిస్తుంది. ఇది ఒక యంత్రాంగాన్ని ఉపయోగించి సరిదిద్దబడింది షెడ్_ఆటోగ్రూప్, కానీ టాస్క్‌ల మధ్య ప్రాసెసర్ సమయం పంపిణీ యొక్క అనేక ఇతర లక్షణాలు అలాగే ఉన్నాయి. వాస్తవానికి, ఇది CFSలో ప్రతిదీ ఎంత చెడ్డది అనే దాని గురించి కథ కాదు, కానీ ప్రాసెసర్ సమయం యొక్క “సరసమైన” పంపిణీ చాలా చిన్న పని కాదని దృష్టిని ఆకర్షించే ప్రయత్నం.

షెడ్యూలర్‌లోని మరో ముఖ్యమైన అంశం ప్రీఎంప్షన్. ప్రాసెసర్ నుండి స్నికరింగ్ ప్రక్రియను తొలగించడానికి మరియు ఇతరులను పని చేయడానికి ఇది అవసరం. ఎజెక్షన్ ప్రక్రియను కాంటెక్స్ట్ స్విచింగ్ అంటారు. ఈ సందర్భంలో, పని యొక్క మొత్తం సందర్భం భద్రపరచబడుతుంది: స్టాక్ యొక్క స్థితి, రిజిస్టర్లు మొదలైనవి, ఆ తర్వాత ప్రక్రియ వేచి ఉండటానికి పంపబడుతుంది మరియు మరొక దాని స్థానంలో ఉంటుంది. ఇది OS కోసం ఖరీదైన ఆపరేషన్ మరియు చాలా అరుదుగా ఉపయోగించబడుతుంది, కానీ దానితో అంతర్గతంగా తప్పు ఏమీ లేదు. తరచుగా సందర్భ మార్పిడి OSలో సమస్యను సూచించవచ్చు, కానీ సాధారణంగా ఇది నిరంతరంగా ఉంటుంది మరియు ప్రత్యేకంగా ఏదైనా సూచించదు.

ఒక వాస్తవాన్ని వివరించడానికి ఇంత సుదీర్ఘ కథనం అవసరం: ఒక ప్రక్రియ నిజాయితీ గల Linux షెడ్యూలర్‌లో ఎంత ఎక్కువ ప్రాసెసర్ వనరులను వినియోగించుకోవడానికి ప్రయత్నిస్తే, ఇతర ప్రక్రియలు కూడా పని చేసేలా అది వేగంగా నిలిపివేయబడుతుంది. ఇది సరైనదా కాదా అనేది సంక్లిష్టమైన ప్రశ్న, ఇది విభిన్న లోడ్‌ల క్రింద విభిన్నంగా పరిష్కరించబడుతుంది. విండోస్‌లో, ఇటీవలి వరకు, షెడ్యూలర్ డెస్క్‌టాప్ అప్లికేషన్‌ల ప్రాధాన్య ప్రాసెసింగ్‌పై దృష్టి సారించింది, ఇది బ్యాక్‌గ్రౌండ్ ప్రాసెస్‌లు స్తంభింపజేయవచ్చు. సన్ సోలారిస్‌కు ఐదు వేర్వేరు తరగతుల షెడ్యూలర్లు ఉన్నారు. మేము వర్చువలైజేషన్‌ని ప్రారంభించినప్పుడు, మేము ఆరవదాన్ని జోడించాము, ఫెయిర్ షేర్ షెడ్యూలర్, ఎందుకంటే మునుపటి ఐదు సోలారిస్ జోన్‌ల వర్చువలైజేషన్‌తో తగినంతగా పని చేయలేదు. వంటి పుస్తకాలతో ఈ సమస్యపై వివరణాత్మక అధ్యయనాన్ని ప్రారంభించాలని నేను సిఫార్సు చేస్తున్నాను సోలారిస్ ఇంటర్నల్స్: సోలారిస్ 10 మరియు ఓపెన్ సోలారిస్ కెర్నల్ ఆర్కిటెక్చర్ లేదా Linux కెర్నల్‌ను అర్థం చేసుకోవడం.

2.4 దొంగతనాన్ని ఎలా పర్యవేక్షించాలి?

ఇతర ప్రాసెసర్ మెట్రిక్ లాగా వర్చువల్ మెషీన్ లోపల దొంగతనాన్ని పర్యవేక్షించడం చాలా సులభం: మీరు ఏదైనా ప్రాసెసర్ మెట్రిక్స్ సాధనాన్ని ఉపయోగించవచ్చు. ప్రధాన విషయం ఏమిటంటే వర్చువల్ మెషీన్ Linux లో ఉంది. కొన్ని కారణాల వలన Windows దాని వినియోగదారులకు ఈ సమాచారాన్ని అందించదు. 🙁

దొంగిలించు: వర్చువల్ మిషన్ల నుండి ప్రాసెసర్ సమయాన్ని దొంగిలించేవాడు
టాప్ కమాండ్ అవుట్‌పుట్: ప్రాసెసర్ లోడ్ వివరాలు, కుడివైపు నిలువు వరుసలో - దొంగిలించండి

హైపర్‌వైజర్ నుండి ఈ సమాచారాన్ని పొందేందుకు ప్రయత్నిస్తున్నప్పుడు ఇబ్బంది తలెత్తుతుంది. మీరు హోస్ట్ మెషీన్‌లో దొంగతనాన్ని అంచనా వేయడానికి ప్రయత్నించవచ్చు, ఉదాహరణకు, లోడ్ యావరేజ్ (LA) పరామితిని ఉపయోగించి - అమలు క్యూలో వేచి ఉన్న ప్రక్రియల సంఖ్య యొక్క సగటు విలువ. ఈ పరామితిని లెక్కించే పద్ధతి సులభం కాదు, కానీ సాధారణంగా, ప్రాసెసర్ థ్రెడ్‌ల సంఖ్యతో LA సాధారణీకరించబడినట్లయితే, లైనక్స్ సర్వర్ ఏదైనా ఓవర్‌లోడ్ చేయబడిందని ఇది సూచిస్తుంది.

ఈ ప్రక్రియలన్నీ దేని కోసం వేచి ఉన్నాయి? స్పష్టమైన సమాధానం ప్రాసెసర్. కానీ సమాధానం పూర్తిగా సరైనది కాదు, ఎందుకంటే కొన్నిసార్లు ప్రాసెసర్ ఉచితం, కానీ LA స్కేల్ ఆఫ్ అవుతుంది. గుర్తుంచుకోండి NFS ఎలా పడిపోతుంది మరియు LA ఎలా పెరుగుతుంది. డిస్క్ మరియు ఇతర ఇన్‌పుట్/అవుట్‌పుట్ పరికరాలతో కూడా అదే జరుగుతుంది. కానీ నిజానికి, ప్రాసెస్‌లు ఏదైనా లాక్ ముగింపు కోసం వేచి ఉండగలవు, భౌతికంగా, I/O పరికరంతో అనుబంధించబడి లేదా మ్యూటెక్స్ వంటి లాజికల్. ఇందులో హార్డ్‌వేర్ (డిస్క్ నుండి అదే ప్రతిస్పందన) లేదా లాజిక్ (లాకింగ్ ప్రిమిటివ్‌లు అని పిలవబడేవి, ఎంటిటీలు, మ్యూటెక్స్ అడాప్టివ్ మరియు స్పిన్, సెమాఫోర్స్, కండిషన్ వేరియబుల్స్, rw లాక్‌లు, ipc లాక్‌లు) స్థాయిలో లాక్ చేయడం కూడా ఉంటుంది. ...)

LA యొక్క మరొక లక్షణం ఏమిటంటే ఇది ఆపరేటింగ్ సిస్టమ్ సగటుగా పరిగణించబడుతుంది. ఉదాహరణకు, ఒక ఫైల్ కోసం 100 ప్రక్రియలు పోటీ పడుతున్నాయి, ఆపై LA=50. ఇంత పెద్ద విలువ ఆపరేటింగ్ సిస్టమ్ చెడ్డదని సూచిస్తుంది. కానీ ఇతర వంకరగా వ్రాసిన కోడ్ కోసం, ఇది కేవలం చెడ్డది అయినప్పటికీ, ఇది సాధారణ స్థితి కావచ్చు మరియు ఆపరేటింగ్ సిస్టమ్‌లోని ఇతర ప్రక్రియలు బాధపడవు.

ఈ సగటు కారణంగా (మరియు ఒక నిమిషం కంటే తక్కువ వ్యవధిలో), LA సూచిక ద్వారా ఏదైనా నిర్ణయించడం అత్యంత ప్రతిఫలదాయకమైన పని కాదు, నిర్దిష్ట సందర్భాలలో చాలా అనిశ్చిత ఫలితాలు ఉంటాయి. మీరు దీన్ని గుర్తించడానికి ప్రయత్నిస్తే, వికీపీడియా మరియు ఇతర అందుబాటులో ఉన్న వనరులలోని కథనాలు ప్రక్రియ యొక్క లోతైన వివరణ లేకుండా సరళమైన కేసులను మాత్రమే వివరిస్తాయని మీరు కనుగొంటారు. నేను ఆసక్తి ఉన్న ప్రతి ఒక్కరినీ మళ్ళీ పంపుతాను, ఇక్కడ బ్రెండన్ గ్రెగ్  - క్రింది లింక్‌లను అనుసరించండి. ఇంగ్లీష్ మాట్లాడటానికి ఎవరు చాలా సోమరి - LA గురించి అతని ప్రసిద్ధ కథనం యొక్క అనువాదం.

3. ప్రత్యేక ప్రభావాలు

ఇప్పుడు మనం ఎదుర్కొన్న దొంగతనం యొక్క ప్రధాన కేసులను చూద్దాం. వారు పైన పేర్కొన్న అన్నింటి నుండి ఎలా అనుసరిస్తారో మరియు హైపర్‌వైజర్‌లోని సూచికలకు ఎలా సంబంధం కలిగి ఉంటారో నేను మీకు చెప్తాను.

రీసైక్లింగ్. సరళమైనది మరియు అత్యంత సాధారణమైనది: హైపర్‌వైజర్ మళ్లీ ఉపయోగించబడింది. నిజానికి, రన్నింగ్ వర్చువల్ మిషన్లు చాలా ఉన్నాయి, వాటిలో అధిక ప్రాసెసర్ వినియోగం, పోటీ చాలా ఉన్నాయి, LA వినియోగం 1 కంటే ఎక్కువ (ప్రాసెసర్ థ్రెడ్‌ల ద్వారా సాధారణీకరించబడింది). అన్ని వర్చువల్ మెషీన్లలోని ప్రతిదీ నెమ్మదిస్తుంది. హైపర్‌వైజర్ నుండి ప్రసారం చేయబడిన దొంగతనం కూడా పెరుగుతోంది, లోడ్‌ను పునఃపంపిణీ చేయడం లేదా ఎవరైనా ఆపివేయడం అవసరం. సాధారణంగా, ప్రతిదీ తార్కికంగా మరియు అర్థమయ్యేలా ఉంటుంది.

పారావర్చువలైజేషన్ వర్సెస్ సింగిల్ ఇన్‌స్టాన్స్. హైపర్‌వైజర్‌లో ఒక వర్చువల్ మెషీన్ మాత్రమే ఉంది; ఇది దానిలో కొంత భాగాన్ని వినియోగిస్తుంది, కానీ పెద్ద I/O లోడ్‌ను ఉత్పత్తి చేస్తుంది, ఉదాహరణకు డిస్క్‌లో. మరియు ఎక్కడో ఒక చిన్న దొంగతనం దానిలో కనిపిస్తుంది, 10% వరకు (అనేక ప్రయోగాల ద్వారా చూపబడింది).

కేసు ఆసక్తికరంగా ఉంది. పారావర్చువలైజ్డ్ డ్రైవర్‌ల స్థాయిలో బ్లాక్ చేయడం వల్ల దొంగతనం ఖచ్చితంగా ఇక్కడ కనిపిస్తుంది. వర్చువల్ మెషీన్ లోపల అంతరాయం సృష్టించబడుతుంది, డ్రైవర్ ద్వారా ప్రాసెస్ చేయబడుతుంది మరియు హైపర్‌వైజర్‌కు పంపబడుతుంది. హైపర్‌వైజర్‌లో అంతరాయ నిర్వహణ కారణంగా, వర్చువల్ మెషీన్ కోసం ఇది పంపిన అభ్యర్థన వలె కనిపిస్తుంది, ఇది అమలు కోసం సిద్ధంగా ఉంది మరియు ప్రాసెసర్ కోసం వేచి ఉంది, కానీ దీనికి ప్రాసెసర్ సమయం ఇవ్వబడలేదు. వర్చువల్ అమ్మాయి ఈ సమయం దొంగిలించబడిందని అనుకుంటుంది.

బఫర్ పంపబడిన సమయంలో ఇది జరుగుతుంది, ఇది హైపర్‌వైజర్ యొక్క కెర్నల్ స్పేస్‌లోకి వెళుతుంది మరియు మేము దాని కోసం వేచి ఉండటం ప్రారంభిస్తాము. అయినప్పటికీ, వర్చువల్ మెషీన్ యొక్క కోణం నుండి, అతను వెంటనే తిరిగి రావాలి. అందువల్ల, దొంగిలించబడిన గణన అల్గోరిథం ప్రకారం, ఈ సమయం దొంగిలించబడినదిగా పరిగణించబడుతుంది. చాలా మటుకు, ఈ పరిస్థితిలో ఇతర యంత్రాంగాలు ఉండవచ్చు (ఉదాహరణకు, కొన్ని ఇతర sys కాల్‌లను ప్రాసెస్ చేయడం), కానీ అవి చాలా భిన్నంగా ఉండకూడదు.

షెడ్యూలర్ వర్సెస్ అధిక లోడ్ చేయబడిన వర్చువల్ మిషన్లు. ఒక వర్చువల్ మెషీన్ ఇతరుల కంటే ఎక్కువగా దొంగిలించబడినప్పుడు, ఇది షెడ్యూలర్ కారణంగా జరుగుతుంది. ఒక ప్రక్రియ ప్రాసెసర్‌ను ఎంత ఎక్కువ లోడ్ చేస్తుందో, షెడ్యూలర్ దానిని త్వరగా తొలగిస్తుంది, తద్వారా ఇతరులు కూడా పని చేయవచ్చు. వర్చువల్ మెషీన్ తక్కువ వినియోగిస్తే, అది దొంగిలించడాన్ని చూడదు: దాని ప్రక్రియ నిజాయితీగా కూర్చుని వేచి ఉంది, మనం దానికి ఎక్కువ సమయం ఇవ్వాలి. వర్చువల్ మెషీన్ దాని అన్ని కోర్లపై గరిష్ట లోడ్‌ను ఉత్పత్తి చేస్తే, అది తరచుగా ప్రాసెసర్ నుండి తొలగించబడుతుంది మరియు వారు దానికి ఎక్కువ సమయం ఇవ్వకుండా ప్రయత్నిస్తారు.

వర్చువల్ మెషీన్‌లోని ప్రాసెస్‌లు మరింత ప్రాసెసర్‌ను పొందడానికి ప్రయత్నించినప్పుడు ఇది మరింత ఘోరంగా ఉంటుంది, ఎందుకంటే అవి డేటా ప్రాసెసింగ్‌ను ఎదుర్కోలేవు. అప్పుడు హైపర్‌వైజర్‌లోని ఆపరేటింగ్ సిస్టమ్, నిజాయితీ ఆప్టిమైజేషన్ కారణంగా, తక్కువ మరియు తక్కువ ప్రాసెసర్ సమయాన్ని అందిస్తుంది. ఈ ప్రక్రియ ఒక హిమపాతం వలె జరుగుతుంది మరియు దొంగిలించి ఆకాశానికి దూకుతుంది, అయితే ఇతర వర్చువల్ మెషీన్‌లు దీనిని గుర్తించలేవు. మరియు ఎక్కువ కోర్లు, అధ్వాన్నంగా ప్రభావితమైన యంత్రం. సంక్షిప్తంగా, అనేక కోర్లతో అధికంగా లోడ్ చేయబడిన వర్చువల్ మెషీన్‌లు ఎక్కువగా బాధపడతాయి.

తక్కువ LA, కానీ దొంగతనం ఉంది. LA సుమారుగా 0,7 అయితే (అంటే, హైపర్‌వైజర్ అండర్‌లోడ్ అయినట్లు అనిపిస్తుంది), కానీ వ్యక్తిగత వర్చువల్ మిషన్‌లలో దొంగతనం గమనించబడుతుంది:

  • ఇప్పటికే పైన వివరించిన పారావర్చువలైజేషన్‌తో కూడిన ఎంపిక. హైపర్‌వైజర్ బాగానే ఉన్నప్పటికీ వర్చువల్ మెషీన్ దొంగతనాన్ని సూచించే కొలమానాలను అందుకోగలదు. మా ప్రయోగాల ఫలితాల ప్రకారం, ఈ దొంగతనం ఎంపిక 10% మించదు మరియు వర్చువల్ మెషీన్‌లోని అప్లికేషన్‌ల పనితీరుపై గణనీయమైన ప్రభావాన్ని చూపకూడదు.
  • LA పరామితి తప్పుగా లెక్కించబడింది. మరింత ఖచ్చితంగా, ప్రతి నిర్దిష్ట క్షణంలో అది సరిగ్గా లెక్కించబడుతుంది, కానీ ఒక నిమిషం కంటే సగటున అది తక్కువగా అంచనా వేయబడుతుంది. ఉదాహరణకు, హైపర్‌వైజర్‌లో మూడింట ఒక వర్చువల్ మెషీన్ దాని అన్ని ప్రాసెసర్‌లను సరిగ్గా అర నిమిషం వినియోగిస్తే, హైపర్‌వైజర్‌లో నిమిషానికి LA 0,15 అవుతుంది; అటువంటి నాలుగు వర్చువల్ మిషన్లు ఏకకాలంలో పని చేస్తే 0,6 ఇస్తుంది. మరియు LA సూచిక ప్రకారం వాటిలో ప్రతి ఒక్కటి అర నిమిషం పాటు 25% వద్ద అడవి దొంగిలించబడిందనే వాస్తవాన్ని ఇకపై బయటకు తీయలేరు.
  • మళ్ళీ, ఎవరైనా ఎక్కువగా తింటున్నారని మరియు ఎవరైనా వేచి ఉండనివ్వాలని నిర్ణయించుకున్న షెడ్యూలర్ కారణంగా. ఈలోగా, నేను సందర్భాన్ని మారుస్తాను, అంతరాయాలను నిర్వహిస్తాను మరియు ఇతర ముఖ్యమైన సిస్టమ్ విషయాలను చూసుకుంటాను. ఫలితంగా, కొన్ని వర్చువల్ మెషీన్‌లు ఎటువంటి సమస్యలను చూడవు, మరికొన్ని తీవ్రమైన పనితీరు క్షీణతను అనుభవిస్తాయి.

4. ఇతర వక్రీకరణలు

వర్చువల్ మెషీన్‌లో ప్రాసెసర్ సమయం యొక్క సరసమైన రాబడిని వక్రీకరించడానికి ఇంకా మిలియన్ కారణాలు ఉన్నాయి. ఉదాహరణకు, హైపర్‌థ్రెడింగ్ మరియు NUMA గణనలలో ఇబ్బందులను ప్రవేశపెడతాయి. వారు ప్రక్రియను అమలు చేయడానికి కెర్నల్ ఎంపికను పూర్తిగా గందరగోళానికి గురిచేస్తారు, ఎందుకంటే షెడ్యూలర్ కోఎఫీషియంట్స్ - బరువులను ఉపయోగిస్తుంది, ఇది సందర్భాన్ని మార్చేటప్పుడు గణనను మరింత కష్టతరం చేస్తుంది.

టర్బో బూస్ట్ లేదా దీనికి విరుద్ధంగా, శక్తి పొదుపు మోడ్ వంటి సాంకేతికతల కారణంగా వక్రీకరణలు ఉన్నాయి, ఇవి వినియోగాన్ని లెక్కించేటప్పుడు, కృత్రిమంగా ఫ్రీక్వెన్సీని పెంచవచ్చు లేదా తగ్గించవచ్చు లేదా సర్వర్‌లో టైమ్ స్లైస్‌ను కూడా చేయవచ్చు. టర్బో బూస్ట్‌ను ప్రారంభించడం వలన ఒక ప్రాసెసర్ థ్రెడ్ పనితీరు మరొకదాని పనితీరులో పెరుగుదల కారణంగా తగ్గుతుంది. ఈ సమయంలో, ప్రస్తుత ప్రాసెసర్ ఫ్రీక్వెన్సీ గురించిన సమాచారం వర్చువల్ మెషీన్‌కు ప్రసారం చేయబడదు మరియు ఎవరైనా దాని సమయాన్ని దొంగిలిస్తున్నారని నమ్ముతుంది (ఉదాహరణకు, ఇది 2 GHzని అభ్యర్థించింది, కానీ సగం పొందింది).

సాధారణంగా, వక్రీకరణకు అనేక కారణాలు ఉండవచ్చు. మీరు నిర్దిష్ట సిస్టమ్‌లో వేరేదాన్ని కనుగొనవచ్చు. నేను పైన లింక్‌లు ఇచ్చిన పుస్తకాలతో ప్రారంభించడం మరియు హైపర్‌వైజర్ నుండి perf, sysdig, systemtap వంటి యుటిలిటీలను ఉపయోగించి గణాంకాలను తిరిగి పొందడం మంచిది. డజన్ల కొద్దీ.

5. ముగింపులు

  1. పారావర్చువలైజేషన్ కారణంగా కొంత మొత్తంలో దొంగతనం జరగవచ్చు మరియు ఇది సాధారణమైనదిగా పరిగణించబడుతుంది. ఈ విలువ 5-10% ఉంటుందని వారు ఇంటర్నెట్‌లో వ్రాస్తారు. వర్చువల్ మెషీన్‌లోని అప్లికేషన్‌లు మరియు దాని భౌతిక పరికరాలపై అది ఉంచే లోడ్‌పై ఆధారపడి ఉంటుంది. ఇక్కడ వర్చువల్ మెషీన్‌లలో అప్లికేషన్‌లు ఎలా అనిపిస్తాయి అనే దానిపై శ్రద్ధ పెట్టడం ముఖ్యం.
  2. హైపర్‌వైజర్‌పై లోడ్ మరియు వర్చువల్ మెషీన్ లోపల దొంగిలించడం యొక్క నిష్పత్తి ఎల్లప్పుడూ స్పష్టంగా పరస్పరం సంబంధం కలిగి ఉండదు; వేర్వేరు లోడ్‌లలో నిర్దిష్ట పరిస్థితులలో దొంగతనం యొక్క రెండు అంచనాలు తప్పుగా ఉంటాయి.
  3. షెడ్యూలర్ చాలా అడిగే ప్రక్రియల పట్ల చెడు వైఖరిని కలిగి ఉన్నాడు. ఎక్కువ అడిగిన వారికి తక్కువ ఇవ్వడానికి ప్రయత్నిస్తాడు. పెద్ద వర్చువల్ మిషన్లు చెడ్డవి.
  4. పారావర్చువలైజేషన్ (వర్చువల్ మెషీన్‌లోని లోడ్, పొరుగువారి లోడ్ యొక్క లక్షణాలు, థ్రెడ్‌ల అంతటా లోడ్ పంపిణీ మరియు ఇతర అంశాలను పరిగణనలోకి తీసుకోవడం) లేకుండా కూడా కొద్దిగా దొంగిలించడం ప్రమాణంగా ఉంటుంది.
  5. మీరు నిర్దిష్ట సిస్టమ్‌లో దొంగిలించడాన్ని గుర్తించాలనుకుంటే, మీరు వివిధ ఎంపికలను అన్వేషించాలి, కొలమానాలను సేకరించాలి, వాటిని జాగ్రత్తగా విశ్లేషించాలి మరియు లోడ్‌ను సమానంగా ఎలా పంపిణీ చేయాలో ఆలోచించాలి. ఏవైనా కేసుల నుండి విచలనాలు సాధ్యమే, వీటిని తప్పనిసరిగా ప్రయోగాత్మకంగా నిర్ధారించాలి లేదా కెర్నల్ డీబగ్గర్‌లో చూడాలి.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి