திருடு: மெய்நிகர் இயந்திரங்களிலிருந்து செயலி நேரத்தை திருடுபவர்

திருடு: மெய்நிகர் இயந்திரங்களிலிருந்து செயலி நேரத்தை திருடுபவர்

வணக்கம்! மெய்நிகர் இயந்திரங்களுக்குள் திருடுவதற்கான இயக்கவியல் மற்றும் அதன் ஆராய்ச்சியின் போது நாங்கள் கண்டுபிடிக்க முடிந்த சில வெளிப்படையான கலைப்பொருட்கள் பற்றி எளிமையான சொற்களில் நான் உங்களுக்குச் சொல்ல விரும்புகிறேன், இது ஒரு கிளவுட் பிளாட்ஃபார்மின் தொழில்நுட்ப இயக்குநராக நான் டைவ் செய்ய வேண்டியிருந்தது. Mail.ru கிளவுட் தீர்வுகள். இயங்குதளம் KVM இல் இயங்குகிறது.

CPU திருட்டு நேரம் என்பது மெய்நிகர் இயந்திரம் அதன் செயல்பாட்டிற்கான செயலி ஆதாரங்களைப் பெறாத நேரமாகும். இந்த நேரம் மெய்நிகராக்க சூழல்களில் விருந்தினர் இயக்க முறைமைகளில் மட்டுமே கணக்கிடப்படுகிறது. மிகவும் ஒதுக்கப்பட்ட இந்த வளங்கள் எங்கு செல்கின்றன என்பதற்கான காரணங்கள், வாழ்க்கையைப் போலவே, மிகவும் தெளிவற்றவை. ஆனால் நாங்கள் அதைக் கண்டுபிடிக்க முடிவு செய்தோம், மேலும் பல சோதனைகளையும் மேற்கொண்டோம். திருடுவதைப் பற்றி இப்போது எங்களுக்குத் தெரியும் என்பதல்ல, ஆனால் இப்போது உங்களுக்கு சுவாரஸ்யமான ஒன்றைச் சொல்வோம்.

1. திருடு என்றால் என்ன

எனவே, திருட்டு என்பது மெய்நிகர் இயந்திரத்தில் உள்ள செயல்முறைகளுக்கான செயலி நேரமின்மையைக் குறிக்கும் அளவீடு ஆகும். விவரித்தபடி KVM கர்னல் இணைப்பில்ஸ்டெல்த் என்பது ஹைப்பர்வைசர் ஹோஸ்ட் OS இல் மற்ற செயல்முறைகளை செயல்படுத்தும் நேரமாகும், அது செயல்படுத்துவதற்கு மெய்நிகர் இயந்திர செயல்முறையை வரிசைப்படுத்தியிருந்தாலும். அதாவது, திருட்டு என்பது செயல்முறை செயல்படுத்தத் தயாராக இருக்கும் நேரத்திற்கும் செயலி நேரம் ஒதுக்கப்படும் நேரத்திற்கும் உள்ள வித்தியாசமாக கணக்கிடப்படுகிறது.

மெய்நிகர் இயந்திர கர்னல் ஹைப்பர்வைசரிடமிருந்து திருட்டு மெட்ரிக்கைப் பெறுகிறது. அதே நேரத்தில், ஹைப்பர்வைசர் அது இயங்கும் மற்ற செயல்முறைகளை சரியாகக் குறிப்பிடவில்லை, அது வெறுமனே "நான் பிஸியாக இருக்கும்போது, ​​என்னால் உங்களுக்கு நேரம் கொடுக்க முடியாது" என்று கூறுகிறது. KVM இல், திருட்டு கணக்கிற்கான ஆதரவு சேர்க்கப்பட்டுள்ளது திட்டுகள். இங்கே இரண்டு முக்கிய புள்ளிகள் உள்ளன:

  • மெய்நிகர் இயந்திரம் ஹைப்பர்வைசரிடமிருந்து திருடுவதைக் கற்றுக்கொள்கிறது. அதாவது, இழப்புகளின் பார்வையில், மெய்நிகர் கணினியில் உள்ள செயல்முறைகளுக்கு இது ஒரு மறைமுக அளவீடு ஆகும், இது பல்வேறு சிதைவுகளுக்கு உட்பட்டது.
  • ஹைப்பர்வைசர் மெய்நிகர் இயந்திரத்துடன் வேறு என்ன செய்கிறது என்பது பற்றிய தகவல்களைப் பகிர்ந்து கொள்ளாது - முக்கிய விஷயம் என்னவென்றால், அது நேரத்தை ஒதுக்கவில்லை. இதன் காரணமாக, மெய்நிகர் இயந்திரத்தால் திருட்டு குறிகாட்டியில் சிதைவுகளைக் கண்டறிய முடியாது, இது போட்டியிடும் செயல்முறைகளின் தன்மையால் மதிப்பிடப்படலாம்.

2. திருடுவதை என்ன பாதிக்கிறது

2.1 திருட்டு கணக்கீடு

அடிப்படையில், திருட்டு என்பது சாதாரண CPU பயன்பாட்டு நேரத்தைப் போலவே கணக்கிடப்படுகிறது. மறுசுழற்சி எவ்வாறு கருதப்படுகிறது என்பது பற்றி அதிக தகவல்கள் இல்லை. அநேகமாக பெரும்பாலான மக்கள் இந்த கேள்வியை வெளிப்படையாக கருதுகின்றனர். ஆனால் இங்கே ஆபத்துகளும் உள்ளன. இந்த செயல்முறையுடன் உங்களைப் பழக்கப்படுத்திக்கொள்ள, நீங்கள் படிக்கலாம் பிரெண்டன் கிரெக்கின் கட்டுரை: பயன்பாட்டைக் கணக்கிடும் போது பல நுணுக்கங்களைப் பற்றியும், பின்வரும் காரணங்களுக்காக இந்த கணக்கீடு தவறாக இருக்கும் சூழ்நிலைகளைப் பற்றியும் நீங்கள் அறிந்து கொள்வீர்கள்:

  • செயலி அதிக வெப்பமடைகிறது, இதனால் சுழற்சிகள் தவிர்க்கப்படுகின்றன.
  • செயலி கடிகார வேகத்தை மாற்றும் டர்போ பூஸ்ட்டை இயக்கு/முடக்கு.
  • SpeedStep போன்ற செயலி ஆற்றல் சேமிப்பு தொழில்நுட்பங்களைப் பயன்படுத்தும் போது ஏற்படும் நேரத்தின் நீளத்தில் ஏற்படும் மாற்றம்.
  • சராசரியைக் கணக்கிடுவதில் உள்ள சிக்கல்: ஒரு நிமிடப் பயன்பாட்டை 80% என மதிப்பிடுவது, 100% குறுகிய கால வெடிப்பை மறைத்துவிடும்.
  • சுழல் பூட்டு செயலியை மீட்டெடுக்கிறது, ஆனால் பயனர் செயல்முறை அதன் செயல்பாட்டில் எந்த முன்னேற்றத்தையும் காணவில்லை. இதன் விளைவாக, செயல்முறை மூலம் கணக்கிடப்பட்ட செயலி பயன்பாடு நூறு சதவீதமாக இருக்கும், இருப்பினும் செயல்முறை உடல் ரீதியாக செயலி நேரத்தை உட்கொள்ளாது.

திருடுவதற்கான ஒத்த கணக்கீட்டை விவரிக்கும் ஒரு கட்டுரையை நான் காணவில்லை (உங்களுக்குத் தெரிந்தால், கருத்துகளில் பகிர்ந்து கொள்ளுங்கள்). ஆனால், மூலக் குறியீட்டின் மூலம் ஆராயும்போது, ​​மறுசுழற்சி செய்வது போலவே கணக்கீட்டு வழிமுறையும் உள்ளது. வெறுமனே, கேவிஎம் செயல்முறைக்கு (மெய்நிகர் இயந்திர செயல்முறை) நேரடியாக கர்னலில் மற்றொரு கவுண்டர் சேர்க்கப்படுகிறது, இது CPU நேரத்திற்காக காத்திருக்கும் KVM செயல்முறையின் காலத்தை கணக்கிடுகிறது. கவுண்டர் அதன் விவரக்குறிப்பிலிருந்து செயலி பற்றிய தகவலை எடுத்து அதன் அனைத்து உண்ணிகளும் மெய்நிகர் இயந்திர செயல்முறையால் பயன்படுத்தப்படுகிறதா என்பதைச் சரிபார்க்கிறது. அவ்வளவுதான் என்றால், செயலி மெய்நிகர் இயந்திர செயல்முறையுடன் மட்டுமே ஆக்கிரமிக்கப்பட்டுள்ளது என்று கருதுகிறோம். இல்லையெனில், செயலி வேறு ஏதாவது செய்து, திருடப்பட்டது என்று நாங்கள் தெரிவிக்கிறோம்.

திருட்டு எண்ணும் செயல்முறை வழக்கமான மறுசுழற்சி எண்ணும் அதே சிக்கல்களுக்கு உட்பட்டது. இத்தகைய பிரச்சினைகள் அடிக்கடி தோன்றும் என்று சொல்ல முடியாது, ஆனால் அவை ஊக்கமளிக்கின்றன.

2.2 KVM இல் மெய்நிகராக்கத்தின் வகைகள்

பரவலாகப் பார்த்தால், மூன்று வகையான மெய்நிகராக்கம் உள்ளன, இவை அனைத்தும் KVM ஆல் ஆதரிக்கப்படுகின்றன. திருட்டு நிகழ்வின் வழிமுறை மெய்நிகராக்கத்தின் வகையைச் சார்ந்தது.

மொழிபெயர்ப்பு. இந்த வழக்கில், இயற்பியல் ஹைப்பர்வைசர் சாதனங்களுடன் மெய்நிகர் இயந்திர இயக்க முறைமையின் செயல்பாடு இது போன்றது:

  1. விருந்தினர் இயக்க முறைமை அதன் விருந்தினர் சாதனத்திற்கு ஒரு கட்டளையை அனுப்புகிறது.
  2. விருந்தினர் சாதன இயக்கி கட்டளையைப் பெற்று, BIOS சாதனத்திற்கான கோரிக்கையை உருவாக்கி அதை ஹைப்பர்வைசருக்கு அனுப்புகிறது.
  3. ஹைப்பர்வைசர் செயல்முறையானது இயற்பியல் சாதனத்திற்கான கட்டளைக்கான கட்டளையை மொழிபெயர்க்கிறது, இது மற்றவற்றுடன், மிகவும் பாதுகாப்பானது.
  4. இயற்பியல் சாதன இயக்கி மாற்றியமைக்கப்பட்ட கட்டளையை ஏற்றுக்கொண்டு அதை இயற்பியல் சாதனத்திற்கு அனுப்புகிறது.
  5. கட்டளைகளை இயக்குவதன் முடிவுகள் அதே பாதையில் திரும்பிச் செல்கின்றன.

மொழிபெயர்ப்பின் நன்மை என்னவென்றால், இது எந்த சாதனத்தையும் பின்பற்ற உங்களை அனுமதிக்கிறது மற்றும் இயக்க முறைமை கர்னலின் சிறப்பு தயாரிப்பு தேவையில்லை. ஆனால் இதற்கு நீங்கள் முதலில், வேகத்தில் செலுத்த வேண்டும்.

வன்பொருள் மெய்நிகராக்கம். இந்த வழக்கில், வன்பொருள் மட்டத்தில் உள்ள சாதனம் இயக்க முறைமையிலிருந்து கட்டளைகளைப் புரிந்துகொள்கிறது. இதுவே வேகமான மற்றும் சிறந்த வழி. ஆனால், துரதிர்ஷ்டவசமாக, இது அனைத்து இயற்பியல் சாதனங்கள், ஹைப்பர்வைசர்கள் மற்றும் விருந்தினர் இயக்க முறைமைகளால் ஆதரிக்கப்படவில்லை. தற்போது, ​​வன்பொருள் மெய்நிகராக்கத்தை ஆதரிக்கும் முக்கிய சாதனங்கள் செயலிகள்.

Paravirtualization. KVM இல் சாதன மெய்நிகராக்கத்திற்கான மிகவும் பொதுவான விருப்பம் மற்றும் பொதுவாக விருந்தினர் இயக்க முறைமைகளுக்கான மிகவும் பொதுவான மெய்நிகராக்க முறை. அதன் தனித்தன்மை என்னவென்றால், சில ஹைப்பர்வைசர் துணை அமைப்புகளுடன் (உதாரணமாக, நெட்வொர்க் அல்லது டிஸ்க் ஸ்டேக்குடன்) அல்லது நினைவகப் பக்கங்களின் ஒதுக்கீடு ஹைப்பர்வைசர் API ஐப் பயன்படுத்தி, குறைந்த-நிலை கட்டளைகளை மொழிபெயர்க்காமல் நிகழ்கிறது. இந்த மெய்நிகராக்க முறையின் தீமை என்னவென்றால், விருந்தினர் இயக்க முறைமை கர்னல் மாற்றியமைக்கப்பட வேண்டும், இதனால் இந்த API ஐப் பயன்படுத்தி ஹைப்பர்வைசருடன் தொடர்பு கொள்ள முடியும். ஆனால் விருந்தினர் இயக்க முறைமையில் சிறப்பு இயக்கிகளை நிறுவுவதன் மூலம் இது வழக்கமாக தீர்க்கப்படுகிறது. KVM இல் இந்த API அழைக்கப்படுகிறது virtio API.

பாராவிர்ச்சுவலைசேஷன் மூலம், ஒளிபரப்புடன் ஒப்பிடும்போது, ​​மெய்நிகர் இயந்திரத்திலிருந்து நேரடியாக ஹோஸ்டில் உள்ள ஹைப்பர்வைசர் செயல்முறைக்கு கட்டளைகளை அனுப்புவதன் மூலம் இயற்பியல் சாதனத்திற்கான பாதை கணிசமாகக் குறைக்கப்படுகிறது. மெய்நிகர் கணினியில் உள்ள அனைத்து வழிமுறைகளையும் விரைவாக செயல்படுத்த இது உங்களை அனுமதிக்கிறது. KVM இல், இது virtio API ஆல் செய்யப்படுகிறது, இது நெட்வொர்க் அல்லது டிஸ்க் அடாப்டர் போன்ற சில சாதனங்களுக்கு மட்டுமே வேலை செய்கிறது. இதனால்தான் virtio இயக்கிகள் மெய்நிகர் கணினிகளில் நிறுவப்பட்டுள்ளன.

இந்த முடுக்கத்தின் தீங்கு என்னவென்றால், மெய்நிகர் இயந்திரத்தின் உள்ளே இயங்கும் அனைத்து செயல்முறைகளும் அதன் உள்ளே இருக்காது. இது சில சிறப்பு விளைவுகளை உருவாக்குகிறது. இந்த சிக்கலைப் பற்றிய விரிவான ஆய்வைத் தொடங்க பரிந்துரைக்கிறேன் மெய்நிகர் I/O க்கான API: virtio.

2.3 "நியாயமான" திட்டமிடல்

ஹைப்பர்வைசரில் ஒரு மெய்நிகர் இயந்திரம், உண்மையில், லினக்ஸ் கர்னலில் திட்டமிடல் (செயல்முறைகளுக்கு இடையே வள விநியோகம்) விதிகளுக்குக் கீழ்ப்படியும் ஒரு சாதாரண செயல்முறையாகும், எனவே அதைக் கூர்ந்து கவனிப்போம்.

கர்னல் 2.6.23 இலிருந்து முன்னிருப்பு அட்டவணையாக மாறிய CFS, Completely Fair Scheduler எனப்படும் லினக்ஸ் பயன்படுத்துகிறது. இந்த வழிமுறையைப் புரிந்து கொள்ள, நீங்கள் Linux Kernel Architecture அல்லது மூலக் குறியீட்டைப் படிக்கலாம். CFS இன் சாராம்சம், அவற்றின் செயல்பாட்டின் காலத்தைப் பொறுத்து செயல்முறைகளுக்கு இடையில் செயலி நேரத்தை விநியோகிப்பதாகும். ஒரு செயல்முறைக்கு அதிக CPU நேரம் தேவைப்படுகிறது, அது குறைவான CPU நேரத்தைப் பெறுகிறது. அனைத்து செயல்முறைகளும் "நியாயமாக" செயல்படுத்தப்படுவதை இது உறுதி செய்கிறது - இதனால் ஒரு செயல்முறை தொடர்ந்து அனைத்து செயலிகளையும் ஆக்கிரமிக்காது, மற்ற செயல்முறைகளும் செயல்படுத்தப்படும்.

சில நேரங்களில் இந்த முன்னுதாரணம் சுவாரஸ்யமான கலைப்பொருட்களுக்கு வழிவகுக்கிறது. நீண்ட கால லினக்ஸ் பயனர்கள், கம்பைலர் போன்ற வள-தீவிர பயன்பாடுகளை இயக்கும் போது, ​​டெஸ்க்டாப்பில் வழக்கமான டெக்ஸ்ட் எடிட்டரை முடக்குவது நினைவிருக்கலாம். டெஸ்க்டாப் பயன்பாடுகளில் உள்ள வளம்-தீவிரமற்ற பணிகள் கம்பைலர் போன்ற வள-தீவிர பணிகளுடன் போட்டியிட்டதால் இது நடந்தது. CFS இது நியாயமற்றது என்று நினைக்கிறது, எனவே அது அவ்வப்போது உரை திருத்தியை நிறுத்தி, தொகுப்பியின் பணிகளைச் செயலாக்க செயலியை அனுமதிக்கிறது. இது ஒரு பொறிமுறையைப் பயன்படுத்தி சரி செய்யப்பட்டது sched_autogroup, ஆனால் பணிகளுக்கு இடையில் செயலி நேரத்தை விநியோகிப்பதில் பல அம்சங்கள் இருந்தன. உண்மையில், இது CFS இல் எல்லாம் எவ்வளவு மோசமாக உள்ளது என்பது பற்றிய கதை அல்ல, ஆனால் செயலி நேரத்தை "நியாயமான" விநியோகம் மிகவும் அற்பமான பணி அல்ல என்பதில் கவனத்தை ஈர்க்கும் முயற்சி.

திட்டமிடுதலில் உள்ள மற்றொரு முக்கியமான அம்சம் முன்கூட்டியது. செயலியில் இருந்து ஸ்னிக்கரிங் செயல்முறையை வெளியேற்றுவதற்கும் மற்றவர்களை வேலை செய்வதற்கும் இது அவசியம். வெளியேற்ற செயல்முறை சூழல் மாறுதல் என்று அழைக்கப்படுகிறது. இந்த வழக்கில், பணியின் முழு சூழலும் பாதுகாக்கப்படுகிறது: அடுக்கின் நிலை, பதிவுகள், முதலியன, அதன் பிறகு செயல்முறை காத்திருக்க அனுப்பப்படுகிறது, மற்றொன்று அதன் இடத்தை எடுக்கும். இது OS க்கு மிகவும் விலையுயர்ந்த செயல்பாடாகும், மேலும் இது அரிதாகவே பயன்படுத்தப்படுகிறது, ஆனால் இதில் உள்ளார்ந்த தவறு எதுவும் இல்லை. அடிக்கடி சூழல் மாறுதல் OS இல் ஒரு சிக்கலைக் குறிக்கலாம், ஆனால் வழக்கமாக இது தொடர்ச்சியாக இருக்கும் மற்றும் குறிப்பாக எதையும் குறிக்காது.

ஒரு உண்மையை விளக்குவதற்கு இவ்வளவு நீண்ட கதை தேவைப்படுகிறது: ஒரு செயல்முறை நேர்மையான லினக்ஸ் திட்டமிடலில் எவ்வளவு அதிக செயலி வளங்களை பயன்படுத்த முயற்சிக்கிறதோ, அவ்வளவு வேகமாக அது நிறுத்தப்படும், இதனால் மற்ற செயல்முறைகளும் செயல்பட முடியும். இது சரியானதா இல்லையா என்பது ஒரு சிக்கலான கேள்வி, இது வெவ்வேறு சுமைகளின் கீழ் வித்தியாசமாக தீர்க்கப்படலாம். விண்டோஸில், சமீப காலம் வரை, டெஸ்க்டாப் பயன்பாடுகளின் முன்னுரிமை செயலாக்கத்தில் திட்டமிடுபவர் கவனம் செலுத்தினார், இது பின்னணி செயல்முறைகளை முடக்குவதற்கு காரணமாக இருக்கலாம். சன் சோலாரிஸ் ஐந்து வெவ்வேறு வகுப்பு அட்டவணையாளர்களைக் கொண்டிருந்தார். மெய்நிகராக்கத்தை நாங்கள் தொடங்கும்போது, ​​ஆறாவது ஒன்றைச் சேர்த்தோம். நியாயமான பங்கு திட்டமிடுபவர், ஏனெனில் முந்தைய ஐந்து சோலாரிஸ் மண்டல மெய்நிகராக்கத்துடன் போதுமான அளவில் வேலை செய்யவில்லை. போன்ற புத்தகங்களுடன் இந்த சிக்கலைப் பற்றிய விரிவான ஆய்வைத் தொடங்க பரிந்துரைக்கிறேன் சோலாரிஸ் இன்டர்னல்ஸ்: சோலாரிஸ் 10 மற்றும் ஓபன் சோலாரிஸ் கர்னல் ஆர்கிடெக்சர் அல்லது லினக்ஸ் கர்னலைப் புரிந்துகொள்வது.

2.4 திருடுவதை எவ்வாறு கண்காணிப்பது?

மற்ற செயலி அளவீடுகளைப் போலவே மெய்நிகர் இயந்திரத்தின் உள்ளே திருடுவதைக் கண்காணிப்பது எளிது: நீங்கள் எந்த செயலி அளவீடு கருவியையும் பயன்படுத்தலாம். முக்கிய விஷயம் என்னவென்றால், மெய்நிகர் இயந்திரம் லினக்ஸில் உள்ளது. சில காரணங்களால் Windows இந்த தகவலை அதன் பயனர்களுக்கு வழங்கவில்லை. 🙁

திருடு: மெய்நிகர் இயந்திரங்களிலிருந்து செயலி நேரத்தை திருடுபவர்
மேல் கட்டளையின் வெளியீடு: செயலி ஏற்றத்தின் விவரங்கள், வலதுபுற நெடுவரிசையில் - திருடவும்

ஹைப்பர்வைசரிடமிருந்து இந்தத் தகவலைப் பெற முயற்சிக்கும்போது சிரமம் ஏற்படுகிறது. ஹோஸ்ட் மெஷினில் திருடுவதை நீங்கள் கணிக்க முயற்சி செய்யலாம், எடுத்துக்காட்டாக, சுமை சராசரி (LA) அளவுருவைப் பயன்படுத்தி - செயல்படுத்தும் வரிசையில் காத்திருக்கும் செயல்முறைகளின் எண்ணிக்கையின் சராசரி மதிப்பு. இந்த அளவுருவைக் கணக்கிடுவதற்கான முறை எளிதானது அல்ல, ஆனால் பொதுவாக, செயலி நூல்களின் எண்ணிக்கையால் LA இயல்பாக்கம் 1 க்கும் அதிகமாக இருந்தால், இது லினக்ஸ் சேவையகம் ஏதோவொன்றில் அதிக சுமை உள்ளதைக் குறிக்கிறது.

இந்த செயல்முறைகள் அனைத்தும் எதற்காக காத்திருக்கின்றன? தெளிவான பதில் செயலி. ஆனால் பதில் முற்றிலும் சரியானது அல்ல, ஏனெனில் சில நேரங்களில் செயலி இலவசம், ஆனால் LA அளவுகோலில் இருந்து வெளியேறுகிறது. நினைவில் கொள்ளுங்கள் NFS எவ்வாறு வீழ்ச்சியடைகிறது மற்றும் LA எவ்வாறு வளர்கிறது. வட்டு மற்றும் பிற உள்ளீடு/வெளியீட்டு சாதனங்களிலும் இதுவே நிகழலாம். ஆனால் உண்மையில், செயல்முறைகள் எந்தவொரு பூட்டின் முடிவிற்கும் காத்திருக்கலாம், இது இயற்பியல், I/O சாதனத்துடன் தொடர்புடையது அல்லது மியூடெக்ஸ் போன்ற தருக்கமானது. இதில் வன்பொருள் (வட்டில் இருந்து அதே பதில்) அல்லது லாஜிக் (லாக்கிங் ப்ரிமிட்டிவ்ஸ் என அழைக்கப்படும், இதில் ஏராளமான நிறுவனங்கள், மியூடெக்ஸ் அடாப்டிவ் மற்றும் ஸ்பின், செமாஃபோர்கள், நிலை மாறிகள், rw பூட்டுகள், ipc பூட்டுகள் ஆகியவை அடங்கும். ...).

LA இன் மற்றொரு அம்சம் என்னவென்றால், இது ஒரு இயக்க முறைமை சராசரியாகக் கருதப்படுகிறது. எடுத்துக்காட்டாக, ஒரு கோப்பிற்கு 100 செயல்முறைகள் போட்டியிடுகின்றன, பின்னர் LA=50. இவ்வளவு பெரிய மதிப்பு இயக்க முறைமை மோசமாக இருப்பதைக் குறிக்கும். ஆனால் மற்ற வக்கிரமாக எழுதப்பட்ட குறியீட்டைப் பொறுத்தவரை, இது ஒரு சாதாரண நிலையாக இருக்கலாம், இது மோசமானது என்ற போதிலும், இயக்க முறைமையில் உள்ள பிற செயல்முறைகள் பாதிக்கப்படாது.

இந்த சராசரியின் காரணமாக (மற்றும் ஒரு நிமிடத்திற்குக் குறையாமல்), LA காட்டி மூலம் எதையும் தீர்மானிப்பது மிகவும் பலனளிக்கும் பணி அல்ல, குறிப்பிட்ட நிகழ்வுகளில் மிகவும் நிச்சயமற்ற முடிவுகளுடன். நீங்கள் அதைக் கண்டுபிடிக்க முயற்சித்தால், விக்கிபீடியாவில் உள்ள கட்டுரைகள் மற்றும் கிடைக்கக்கூடிய பிற ஆதாரங்கள் செயல்முறையின் ஆழமான விளக்கம் இல்லாமல் எளிமையான நிகழ்வுகளை மட்டுமே விவரிக்கின்றன. ஆர்வமுள்ள அனைவரையும் மீண்டும் அனுப்புகிறேன், இங்கே பிரெண்டன் கிரெக்கிற்கு  - கீழே உள்ள இணைப்புகளைப் பின்பற்றவும். ஆங்கிலம் பேச மிகவும் சோம்பேறி யார் - LA பற்றிய அவரது பிரபலமான கட்டுரையின் மொழிபெயர்ப்பு.

3. சிறப்பு விளைவுகள்

இப்போது நாம் சந்தித்த முக்கிய திருட்டு வழக்குகளைப் பார்ப்போம். மேலே உள்ள எல்லாவற்றிலிருந்தும் அவை எவ்வாறு பின்பற்றப்படுகின்றன மற்றும் அவை ஹைப்பர்வைசரில் உள்ள குறிகாட்டிகளுடன் எவ்வாறு தொடர்புபடுகின்றன என்பதை நான் உங்களுக்குச் சொல்கிறேன்.

மீள் சுழற்சி. எளிமையான மற்றும் மிகவும் பொதுவானது: ஹைப்பர்வைசர் மீண்டும் பயன்படுத்தப்பட்டது. உண்மையில், நிறைய இயங்கும் மெய்நிகர் இயந்திரங்கள் உள்ளன, அவற்றில் அதிக செயலி நுகர்வு, நிறைய போட்டி, LA பயன்பாடு 1 க்கும் அதிகமாக உள்ளது (செயலி நூல்களால் இயல்பாக்கப்பட்டது). எல்லா மெய்நிகர் இயந்திரங்களிலும் உள்ள அனைத்தும் வேகத்தைக் குறைக்கின்றன. ஹைப்பர்வைசரிலிருந்து கடத்தப்படும் திருடலும் வளர்ந்து வருகிறது, சுமைகளை மறுபகிர்வு செய்வது அல்லது யாரையாவது அணைக்க வேண்டியது அவசியம். பொதுவாக, எல்லாம் தர்க்கரீதியானது மற்றும் புரிந்துகொள்ளக்கூடியது.

பாராவிர்ச்சுவலைசேஷன் எதிராக ஒற்றை நிகழ்வுகள். ஹைப்பர்வைசரில் ஒரே ஒரு மெய்நிகர் இயந்திரம் மட்டுமே உள்ளது; அது ஒரு சிறிய பகுதியைப் பயன்படுத்துகிறது, ஆனால் ஒரு பெரிய I/O சுமையை உருவாக்குகிறது, எடுத்துக்காட்டாக வட்டில். எங்கிருந்தோ ஒரு சிறிய திருட்டு அதில் தோன்றும், 10% வரை (பல சோதனைகள் மூலம் காட்டப்பட்டுள்ளது).

வழக்கு சுவாரஸ்யமானது. பாராவிர்ச்சுவலைஸ் செய்யப்பட்ட இயக்கிகளின் மட்டத்தில் தடுப்பதால் திருடுவது துல்லியமாக இங்கே தோன்றுகிறது. மெய்நிகர் கணினியில் ஒரு குறுக்கீடு உருவாக்கப்பட்டு, இயக்கி மூலம் செயலாக்கப்பட்டு ஹைப்பர்வைசருக்கு அனுப்பப்படுகிறது. ஹைப்பர்வைசரில் உள்ள குறுக்கீடு கையாளுதலின் காரணமாக, மெய்நிகர் கணினிக்கு அனுப்பப்பட்ட கோரிக்கை போல் தெரிகிறது, அது செயல்படுத்த தயாராக உள்ளது மற்றும் செயலிக்காக காத்திருக்கிறது, ஆனால் அதற்கு செயலி நேரம் கொடுக்கப்படவில்லை. இந்த முறை திருடப்பட்டதாக மெய்நிகர் பெண் நினைக்கிறாள்.

இடையகத்தை அனுப்பும் தருணத்தில் இது நிகழ்கிறது, அது ஹைப்பர்வைசரின் கர்னல் இடத்திற்குச் செல்கிறது, மேலும் நாங்கள் அதற்காக காத்திருக்கத் தொடங்குகிறோம். இருப்பினும், மெய்நிகர் இயந்திரத்தின் பார்வையில், அவர் உடனடியாக திரும்ப வேண்டும். எனவே, திருட்டு கணக்கீட்டு வழிமுறையின் படி, இந்த நேரம் திருடப்பட்டதாக கருதப்படுகிறது. பெரும்பாலும், இந்த சூழ்நிலையில் பிற வழிமுறைகள் இருக்கலாம் (உதாரணமாக, வேறு சில sys அழைப்புகளை செயலாக்குதல்), ஆனால் அவை மிகவும் வித்தியாசமாக இருக்கக்கூடாது.

திட்டமிடுபவர் மற்றும் அதிக ஏற்றப்பட்ட மெய்நிகர் இயந்திரங்கள். ஒரு மெய்நிகர் இயந்திரம் மற்றவர்களை விட அதிகமாக திருடினால் பாதிக்கப்படும் போது, ​​இது திட்டமிடுபவர் காரணமாகும். ஒரு செயல்முறை செயலியை எவ்வளவு அதிகமாக ஏற்றுகிறதோ, அவ்வளவு சீக்கிரம் திட்டமிடுபவர் அதை வெளியேற்றுவார், இதனால் மற்றவர்களும் செயல்பட முடியும். மெய்நிகர் இயந்திரம் சிறிதளவு பயன்படுத்தினால், அது திருடுவதைக் காணாது: அதன் செயல்முறை நேர்மையாக உட்கார்ந்து காத்திருந்தது, அதற்கு அதிக நேரம் கொடுக்க வேண்டும். ஒரு மெய்நிகர் இயந்திரம் அதன் அனைத்து கோர்களிலும் அதிகபட்ச சுமையை உருவாக்கினால், அது பெரும்பாலும் செயலியில் இருந்து வெளியேற்றப்பட்டு, அதற்கு அதிக நேரம் கொடுக்காமல் இருக்க முயற்சிக்கும்.

மெய்நிகர் இயந்திரத்தில் உள்ள செயல்முறைகள் தரவு செயலாக்கத்தை சமாளிக்க முடியாததால் அதிக செயலியைப் பெற முயற்சிக்கும் போது இது இன்னும் மோசமானது. பின்னர் ஹைப்பர்வைசரில் உள்ள இயக்க முறைமை, நேர்மையான தேர்வுமுறை காரணமாக, குறைவான மற்றும் குறைவான செயலி நேரத்தை வழங்கும். இந்த செயல்முறை ஒரு பனிச்சரிவு போன்ற நிகழ்கிறது, மேலும் திருட வானத்தை நோக்கி தாவுகிறது, இருப்பினும் மற்ற மெய்நிகர் இயந்திரங்கள் அதை கவனிக்கவில்லை. மேலும் கோர்கள், மோசமாக பாதிக்கப்பட்ட இயந்திரம். சுருக்கமாக, பல கோர்கள் கொண்ட அதிக ஏற்றப்பட்ட மெய்நிகர் இயந்திரங்கள் மிகவும் பாதிக்கப்படுகின்றன.

குறைந்த LA, ஆனால் திருட உள்ளது. LA தோராயமாக 0,7 ஆக இருந்தால் (அதாவது, ஹைப்பர்வைசர் குறைவாக ஏற்றப்பட்டதாகத் தெரிகிறது), ஆனால் தனிப்பட்ட மெய்நிகர் இயந்திரங்களில் திருடப்படுவது கவனிக்கப்படுகிறது:

  • மேலே ஏற்கனவே விவரிக்கப்பட்டுள்ள paravirtualization உடன் விருப்பம். ஹைப்பர்வைசர் நன்றாக இருந்தாலும், மெய்நிகர் இயந்திரம் திருடுவதைக் குறிக்கும் அளவீடுகளைப் பெறலாம். எங்கள் சோதனைகளின் முடிவுகளின்படி, இந்த திருட்டு விருப்பம் 10% ஐ விட அதிகமாக இல்லை மற்றும் மெய்நிகர் இயந்திரத்தில் உள்ள பயன்பாடுகளின் செயல்திறனில் குறிப்பிடத்தக்க தாக்கத்தை ஏற்படுத்தக்கூடாது.
  • LA அளவுரு தவறாக கணக்கிடப்படுகிறது. இன்னும் துல்லியமாக, ஒவ்வொரு குறிப்பிட்ட தருணத்திலும் அது சரியாகக் கணக்கிடப்படுகிறது, ஆனால் சராசரியாக ஒரு நிமிடத்திற்கு மேல் அது குறைத்து மதிப்பிடப்படுகிறது. எடுத்துக்காட்டாக, ஹைப்பர்வைசரின் மூன்றில் ஒரு மெய்நிகர் இயந்திரம் அதன் அனைத்து செயலிகளையும் சரியாக அரை நிமிடம் பயன்படுத்தினால், ஹைப்பர்வைசரில் நிமிடத்திற்கு LA 0,15 ஆக இருக்கும்; ஒரே நேரத்தில் வேலை செய்யும் நான்கு மெய்நிகர் இயந்திரங்கள் 0,6 ஐக் கொடுக்கும். LA குறிகாட்டியின்படி அவை ஒவ்வொன்றிலும் அரை நிமிடம் 25% காட்டு திருடப்பட்டது என்பதை இனி வெளியே இழுக்க முடியாது.
  • மீண்டும், யாரோ ஒருவர் அதிகமாக சாப்பிடுகிறார் என்று முடிவு செய்த திட்டமிடுபவர் மற்றும் யாரோ ஒருவர் காத்திருக்கட்டும். இதற்கிடையில், நான் சூழலை மாற்றுவேன், குறுக்கீடுகளைக் கையாளுவேன் மற்றும் பிற முக்கியமான கணினி விஷயங்களைக் கவனிப்பேன். இதன் விளைவாக, சில மெய்நிகர் இயந்திரங்கள் எந்த சிக்கலையும் காணவில்லை, மற்றவை தீவிர செயல்திறன் சிதைவை அனுபவிக்கின்றன.

4. பிற சிதைவுகள்

மெய்நிகர் கணினியில் செயலி நேரத்தின் நியாயமான வருவாயை சிதைப்பதற்கு இன்னும் ஒரு மில்லியன் காரணங்கள் உள்ளன. எடுத்துக்காட்டாக, ஹைப்பர் த்ரெடிங் மற்றும் NUMA ஆகியவை கணக்கீடுகளில் சிரமங்களை அறிமுகப்படுத்துகின்றன. செயல்முறையை செயல்படுத்துவதற்கான கர்னலின் தேர்வை அவை முற்றிலும் குழப்புகின்றன, ஏனெனில் திட்டமிடுபவர் குணகங்களைப் பயன்படுத்துகிறார் - எடைகள், இது சூழலை மாற்றும்போது கணக்கீட்டை இன்னும் கடினமாக்குகிறது.

டர்போ பூஸ்ட் அல்லது அதற்கு நேர்மாறாக ஆற்றல் சேமிப்பு முறை போன்ற தொழில்நுட்பங்களால் சிதைவுகள் உள்ளன, இது உபயோகத்தை கணக்கிடும் போது, ​​செயற்கையாக அதிர்வெண்ணை அல்லது சர்வரில் நேர ஸ்லைஸை அதிகரிக்கலாம் அல்லது குறைக்கலாம். டர்போ பூஸ்டை இயக்குவது, ஒரு செயலி நூலின் செயல்திறனை மற்றொன்றின் செயல்திறன் அதிகரிப்பதால் குறைக்கிறது. இந்த நேரத்தில், தற்போதைய செயலி அதிர்வெண் பற்றிய தகவல் மெய்நிகர் இயந்திரத்திற்கு அனுப்பப்படவில்லை, மேலும் யாரோ அதன் நேரத்தை திருடுகிறார்கள் என்று நம்புகிறது (உதாரணமாக, இது 2 ஜிகாஹெர்ட்ஸ் கோரியது, ஆனால் பாதியைப் பெற்றது).

பொதுவாக, சிதைவுக்கு பல காரணங்கள் இருக்கலாம். ஒரு குறிப்பிட்ட அமைப்பில் வேறு ஏதாவது ஒன்றை நீங்கள் காணலாம். மேலே நான் இணைப்புகளை வழங்கிய புத்தகங்களில் இருந்து தொடங்குவது நல்லது, மேலும் perf, sysdig, systemtap போன்ற பயன்பாடுகளைப் பயன்படுத்தி ஹைப்பர்வைசரிடமிருந்து புள்ளிவிவரங்களை மீட்டெடுப்பது நல்லது. டஜன் கணக்கானவர்கள்.

5. கண்டுபிடிப்புகள்

  1. பாராவிர்ச்சுவலைசேஷன் காரணமாக சில அளவு திருடப்படலாம், மேலும் இது சாதாரணமாகக் கருதப்படலாம். இந்த மதிப்பு 5-10% ஆக இருக்கலாம் என்று இணையத்தில் எழுதுகிறார்கள். மெய்நிகர் இயந்திரத்தில் உள்ள பயன்பாடுகள் மற்றும் அதன் இயற்பியல் சாதனங்களில் அது செலுத்தும் சுமை ஆகியவற்றைப் பொறுத்தது. மெய்நிகர் இயந்திரங்களுக்குள் பயன்பாடுகள் எவ்வாறு உணர்கின்றன என்பதை இங்கே கவனிக்க வேண்டியது அவசியம்.
  2. ஹைப்பர்வைசரில் உள்ள சுமை மற்றும் மெய்நிகர் இயந்திரத்தின் உள்ளே திருடுதல் ஆகியவற்றின் விகிதம் எப்போதும் தெளிவாக ஒன்றோடொன்று தொடர்புடையது அல்ல; வெவ்வேறு சுமைகளின் கீழ் குறிப்பிட்ட சூழ்நிலைகளில் திருடுவதற்கான இரண்டு மதிப்பீடுகளும் தவறாக இருக்கலாம்.
  3. திட்டமிடுபவர் நிறைய கேட்கும் செயல்முறைகளில் மோசமான அணுகுமுறையைக் கொண்டுள்ளார். அதிகம் கேட்பவர்களுக்குக் குறைவாகக் கொடுக்க முயல்கிறார். பெரிய மெய்நிகர் இயந்திரங்கள் தீயவை.
  4. பாராவிர்ச்சுவலைசேஷன் இல்லாமல் கூட ஒரு சிறிய திருடுவது வழக்கமாக இருக்கலாம் (மெய்நிகர் இயந்திரத்தில் உள்ள சுமை, அண்டை நாடுகளின் சுமைகளின் பண்புகள், நூல்கள் முழுவதும் சுமை விநியோகம் மற்றும் பிற காரணிகளை கணக்கில் எடுத்துக்கொள்வது).
  5. ஒரு குறிப்பிட்ட அமைப்பில் திருடுவதை நீங்கள் கண்டுபிடிக்க விரும்பினால், நீங்கள் பல்வேறு விருப்பங்களை ஆராய வேண்டும், அளவீடுகளை சேகரிக்க வேண்டும், அவற்றை கவனமாக பகுப்பாய்வு செய்ய வேண்டும் மற்றும் சுமைகளை எவ்வாறு சமமாக விநியோகிப்பது என்று சிந்திக்க வேண்டும். எந்தவொரு சந்தர்ப்பத்திலிருந்தும் விலகல்கள் சாத்தியமாகும், இது சோதனை ரீதியாக உறுதிப்படுத்தப்பட வேண்டும் அல்லது கர்னல் பிழைத்திருத்தத்தில் பார்க்க வேண்டும்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்