መስረቅ፡- ከቨርቹዋል ማሽኖች የሲፒዩ ጊዜን የሚሰርቅ

መስረቅ፡- ከቨርቹዋል ማሽኖች የሲፒዩ ጊዜን የሚሰርቅ

ሀሎ! በቨርቹዋል ማሽኖች ውስጥ ስለሚደረገው ስርቆት መካኒኮች እና በምርምር ወቅት ልናገኛቸው ስለቻልናቸው አንዳንድ ግልጽ ያልሆኑ ቅርሶች በቀላል አገላለጽ ልነግርህ እፈልጋለሁ የደመና መድረክ ቴክኒካል ዳይሬክተር ሆኜ ዘልቄ መግባት ነበረብኝ። Mail.ru የደመና መፍትሄዎች. የመሳሪያ ስርዓቱ በ KVM ላይ ይሰራል.

የሲፒዩ ስርቆት ጊዜ ቨርቹዋል ማሽኑ ለትግበራው ፕሮሰሰር ግብዓት የማይቀበልበት ጊዜ ነው። ይህ ጊዜ በእንግዳ ስርዓተ ክወናዎች ውስጥ በምናባዊ አከባቢዎች ውስጥ ብቻ ይቆጠራል. እነዚህ በጣም የተመደቡ ሀብቶች የሚሄዱበት ምክንያቶች, ልክ እንደ ህይወት, በጣም ግልጽ ያልሆኑ ናቸው. ግን እኛ ለማወቅ ወሰንን, እና ብዙ ሙከራዎችን እንኳን አደረግን. አሁን ስለ ስርቆት ሁሉንም ነገር እናውቃለን ማለት አይደለም ነገር ግን አሁን አንድ አስደሳች ነገር እንነግርዎታለን።

1. መስረቅ ምንድን ነው

ስለዚህ ስርቆት በቨርቹዋል ማሽን ውስጥ ላሉ ሂደቶች ፕሮሰሰር ጊዜ አለመኖሩን የሚያመለክት መለኪያ ነው። እንደተገለጸው በ KVM kernel patchስርቆት የቨርቹዋል ማሽን ሂደቱን ለመፈጸም ቢሰለፍም ሃይፐርቫይዘር ሌሎች ሂደቶችን በአስተናጋጅ OS ላይ የሚፈጽምበት ጊዜ ነው። ይኸውም ስርቆት የሚሰላው ሂደቱ ለመፈጸም ዝግጁ በሆነበት ጊዜ እና ሂደቱ በተመደበው ፕሮሰሰር ጊዜ መካከል ባለው ልዩነት ነው።

የቨርቹዋል ማሽን ከርነል የስርቆት መለኪያውን ከሃይፐርቫይዘር ይቀበላል። በተመሳሳይ ጊዜ, ሃይፐርቫይዘሩ ምን ሌሎች ሂደቶችን እንደሚሰራ በትክክል አይገልጽም, በቀላሉ "በተጠመድኩበት ጊዜ, ጊዜ ልሰጥህ አልችልም" ይላል. በKVM ላይ ለስርቆት ስሌት ድጋፍ ተጨምሯል። ጥገናዎች. እዚህ ሁለት ቁልፍ ነጥቦች አሉ፡-

  • ቨርቹዋል ማሽኑ ከሃይፐርቫይዘር ሾለ ስርቆት ይማራል። ያም ማለት ከኪሳራ እይታ አንጻር በቨርቹዋል ማሽኑ ላይ ላሉት ሂደቶች ይህ ለተለያዩ ማዛባት ሊጋለጥ የሚችል ቀጥተኛ ያልሆነ መለኪያ ነው።
  • ሃይፐርቫይዘር ሌላ ምን እየሰራ እንደሆነ ከቨርቹዋል ማሽኑ ጋር መረጃን አያጋራም - ዋናው ነገር ለእሱ ጊዜ አይሰጥም። በዚህ ምክንያት፣ ቨርቹዋል ማሽኑ ልሹ በስርቆት አመልካች ላይ የተዛቡ ነገሮችን መለየት አይችልም፣ ይህም በተወዳዳሪ ሂደቶች ባህሪ ሊገመገም ይችላል።

2. ስርቆትን የሚነካው

2.1. መስረቅ ስሌት

በመሠረቱ፣ መስረቅ የሚሰላው ከመደበኛው የሲፒዩ አጠቃቀም ጊዜ ጋር ተመሳሳይ ነው። እንደገና ጥቅም ላይ ማዋል እንዴት እንደሚታሰብ ብዙ መረጃ የለም። ምናልባት ብዙ ሰዎች ይህንን ጥያቄ ግልጽ አድርገው ስለሚቆጥሩት ሊሆን ይችላል. ግን እዚህም ወጥመዶች አሉ. በዚህ ሂደት እራስዎን በደንብ ለማወቅ, ማንበብ ይችላሉ ጽሑፍ በብሬንዳን Greggአጠቃቀምን ሲያሰሉ እና ይህ ስሌት በሚከተሉት ምክንያቶች ስህተት ስለሚሆንባቸው ሁኔታዎች ስለ ብዙ ልዩነቶች ይማራሉ

  • ሂደተሩ ከመጠን በላይ ይሞቃል, ይህም ዑደቶች እንዲዘለሉ ያደርጋል.
  • የማቀነባበሪያውን የሰዓት ፍጥነት የሚቀይር ቱርቦ ጭማሪን አንቃ/አቦዝን።
  • እንደ ስፒድስቴፕ ያሉ ፕሮሰሰር ሃይል ቆጣቢ ቴክኖሎጂዎችን ሲጠቀሙ የሚከሰተው የጊዜ ቁራጭ ርዝመት ለውጥ።
  • አማካዩን በማስላት ላይ ያለው ችግር፡ የአንድ ደቂቃ አጠቃቀምን በ80% መገመት የአጭር ጊዜ ፍንዳታ 100%ን ሊደብቅ ይችላል።
  • ስፒን መቆለፊያ ፕሮሰሰሩን ወደነበረበት እንዲመለስ ያደርገዋል፣ ነገር ግን የተጠቃሚው ሂደት በአፈፃፀሙ ላይ ምንም አይነት መሻሻል አይታይም። በውጤቱም, በሂደቱ የተሰላ ፕሮሰሰር አጠቃቀም መቶ በመቶ ይሆናል, ምንም እንኳን ሂደቱ የሂደቱን ጊዜ በአካል አይፈጅም.

ለስርቆት ተመሳሳይ ስሌት የሚገልጽ ጽሑፍ አላገኘሁም (ካወቁ በአስተያየቶቹ ውስጥ ያካፍሉት)። ነገር ግን, በምንጭ ኮድ በመመዘን, የስሌት ዘዴው እንደገና ጥቅም ላይ እንዲውል ለማድረግ ተመሳሳይ ነው. በቃ ሌላ ቆጣሪ በከርነል ውስጥ ተጨምሯል ፣ ለ KVM ሂደት (ምናባዊ ማሽን ሂደት) ፣ ይህም የ KVM ሂደት ሲፒዩ የሚጠብቀውን ጊዜ ይቆጥራል። ቆጣሪው ስለ ፕሮሰሰሩ መረጃ ከዝርዝሩ ይወስዳል እና ሁሉም መዥገሮች በቨርቹዋል ማሽን ሂደት ጥቅም ላይ መዋላቸውን ያረጋግጣል። ያ ብቻ ከሆነ ፕሮሰሰሩ በምናባዊ ማሽን ሂደት ብቻ እንደተያዘ እንገምታለን። አለበለዚያ አንጎለ ኮምፒውተር ሌላ ነገር እየሰራ መሆኑን እናሳውቃለን። ስርቆት ታየ።

የስርቆት ቆጠራ ሂደት እንደ መደበኛ መልሶ ጥቅም ላይ ማዋል ቆጠራ ተመሳሳይ ችግሮች ያጋጥመዋል። እንዲህ ያሉ ችግሮች ብዙ ጊዜ ይታያሉ ማለት አይደለም, ነገር ግን ተስፋ አስቆራጭ ይመስላሉ.

2.2. በ KVM ላይ የምናባዊነት ዓይነቶች

ሰፋ ባለ መልኩ, ሶስት ዓይነት ቨርቹዋል (virtualization) አሉ, ሁሉም በ KVM የተደገፉ ናቸው. የስርቆት መከሰት ዘዴ እንደ ቨርቹዋልነት አይነት ሊወሰን ይችላል።

ስርጭት. በዚህ ሁኔታ ፣ የቨርቹዋል ማሽን ኦፕሬቲንግ ሲስተም ከአካላዊ hypervisor መሳሪያዎች ጋር እንደዚህ ያለ ነገር ይከሰታል ።

  1. የእንግዳው ስርዓተ ክወና ለእንግዳ መሳሪያው ትዕዛዝ ይልካል.
  2. የእንግዳው መሳሪያ ነጂው ትዕዛዙን ይቀበላል, ለመሳሪያው BIOS ጥያቄን ያመነጫል እና ወደ ሃይፐርቫይዘር ይልካል.
  3. የሃይፐርቫይዘር ሂደቱ ለአካላዊ መሳሪያው ትዕዛዝን ይተረጉማል, ከሌሎች ነገሮች በተጨማሪ, የበለጠ ደህንነቱ የተጠበቀ ያደርገዋል.
  4. አካላዊ መሳሪያ ነጂው የተሻሻለውን ትዕዛዝ ተቀብሎ ወደ አካላዊ መሳሪያው ይልካል.
  5. ትዕዛዞችን የማስፈጸም ውጤቶች በተመሳሳይ መንገድ ይመለሳሉ.

የትርጉም ጥቅሙ ማንኛውንም መሳሪያ ለመምሰል ያስችልዎታል እና የስርዓተ ክወናው የከርነል ልዩ ዝግጅት አያስፈልገውም. ነገር ግን ለዚህ, በመጀመሪያ, በፍጥነት መክፈል አለብዎት.

የሃርድዌር ምናባዊነት. በዚህ አጋጣሚ በሃርድዌር ደረጃ ያለው መሳሪያ ከስርዓተ ክወናው ትዕዛዞችን ይረዳል. ይህ በጣም ፈጣኑ እና የተሻለው መንገድ ነው. ግን በሚያሳዝን ሁኔታ, በሁሉም አካላዊ መሳሪያዎች, ሃይፐርቫይዘሮች እና የእንግዳ ስርዓተ ክወናዎች አይደገፍም. በአሁኑ ጊዜ የሃርድዌር ቨርቹዋልን የሚደግፉ ዋና መሳሪያዎች ፕሮሰሰር ናቸው።

Paravirtualization. በ KVM ላይ ለመሣሪያ ቨርቹዋልነት በጣም የተለመደው አማራጭ እና በአጠቃላይ ለእንግዶች ስርዓተ ክወናዎች በጣም የተለመደው ምናባዊ ሁነታ. ልዩነቱ ከአንዳንድ ሃይፐርቫይዘር ስርአቶች (ለምሳሌ ከአውታረ መረብ ወይም ከዲስክ ቁልል ጋር) መስራት ወይም የማህደረ ትውስታ ገፆች መመደብ ዝቅተኛ ደረጃ ትዕዛዞችን ሳይተረጉሙ ሃይፐርቫይዘር ኤፒአይን በመጠቀም መከሰቱ ነው። የዚህ የቨርቹዋል አሰራር ዘዴ ጉዳቱ የእንግዳ ኦፕሬቲንግ ሲስተም ከርነል መስተካከል አለበት ስለዚህም ይህን ኤፒአይ ተጠቅሞ ከሃይፐርቫይዘር ጋር መገናኘት ይችላል። ነገር ግን ይህ ብዙውን ጊዜ በእንግዳው ስርዓተ ክወና ላይ ልዩ ነጂዎችን በመጫን ይፈታል. በKVM ይህ ኤፒአይ ይባላል virtio API.

ከፓራቫሪላይዜሽን ጋር ፣ ከማሰራጨት ጋር ሲነፃፀር ፣ ከቨርቹዋል ማሽን በቀጥታ በአስተናጋጁ ላይ ወደ hypervisor ሂደት ​​በመላክ ወደ አካላዊ መሳሪያው የሚወስደው መንገድ በከፍተኛ ሁኔታ ቀንሷል። ይህ በምናባዊው ማሽን ውስጥ ያሉትን ሁሉንም መመሪያዎች አፈፃፀም ለማፋጠን ያስችልዎታል። በ KVM ውስጥ, ይህ የሚደረገው በ virtio API ነው, ይህም ለተወሰኑ መሳሪያዎች ብቻ ነው የሚሰራው, ለምሳሌ እንደ ኔትወርክ ወይም ዲስክ አስማሚ. ለዚህም ነው virtio አሽከርካሪዎች በምናባዊ ማሽኖች ውስጥ የተጫኑት።

የዚህ ማጣደፍ ጉዳቱ በቨርቹዋል ማሽኑ ውስጥ የሚሄዱ ሁሉም ሂደቶች በውስጡ የሚቀሩ አለመሆኑ ነው። ይህ በስርቆት ላይ መራባትን የሚያስከትሉ አንዳንድ ልዩ ውጤቶችን ይፈጥራል. በዚህ ጉዳይ ላይ ዝርዝር ጥናት እንዲጀምሩ እመክራለሁ ኤፒአይ ለምናባዊ I/O፡ virtio.

2.3. "ፍትሃዊ" መርሐግብር

በሃይፐርቫይዘር ላይ ያለ ምናባዊ ማሽን በሊኑክስ ከርነል ውስጥ የመርሃግብር (በሂደቶች መካከል ያለውን የሃብት ስርጭት) ህጎችን የሚያከብር ተራ ሂደት ነው, ስለዚህ እሱን ጠለቅ ብለን እንመልከተው.

ሊኑክስ ከከርነል 2.6.23 ጀምሮ ነባሪ መርሐግብር አውጪ የሆነውን CFS, Completely Fair Scheduler የሚባለውን ይጠቀማል። ይህንን ስልተ ቀመር ለመረዳት የሊኑክስ ከርነል አርክቴክቸርን ወይም የምንጭ ኮዱን ማንበብ ይችላሉ። የ CFS ይዘት በአፈፃፀማቸው ቆይታ ላይ በመመስረት የአቀነባባሪ ጊዜን በሂደቶች መካከል ማሰራጨት ነው። ብዙ ሲፒዩ የሚፈጀው ጊዜ፣ የሚቀበለው የሲፒዩ ጊዜ ይቀንሳል። ይህ ሁሉም ሂደቶች "በፍትሃዊነት" መፈጸሙን ያረጋግጣል - ስለዚህ አንድ ሂደት ሁሉንም ማቀነባበሪያዎች በተከታታይ እንዳይይዝ እና ሌሎች ሂደቶችም ሊከናወኑ ይችላሉ.

አንዳንድ ጊዜ ይህ ምሳሌ ወደ አስደሳች ቅርሶች ይመራል። የረዥም ጊዜ የሊኑክስ ተጠቃሚዎች እንደ ኮምፕሌተር ያሉ ግብአትን የሚጨምሩ አፕሊኬሽኖችን ሲሰሩ በዴስክቶፕ ላይ መደበኛ የጽሁፍ አርታኢ መቀዝቀዙን ያስታውሳሉ። ይህ የሆነበት ምክንያት በዴስክቶፕ አፕሊኬሽኖች ውስጥ ያሉ ሃብት-ተኮር ያልሆኑ ተግባራት ከንብረት-ተኮር ተግባራት ለምሳሌ ማጠናከሪያው ጋር ስለሚወዳደሩ ነው። CFS ይህ ኢ-ፍትሃዊ ነው ብሎ ያስባል፣ ስለዚህ በየጊዜው የፅሁፍ አርታዒውን ያቆማል እና ፕሮሰሰሩ የአቀናባሪውን ተግባራት እንዲይዝ ያስችለዋል። ይህ ዘዴን በመጠቀም ተስተካክሏል sched_ራስ-ቡድንነገር ግን በተግባሮች መካከል የአቀነባባሪውን ጊዜ የማሰራጨት ሌሎች ብዙ ባህሪያት ቀርተዋል። በእውነቱ ፣ ይህ በሲኤፍኤስ ውስጥ ሁሉም ነገር ምን ያህል መጥፎ እንደሆነ ታሪክ አይደለም ፣ ግን “ፍትሃዊ” የአቀነባባሪ ጊዜ ማሰራጨት በጣም ቀላል ስራ አለመሆኑን ትኩረት ለመሳብ የሚደረግ ሙከራ ነው።

በመርሐግብር አውጪው ውስጥ ሌላ አስፈላጊ ነጥብ ቅድመ-ቅደም ተከተል ነው. ይህ የማቅለጫ ሂደቱን ከሂደቱ ውስጥ ለማስወጣት እና ሌሎች እንዲሰሩ ለማድረግ አስፈላጊ ነው. የማስወጣት ሂደት አውድ መቀየር ይባላል። በዚህ ሁኔታ, የተግባሩ አጠቃላይ ሁኔታ ተጠብቆ ይቆያል-የቁልል ሁኔታ, መመዝገቢያ, ወዘተ, ከዚያ በኋላ ሂደቱ ለመጠበቅ ይላካል, እና ሌላ ቦታውን ይይዛል. ይህ ለስርዓተ ክወናው ውድ ክዋኔ ነው እና ብዙም ጥቅም ላይ አይውልም ፣ ግን በእሱ ውስጥ ምንም ስህተት የለውም። ተደጋጋሚ አውድ መቀየር በስርዓተ ክወናው ውስጥ ያለውን ችግር ሊያመለክት ይችላል፣ ግን አብዛኛውን ጊዜ ቀጣይነት ያለው እና የተለየ ነገር አያመለክትም።

አንድ እውነታን ለማብራራት እንደዚህ ያለ ረጅም ታሪክ ያስፈልጋል፡ አንድ ሂደት በሃቀኛ የሊኑክስ መርሐግብር ለመጠቀም በሚሞክርበት ጊዜ ብዙ ፕሮሰሰር ሃብቶች ሲጠቀሙ ሌሎች ሂደቶችም እንዲሰሩ በፍጥነት ይቆማል። ይህ ትክክል ነው ወይም አይደለም ውስብስብ ጥያቄ ነው, በተለያየ ሸክም በተለያየ መንገድ ሊፈታ ይችላል. በዊንዶውስ ውስጥ, እስከ ቅርብ ጊዜ ድረስ, የጊዜ መርሐግብር አውጪው በዴስክቶፕ አፕሊኬሽኖች ቅድሚያ ማቀናበር ላይ ያተኮረ ነበር, ይህም የጀርባ ሂደቶችን በረዶ ሊያደርግ ይችላል. ፀሐይ ሶላሪስ አምስት የተለያዩ የመርሐግብር ሰሪዎች ነበራት። ቨርቹዋልላይዜሽን ስንጀምር፣ ስድስተኛ ጨምረናል፣ ፍትሃዊ ድርሻ መርሐግብር አውጪ, ምክንያቱም ቀዳሚዎቹ አምስት ከሶላሪስ ዞኖች ቨርቹዋል ጋር በበቂ ሁኔታ አልሰሩም. በመሳሰሉት መጽሃፍቶች ስለዚህ ጉዳይ ዝርዝር ጥናት ለመጀመር እመክራለሁ Solaris Internals፡ Solaris 10 እና OpenSolaris Kernel Architecture ወይም የሊኑክስ ከርነልን መረዳት.

2.4. ስርቆትን እንዴት መከታተል ይቻላል?

በቨርቹዋል ማሽን ውስጥ ስርቆትን መከታተል ልክ እንደሌላው ፕሮሰሰር ሜትሪክ ቀላል ነው፡ ማንኛውንም ፕሮሰሰር ሜትሪክስ መሳሪያ መጠቀም ይችላሉ። ዋናው ነገር ቨርቹዋል ማሽኑ በሊኑክስ ላይ ነው. በሆነ ምክንያት ዊንዶውስ ይህንን መረጃ ለተጠቃሚዎቹ አይሰጥም። 🙁

መስረቅ፡- ከቨርቹዋል ማሽኖች የሲፒዩ ጊዜን የሚሰርቅ
የከፍተኛው ትዕዛዝ ውጤት: የአቀነባባሪው ጭነት ዝርዝሮች, በቀኝ በኩል ባለው አምድ ውስጥ - መስረቅ

ይህንን መረጃ ከሃይፐርቫይዘር ለማግኘት ሲሞክሩ ችግሩ ይነሳል. በአስተናጋጁ ማሽን ላይ መስረቅን ለመተንበይ መሞከር ይችላሉ, ለምሳሌ, የጭነት አማካኝ (LA) መለኪያን በመጠቀም - በአፈፃፀም ወረፋ ውስጥ የሚጠብቁ የሂደቶች ብዛት አማካኝ ዋጋ. ይህንን ግቤት ለማስላት ዘዴው ቀላል አይደለም, ነገር ግን በአጠቃላይ, LA በፕሮሰሰር ክሮች ብዛት መደበኛ ከሆነ ከ 1 በላይ ከሆነ, ይህ የሊኑክስ አገልጋይ በሆነ ነገር መጫኑን ያመለክታል.

እነዚህ ሁሉ ሂደቶች ምን እየጠበቁ ናቸው? ግልፅ የሆነው መልስ ፕሮሰሰር ነው። ግን መልሱ ሙሉ በሙሉ ትክክል አይደለም ፣ ምክንያቱም አንዳንድ ጊዜ ፕሮሰሰር ነፃ ነው ፣ ግን LA ከደረጃው ይወጣል። አስታውስ NFS እንዴት እንደሚወድቅ እና LA እንዴት እንደሚያድግ. በዲስክ እና በሌሎች የግቤት / ውፅዓት መሳሪያዎች ተመሳሳይ ሁኔታ ሊከሰት ይችላል. ነገር ግን እንደ እውነቱ ከሆነ ሂደቶች የማንኛውም መቆለፊያ መጨረሻ ሊጠብቁ ይችላሉ, ወይ አካላዊ, ከ I/O መሣሪያ ጋር የተያያዘ, ወይም ምክንያታዊ, እንደ ሙቴክስ. ይህ በተጨማሪ በሃርድዌር ደረጃ መቆለፍን (ከዲስክ ተመሳሳይ ምላሽ) ፣ ወይም ሎጂክ (የመቆለፍ ፕሪሚቲቭ የሚባሉት ፣የህጋዊ አካላት ስብስብ ፣ mutex adaptive and spin, semaphores, ሁኔታ ተለዋዋጮች, rw መቆለፊያዎች, ipc መቆለፊያዎች ያካትታል. ...)

ሌላው የLA ባህሪ እንደ ኦፕሬቲንግ ሲስተም አማካይ ተደርጎ ይቆጠራል። ለምሳሌ፣ 100 ሂደቶች ለአንድ ፋይል፣ እና ከዚያም LA=50 ይወዳደራሉ። እንዲህ ዓይነቱ ትልቅ እሴት የስርዓተ ክወናው መጥፎ መሆኑን የሚያመለክት ይመስላል. ነገር ግን ለሌላ በተጣመመ የተጻፈ ኮድ, ይህ የተለመደ ሁኔታ ሊሆን ይችላል, ምንም እንኳን እሱ ብቻ መጥፎ ነው, እና በስርዓተ ክወናው ውስጥ ያሉ ሌሎች ሂደቶች አይጎዱም.

በዚህ አማካኝ (እና ከአንድ ደቂቃ ባላነሰ ጊዜ ውስጥ) ማንኛውንም ነገር በLA አመልካች መወሰን በጣም የሚክስ ተግባር አይደለም፣ ይህም በተወሰኑ ጉዳዮች ላይ በጣም እርግጠኛ ያልሆነ ውጤት ነው። ለማወቅ ከሞከርክ በዊኪፔዲያ እና ሌሎች የሚገኙ ሃብቶች ላይ ያሉ መጣጥፎች ሾለ ሂደቱ ጥልቅ ማብራሪያ ሳይሰጡ በጣም ቀላል የሆኑትን ጉዳዮች ብቻ የሚገልጹ ሆነው ታገኛለህ። ፍላጎት ያላቸውን ሁሉ እልካለሁ ፣ እንደገና ፣ እዚህ ወደ ብሬንዳን Gregg  - ከታች ያሉትን ሊንኮች ይከተሉ። እንግሊዝኛ ለመናገር ሰነፍ ማን ነው - ሾለ LA የእሱ ታዋቂ መጣጥፍ ትርጉም.

3. ልዩ ውጤቶች

አሁን ያጋጠሙንን ዋና ዋና የስርቆት ጉዳዮችን እንመልከት። ከላይ ከተጠቀሱት ሁሉ እንዴት እንደሚከተሉ እና በሃይፐርቫይዘር ላይ ካሉት አመልካቾች ጋር እንዴት እንደሚዛመዱ እነግርዎታለሁ.

እንደገና ጥቅም ላይ ማዋል. በጣም ቀላሉ እና በጣም የተለመደው: hypervisor እንደገና ጥቅም ላይ ውሏል. በእርግጥ, ብዙ የሩጫ ቨርቹዋል ማሽኖች አሉ, በውስጣቸው ከፍተኛ የአቀነባባሪ ፍጆታ, ብዙ ውድድር, የ LA አጠቃቀም ከ 1 በላይ (በፕሮሰሰር ክሮች የተለመደ ነው). በሁሉም ምናባዊ ማሽኖች ውስጥ ያለው ነገር ሁሉ ፍጥነት ይቀንሳል። ከሃይፐርቫይዘር የሚተላለፈው ስርቆት እያደገ ነው, ጭነቱን እንደገና ማከፋፈል ወይም አንድ ሰው ማጥፋት አስፈላጊ ነው. በአጠቃላይ, ሁሉም ነገር ምክንያታዊ እና ለመረዳት የሚቻል ነው.

ፓራቫታላይዜሽን ከነጠላ ምሳሌዎች ጋር. በሃይፐርቫይዘሩ ላይ አንድ ቨርቹዋል ማሽን ብቻ ነው ያለው፡ ከሱ ትንሽ ክፍል ይበላል ነገር ግን ትልቅ I/O ሎድ ያመነጫል ለምሳሌ በዲስክ ላይ። እና ከተወሰነ ቦታ ትንሽ መስረቅ በውስጡ ይታያል, እስከ 10% (በብዙ ሙከራዎች እንደሚታየው).

ጉዳዩ ትኩረት የሚስብ ነው። ስርቆት እዚህ ላይ የሚታየው በ paravirtualized አሽከርካሪዎች ደረጃ ላይ በመታገዱ ነው። በቨርቹዋል ማሽኑ ውስጥ መቆራረጥ ይፈጠራል፣ በአሽከርካሪው ተዘጋጅቶ ወደ ሃይፐርቫይዘር ይላካል። በሃይፐርቫይዘር ላይ ባለው የማቋረጥ አያያዝ ምክንያት ለቨርቹዋል ማሽኑ የተላከ ጥያቄ ይመስላል፣ ለመፈጸም ዝግጁ ነው እና ፕሮሰሰሩን እየጠበቀ ነው፣ ነገር ግን ፕሮሰሰር ጊዜ አልተሰጠውም። ምናባዊው ልጅ ይህ ጊዜ እንደተሰረቀ ያስባል.

ይህ የሚሆነው ቋጥኙ በተላከበት ጊዜ ነው፣ ወደ ሃይፐርቫይዘሩ የከርነል ቦታ ውስጥ ይገባል፣ እና እሱን መጠበቅ እንጀምራለን። ምንም እንኳን ከቨርቹዋል ማሽኑ እይታ አንጻር ወዲያውኑ መመለስ አለበት. ስለዚህ, በስርቆት ስሌት ስልተ-ቀመር መሰረት, ይህ ጊዜ እንደተሰረቀ ይቆጠራል. ምናልባትም በዚህ ሁኔታ ውስጥ ሌሎች ዘዴዎች ሊኖሩ ይችላሉ (ለምሳሌ ፣ አንዳንድ ሌሎች የ sys ጥሪዎችን ማካሄድ) ፣ ግን ብዙ የተለየ መሆን የለባቸውም።

መርሐግብር አስያዥ በከፍተኛ ሁኔታ ከተጫኑ ምናባዊ ማሽኖች ጋር. አንድ ቨርቹዋል ማሽን ከሌሎቹ በበለጠ በስርቆት ሲሰቃይ ይህ የሆነው በጊዜ ሰሌዳው ምክንያት ነው። ሂደቱ ፕሮሰሰሩን በጨመረ ቁጥር መርሐግብር አውጪው ቶሎ ቶሎ ያስወጣውና ሌሎቹም እንዲሰሩ ነው። ቨርቹዋል ማሽኑ ትንሽ የሚፈጅ ከሆነ ስርቆትን ማየት አይቸግረውም: ሂደቱ በሐቀኝነት ተቀምጦ ሲጠባበቅ, ተጨማሪ ጊዜ መስጠት አለብን. አንድ ቨርቹዋል ማሽን በሁሉም ኮርሶቹ ላይ ከፍተኛውን ጭነት ቢያመነጭ ብዙ ጊዜ ከማቀነባበሪያው ይባረራል እና ብዙ ጊዜ ላለመስጠት ይሞክራሉ።

በቨርቹዋል ማሽኑ ውስጥ ያሉ ሂደቶች የውሂብ ሂደትን መቋቋም ስለማይችሉ ተጨማሪ ፕሮሰሰር ለማግኘት ሲሞክሩ በጣም የከፋ ነው። ከዚያ በሃይፐርቫይዘር ላይ ያለው ኦፕሬቲንግ ሲስተም በታማኝነት ማመቻቸት ምክንያት አነስተኛ እና ያነሰ የማቀነባበሪያ ጊዜ ይሰጣል. ይህ ሂደት እንደ ጭልፊት ይከሰታል፣ እና ወደ ሰማያት መዝለሎች ይሰርቃሉ፣ ምንም እንኳን ሌሎች ምናባዊ ማሽኖች ብዙም ላያስተውሉት ይችላሉ። እና ብዙ ኮሮች ፣ የተጎዳው ማሽን የበለጠ የከፋ ነው። በአጭር አነጋገር፣ ብዙ ኮር ያላቸው በጣም የተጫኑ ቨርቹዋል ማሽኖች በጣም ይሠቃያሉ።

ዝቅተኛ LA, ግን ስርቆት አለ. LA በግምት 0,7 ከሆነ (ይህም ሃይፐርቫይዘር የተጫነ ይመስላል) ነገር ግን ስርቆት በግለሰብ ምናባዊ ማሽኖች ውስጥ ይስተዋላል፡

  • ከዚህ በላይ የተገለፀው ከፓራቫሪያላይዜሽን ጋር ያለው አማራጭ። ቨርቹዋል ማሽኑ መስረቅን የሚያመለክቱ መለኪያዎችን ሊቀበል ይችላል፣ ምንም እንኳን ሃይፐርቫይዘሩ ጥሩ ነው። በሙከራዎቻችን ውጤት መሰረት ይህ የስርቆት አማራጭ ከ10% አይበልጥም እና በቨርቹዋል ማሽኑ ውስጥ ባሉ አፕሊኬሽኖች አፈጻጸም ላይ ከፍተኛ ተጽእኖ ሊኖረው አይገባም።
  • የLA መለኪያው በስህተት ይሰላል። ይበልጥ በትክክል፣ በእያንዳንዱ ልዩ ቅጽበት በትክክል ይሰላል፣ ነገር ግን በአማካይ ከአንድ ደቂቃ በላይ ሲገመገም የሚገመተው ይሆናል። ለምሳሌ፣ አንድ ቨርቹዋል ማሽን በሦስተኛው ሃይፐርቫይዘር ሁሉንም ፕሮሰሰሮቻቸውን በትክክል ለግማሽ ደቂቃ ከበላ፣ ከዚያም LA በደቂቃ ሃይፐርቫይዘር ላይ 0,15 ይሆናል። አራት እንደዚህ ያሉ ምናባዊ ማሽኖች በአንድ ጊዜ የሚሰሩ 0,6 ይሰጣሉ. እና በእያንዳንዳቸው ላይ ለግማሽ ደቂቃ ያህል በ 25% በ LA አመልካች መሰረት የዱር ስርቆት መኖሩ ከአሁን በኋላ ሊወጣ አይችልም.
  • እንደገና፣ አንድ ሰው ከመጠን በላይ እየበላ እንደሆነ እና አንድ ሰው እንዲጠብቅ በወሰነው የጊዜ ሰሌዳው ምክንያት። እስከዚያው ድረስ፣ ዐውደ-ጽሑፉን እቀይራለሁ፣ መቋረጦችን እቆጣጠራለሁ እና ሌሎች አስፈላጊ የሥርዓት ነገሮችን እጠብቃለሁ። በውጤቱም, አንዳንድ ምናባዊ ማሽኖች ምንም አይነት ችግር አይታዩም, ሌሎች ደግሞ ከባድ የአፈፃፀም ውድቀት ያጋጥማቸዋል.

4. ሌሎች የተዛቡ ነገሮች

በቨርቹዋል ማሽን ላይ የአቀነባባሪውን ትክክለኛ መመለሻ ጊዜ ለማዛባት አንድ ሚሊዮን ተጨማሪ ምክንያቶች አሉ። ለምሳሌ፣ hyperthreading እና NUMA በስሌቶች ውስጥ ችግሮችን ያስተዋውቃሉ። ሂደቱን ለማስፈፀም የከርነል ምርጫን ሙሉ በሙሉ ያደናቅፋሉ ፣ ምክንያቱም የጊዜ ሰሌዳው አውጪው ውህዶችን ይጠቀማል - ክብደቶች ፣ ይህም አገባቡን በሚቀይሩበት ጊዜ ስሌቱ የበለጠ ከባድ ያደርገዋል።

እንደ ቱርቦ ማበልጸጊያ ወይም በተቃራኒው የኢነርጂ ቁጠባ ሁነታ ባሉ ቴክኖሎጂዎች ምክንያት የተዛቡ ነገሮች አሉ፣ ይህም አጠቃቀሙን ሲያሰሉ በሰው ሰራሽ በሆነ መንገድ የድግግሞሹን ድግግሞሽ ሊጨምር ወይም ሊቀንስ አልፎ ተርፎም በአገልጋዩ ላይ ያለውን የጊዜ መቆራረጥን ሊጨምር ይችላል። ቱርቦ መጨመርን ማንቃት የአንድ ፕሮሰሰር ክር አፈጻጸምን ይቀንሳል በሌላው አፈጻጸም ምክንያት። በዚህ ጊዜ ስለ የአሁኑ ፕሮሰሰር ድግግሞሽ መረጃ ወደ ቨርቹዋል ማሽን አይተላለፍም ፣ እና አንድ ሰው ጊዜውን እየሰረቀ ነው ብሎ ያምናል (ለምሳሌ ፣ 2 GHz ጠይቋል ፣ ግን ግማሹን ተቀብሏል)።

በአጠቃላይ, ለማዛባት ብዙ ምክንያቶች ሊኖሩ ይችላሉ. በአንድ የተወሰነ ስርዓት ላይ ሌላ ነገር ሊያገኙ ይችላሉ. ከዚህ በላይ አገናኞችን በሰጠኋቸው መጽሃፎች መጀመር ይሻላል እና ከሃይፐርቫይዘር ስታቲስቲክስ እንደ perf, sysdig, systemtap የመሳሰሉ መገልገያዎችን በመጠቀም ሰርስሮ ማውጣት ይሻላል. በደርዘን የሚቆጠሩ.

5. መደምደሚያ

  1. በ paravirtualization ምክንያት የተወሰነ መጠን ያለው ስርቆት ሊከሰት ይችላል፣ እና እንደ መደበኛ ሊቆጠር ይችላል። ይህ ዋጋ 5-10% ሊሆን እንደሚችል በኢንተርኔት ላይ ይጽፋሉ. በቨርቹዋል ማሽኑ ውስጥ ባሉ አፕሊኬሽኖች እና በአካላዊ መሳሪያዎቹ ላይ በሚኖረው ጭነት ላይ የተመሰረተ ነው። እዚህ ትግበራዎች በምናባዊ ማሽኖች ውስጥ ምን እንደሚሰማቸው ትኩረት መስጠት አስፈላጊ ነው.
  2. በሃይፐርቫይዘር ላይ ያለው ጭነት እና በቨርቹዋል ማሽኑ ውስጥ ያለው ስርቆት ሬሾ ሁልጊዜ በግልጽ የተሳሰሩ አይደሉም፡ ሁለቱም የስርቆት ግምቶች በተለያየ ጭነት ውስጥ ባሉ ልዩ ሁኔታዎች ላይ ስህተት ሊሆኑ ይችላሉ።
  3. መርሐግብር አውጪው ብዙ ለሚጠይቁ ሂደቶች መጥፎ አመለካከት አለው። ብዙ ለሚጠይቁት ትንሽ ለመስጠት ይሞክራል። ትላልቅ ምናባዊ ማሽኖች ክፉዎች ናቸው.
  4. (በምናባዊው ማሽን ውስጥ ያለውን ሸክም ፣የጎረቤቶችን ሸክም ባህሪ ፣በክር ላይ ያለውን ጭነት እና ሌሎች ሁኔታዎችን ከግምት ውስጥ በማስገባት) ትንሽ መስረቅ ያለ ፓራቪታላይዜሽን እንኳን መደበኛ ሊሆን ይችላል።
  5. በአንድ የተወሰነ ስርዓት ውስጥ መስረቅን ለማወቅ ከፈለጉ የተለያዩ አማራጮችን መመርመር, መለኪያዎችን መሰብሰብ, በጥንቃቄ መተንተን እና ጭነቱን እንዴት በእኩል ማከፋፈል እንደሚቻል ያስቡ. ከማንኛቸውም ጉዳዮች ልዩነቶች ሊኖሩ ይችላሉ፣ ይህም በሙከራ መረጋገጥ ወይም በከርነል አራሚ ውስጥ መታየት አለበት።

ምንጭ: hab.com

አስተያየት ያክሉ