සොරකම් කරන්න: අතථ්‍ය යන්ත්‍රවලින් CPU කාලය සොරකම් කරන්නේ කවුද?

සොරකම් කරන්න: අතථ්‍ය යන්ත්‍රවලින් CPU කාලය සොරකම් කරන්නේ කවුද?

ආයුබෝවන්! අතථ්‍ය යන්ත්‍ර තුළ සොරකම් කිරීමේ යාන්ත්‍ර විද්‍යාව සහ එහි පර්යේෂණයේදී අපට සොයා ගැනීමට හැකි වූ පැහැදිලි නොවන කෞතුක වස්තු කිහිපයක් ගැන මට ඔබට සරලව පැවසීමට අවශ්‍යයි, මට වලාකුළු වේදිකාවක තාක්ෂණික අධ්‍යක්ෂවරයකු ලෙස කිමිදීමට සිදු විය. Mail.ru Cloud Solutions. වේදිකාව KVM මත ධාවනය වේ.

CPU සොරකම් කිරීමේ කාලය යනු අතථ්‍ය යන්ත්‍රය ක්‍රියාත්මක කිරීම සඳහා ප්‍රොසෙසර සම්පත් නොලැබෙන කාලයයි. මෙම කාලය ගණනය කරනු ලබන්නේ අථත්‍යකරණ පරිසරයන්හි ආගන්තුක මෙහෙයුම් පද්ධතිවල පමණි. ජීවිතයේ මෙන්, මෙම වැඩිපුරම වෙන් කරන ලද සම්පත් යන්නේ කොතැනටද යන්නට හේතු ඉතා අපැහැදිලි ය. නමුත් අපි එය සොයා ගැනීමට තීරණය කළ අතර, අත්හදා බැලීම් ගණනාවක් පවා සිදු කළා. අපි දැන් සොරකම් කිරීම ගැන සියල්ල දන්නා බව නොවේ, නමුත් අපි දැන් ඔබට රසවත් දෙයක් කියන්නෙමු.

1. සොරකම් කිරීම යනු කුමක්ද?

ඉතින්, සොරකම් කිරීම යනු අතථ්‍ය යන්ත්‍රයක් තුළ ක්‍රියාවලි සඳහා ප්‍රොසෙසර කාලය නොමැතිකම පෙන්නුම් කරන මෙට්‍රික් එකකි. විස්තර කර ඇති පරිදි KVM කර්නල් පැච් එකේStealth යනු ක්‍රියාත්මක කිරීම සඳහා අථත්‍ය යන්ත්‍ර ක්‍රියාවලිය පෝලිම් කර තිබියදීත්, ධාරක OS මත අධිවිශේෂකය වෙනත් ක්‍රියාවලීන් ක්‍රියාත්මක කරන කාලයයි. එනම්, සොරකම් කිරීම ගණනය කරනු ලබන්නේ ක්‍රියාවලිය ක්‍රියාත්මක කිරීමට සූදානම් වන කාලය සහ ක්‍රියාවලියට ප්‍රොසෙසර කාලය වෙන් කරන කාලය අතර වෙනස ලෙසය.

අතථ්‍ය යන්ත්‍ර කර්නලයට හයිපර්වයිසර් වෙතින් ස්ටීල් මෙට්‍රික් ලැබේ. ඒ අතරම, හයිපර්වයිසර් එය ක්‍රියාත්මක වන වෙනත් ක්‍රියාවලීන් මොනවාදැයි නිශ්චිතව සඳහන් නොකරයි, එය සරලව පවසන්නේ "මම කාර්යබහුල වන අතර, මට ඔබට කාලය ලබා දිය නොහැක" යනුවෙනි. KVM මත, සොරකම් ගණනය කිරීම සඳහා සහය එක් කර ඇත පැච්. මෙහි ප්රධාන කරුණු දෙකක් තිබේ:

  • අතථ්‍ය යන්ත්‍රය හයිපර්වයිසර් වෙතින් සොරකම් කිරීම ගැන ඉගෙන ගනී. එනම්, පාඩු පිළිබඳ දෘෂ්ටි කෝණයෙන්, අථත්‍ය යන්ත්‍රයේම ක්‍රියාවලීන් සඳහා මෙය විවිධ විකෘති කිරීම්වලට යටත් විය හැකි වක්‍ර මිනුමකි.
  • හයිපර්වයිසර් අථත්‍ය යන්ත්‍රය සමඟ එය කරන්නේ කුමක්ද යන්න පිළිබඳ තොරතුරු බෙදා නොගනී - ප්‍රධාන දෙය නම් එය ඒ සඳහා කාලය කැප නොකිරීමයි. මේ නිසා, තරඟකාරී ක්‍රියාවලීන්ගේ ස්වභාවය අනුව තක්සේරු කළ හැකි සොරකම් දර්ශකයේ විකෘති කිරීම් අථත්‍ය යන්ත්‍රයටම හඳුනාගත නොහැක.

2. සොරකම් කිරීමට බලපාන දේ

2.1 සොරකම් ගණනය කිරීම

මූලික වශයෙන්, සොරකම් කිරීම සාමාන්‍ය CPU භාවිත කාලයට ආසන්න වශයෙන් ගණනය කෙරේ. ප්‍රතිචක්‍රීකරණය සලකන ආකාරය පිළිබඳ බොහෝ තොරතුරු නොමැත. බොහෝ අය මෙම ප්රශ්නය පැහැදිලිව සලකන නිසා විය හැකිය. නමුත් මෙහි උගුල් ද තිබේ. මෙම ක්රියාවලිය සමඟ ඔබ හුරුපුරුදු වීමට, ඔබට කියවිය හැකිය බ්‍රෙන්ඩන් ග්‍රෙග්ගේ ලිපිය: භාවිතය ගණනය කිරීමේදී බොහෝ සූක්ෂ්ම කරුණු සහ පහත සඳහන් හේතූන් මත මෙම ගණනය වැරදි වන අවස්ථා පිළිබඳව ඔබ ඉගෙන ගනු ඇත:

  • ප්‍රොසෙසරය අධික ලෙස රත් වන අතර එමඟින් චක්‍ර මඟ හැරේ.
  • ප්‍රොසෙසර ඔරලෝසු සංඛ්‍යාතය වෙනස් කරන turbo boost සබල/අබල කරන්න.
  • SpeedStep වැනි ප්‍රොසෙසර බල ඉතිරි කිරීමේ තාක්ෂණයන් භාවිතා කරන විට සිදුවන කාල පෙත්තේ දිග වෙනස් වීම.
  • සාමාන්යය ගණනය කිරීමේ ගැටලුව: 80% ක මිනිත්තුවක් භාවිතා කිරීම ඇස්තමේන්තු කිරීම 100% ක කෙටි කාලීන පිපිරීමක් සැඟවිය හැක.
  • ස්පින් ලොක් එකක් ප්‍රොසෙසරය නැවත ලබා ගැනීමට හේතු වේ, නමුත් පරිශීලක ක්‍රියාවලිය එය ක්‍රියාත්මක කිරීමේදී කිසිදු ප්‍රගතියක් නොදක්වයි. ප්රතිඵලයක් වශයෙන්, ක්රියාවලිය විසින් ගණනය කරන ලද ප්රොසෙසර භාවිතය සියයට සියයක් වනු ඇත, නමුත් ක්රියාවලිය භෞතිකව ප්රොසෙසර කාලය පරිභෝජනය නොකරනු ඇත.

සොරකම් කිරීම සඳහා සමාන ගණනය කිරීමක් විස්තර කරන ලිපියක් මට හමු නොවීය (ඔබ දන්නේ නම්, එය අදහස් දැක්වීමේදී බෙදා ගන්න). එහෙත්, මූලාශ්ර කේතය අනුව විනිශ්චය කිරීම, ගණනය කිරීමේ යාන්ත්රණය ප්රතිචක්රීකරණය සඳහා සමාන වේ. සරලව, KVM ක්‍රියාවලිය (අථත්‍ය යන්ත්‍ර ක්‍රියාවලිය) සඳහා කෙලින්ම කර්නලය තුළ තවත් කවුන්ටරයක් ​​එකතු කරනු ලැබේ, එය CPU කාලය සඳහා රැඳී සිටින KVM ක්‍රියාවලියේ කාලසීමාව ගණනය කරයි. කවුන්ටරය එහි පිරිවිතරයෙන් ප්‍රොසෙසරය පිළිබඳ තොරතුරු ලබා ගන්නා අතර එහි සියලුම කිනිතුල්ලන් අථත්‍ය යන්ත්‍ර ක්‍රියාවලිය මගින් භාවිතා කරන්නේ දැයි පරීක්ෂා කරයි. එපමණයි නම්, අපි උපකල්පනය කරන්නේ ප්‍රොසෙසරය අථත්‍ය යන්ත්‍ර ක්‍රියාවලිය සමඟ පමණක් බව ය. එසේ නොමැති නම්, ප්‍රොසෙසරය වෙනත් දෙයක් කරමින් සිටි බව අපි දන්වමු, සොරකම් කිරීම දර්ශනය විය.

සොරකම් කිරීමේ ගණන් කිරීමේ ක්‍රියාවලිය සාමාන්‍ය ප්‍රතිචක්‍රීකරණ ගණනය කිරීම් වලට සමාන ගැටළු වලට යටත් වේ. එවැනි ගැටළු බොහෝ විට පෙනෙන බව නොකියයි, නමුත් ඒවා අධෛර්යමත් කරයි.

2.2 KVM මත අථත්‍යකරණ වර්ග

පුළුල් ලෙස කිවහොත්, අථත්‍යකරණ වර්ග තුනක් ඇත, ඒ සියල්ලටම KVM සහාය දක්වයි. සොරකම් සිදුවීමේ යාන්ත්රණය අථත්යකරණයේ වර්ගය මත රඳා පවතී.

විකාශනය. මෙම අවස්ථාවේදී, භෞතික හයිපර්වයිසර් උපාංග සමඟ අථත්‍ය යන්ත්‍ර මෙහෙයුම් පද්ධතියේ ක්‍රියාකාරිත්වය මේ වගේ දෙයක් සිදු වේ:

  1. ආගන්තුක මෙහෙයුම් පද්ධතිය එහි ආගන්තුක උපාංගයට විධානයක් යවයි.
  2. ආගන්තුක උපාංග ධාවකය විධානය ලබා ගනී, BIOS උපාංගය සඳහා ඉල්ලීමක් උත්පාදනය කර එය හයිපර්වයිසර් වෙත යවයි.
  3. හයිපර්වයිසර් ක්‍රියාවලිය භෞතික උපාංගය සඳහා විධානය පරිවර්තනය කරයි, එය වෙනත් දේ අතර වඩාත් ආරක්ෂිත කරයි.
  4. භෞතික උපාංග ධාවකය විසින් වෙනස් කරන ලද විධානය පිළිගෙන එය භෞතික උපාංගයටම යවයි.
  5. විධාන ක්‍රියාත්මක කිරීමේ ප්‍රතිඵල එකම මාර්ගය ඔස්සේ ආපසු යයි.

පරිවර්තනයේ වාසිය එය ඔබට ඕනෑම උපාංගයක් අනුකරණය කිරීමට ඉඩ සලසයි මෙහෙයුම් පද්ධති කර්නලය විශේෂ සූදානමක් අවශ්ය නොවේ. නමුත් ඔබ මේ සඳහා ගෙවිය යුතුය, පළමුවෙන්ම, වේගය.

දෘඪාංග අථත්යකරණය. මෙම අවස්ථාවේදී, දෘඪාංග මට්ටමේ උපාංගය මෙහෙයුම් පද්ධතියෙන් විධානයන් තේරුම් ගනී. මෙය වේගවත්ම සහ හොඳම ක්රමයයි. එහෙත්, අවාසනාවකට මෙන්, එය සියලුම භෞතික උපාංග, හයිපර්වයිසර් සහ ආගන්තුක මෙහෙයුම් පද්ධති මගින් සහාය නොදක්වයි. දැනට, දෘඪාංග අථත්‍යකරණයට සහය දක්වන ප්‍රධාන උපාංග ප්‍රොසෙසර වේ.

Paravirtualization. KVM මත උපාංග අථත්‍යකරණය සඳහා වඩාත් පොදු විකල්පය සහ ආගන්තුක මෙහෙයුම් පද්ධති සඳහා සාමාන්‍යයෙන් වඩාත් පොදු අථත්‍යකරණ මාදිලිය වේ. එහි විශේෂත්වය නම්, සමහර හයිපර්වයිසර් උප පද්ධති සමඟ වැඩ කිරීම (උදාහරණයක් ලෙස, ජාලය හෝ තැටි තොගය සමඟ) හෝ මතක පිටු වෙන් කිරීම හයිපර්වයිසර් API භාවිතයෙන්, අඩු මට්ටමේ විධාන පරිවර්තනය නොකර සිදු වේ. මෙම අථත්‍යකරණ ක්‍රමයේ අවාසිය නම් ආගන්තුක මෙහෙයුම් පද්ධති කර්නලය මෙම API භාවිතයෙන් හයිපර්වයිසර් සමඟ සන්නිවේදනය කළ හැකි පරිදි වෙනස් කළ යුතු වීමයි. නමුත් මෙය සාමාන්යයෙන් ආගන්තුක මෙහෙයුම් පද්ධතියේ විශේෂ ධාවක ස්ථාපනය කිරීමෙන් විසඳනු ලැබේ. KVM හි මෙම API ලෙස හැඳින්වේ virtio API.

Paravirtualization සමඟ, විකාශනය හා සසඳන විට, අථත්‍ය යන්ත්‍රයේ සිට ධාරකයේ ඇති හයිපර්වයිසර් ක්‍රියාවලියට සෘජුවම විධාන යැවීමෙන් භෞතික උපාංගයට යන මාර්ගය සැලකිය යුතු ලෙස අඩු වේ. අථත්‍ය යන්ත්‍රය තුළ ඇති සියලුම උපදෙස් ක්‍රියාත්මක කිරීම වේගවත් කිරීමට මෙය ඔබට ඉඩ සලසයි. KVM හි, මෙය සිදු කරනු ලබන්නේ virtio API මගිනි, එය ජාලයක් හෝ තැටි ඇඩප්ටරයක් ​​වැනි ඇතැම් උපාංග සඳහා පමණක් ක්‍රියා කරයි. virtio Drivers Virtual Machine ඇතුලේ ස්ථාපනය කරන්නේ මේ නිසයි.

මෙම ත්වරණයේ අවාසිය නම් අතථ්‍ය යන්ත්‍රය තුළ ක්‍රියාත්මක වන සියලුම ක්‍රියාවලි එය තුළ නොපවතී. මෙය සොරකම් කිරීමට හේතු විය හැකි විශේෂ බලපෑම් කිහිපයක් නිර්මාණය කරයි. මෙම ගැටළුව පිළිබඳ සවිස්තරාත්මක අධ්යයනයක් ආරම්භ කිරීමට මම නිර්දේශ කරමි අතථ්‍ය I/O සඳහා API: virtio.

2.3 "සාධාරණ" උපලේඛනගත කිරීම

හයිපර්වයිසර් මත ඇති අතථ්‍ය යන්ත්‍රයක්, ඇත්ත වශයෙන්ම, ලිනක්ස් කර්නලයේ උපලේඛනගත කිරීමේ (ක්‍රියාවලි අතර සම්පත් බෙදා හැරීම) නීතිවලට අවනත වන සාමාන්‍ය ක්‍රියාවලියකි, එබැවින් අපි එය දෙස සමීපව බලමු.

Linux භාවිතා කරන්නේ ඊනියා CFS, Completely Fair Scheduler, එය කර්නලය 2.6.23 සිට පෙරනිමි උපලේඛනය බවට පත්ව ඇත. මෙම ඇල්ගොරිතම තේරුම් ගැනීමට, ඔබට Linux Kernel Architecture හෝ source code කියවිය හැක. CFS හි සාරය නම් ක්‍රියාවලි අතර ප්‍රොසෙසර කාලය ඔවුන්ගේ ක්‍රියාත්මක කිරීමේ කාලසීමාව අනුව බෙදා හැරීමයි. ක්‍රියාවලියකට අවශ්‍ය CPU කාලය වැඩි වන තරමට එයට ලැබෙන CPU කාලය අඩු වේ. මෙමගින් සියලුම ක්‍රියාවලි "සාධාරණව" ක්‍රියාත්මක වන බව සහතික කරයි - එවිට එක් ක්‍රියාවලියක් සෑම ප්‍රොසෙසරයක්ම නිරතුරුව අල්ලා නොගන්නා අතර අනෙකුත් ක්‍රියාවලීන් ද ක්‍රියාත්මක කළ හැක.

සමහර විට මෙම සුසමාදර්ශය සිත්ගන්නාසුලු කෞතුක වස්තු වලට මග පාදයි. දිගුකාලීන ලිනක්ස් භාවිතා කරන්නන්ට සම්පාදකයක් වැනි සම්පත්-දැඩි යෙදුම් ධාවනය කරන අතරතුර ඩෙස්ක්ටොප් එකක සාමාන්‍ය පෙළ සංස්කාරකයක් කැටි කිරීම මතක තබා ගත හැකිය. මෙය සිදු වූයේ ඩෙස්ක්ටොප් යෙදුම්වල සම්පත්-දැඩි නොවන කාර්යයන් සම්පාදකය වැනි සම්පත්-දැඩි කාර්යයන් සමඟ තරඟ කළ බැවිනි. CFS මෙය අසාධාරණ යැයි සිතයි, එබැවින් එය වරින් වර පෙළ සංස්කාරකය නවත්වන අතර සම්පාදකයාගේ කාර්යයන් හැසිරවීමට ප්‍රොසෙසරයට ඉඩ දෙයි. යාන්ත්‍රණයක් භාවිතයෙන් මෙය නිවැරදි කරන ලදී sched_autogroup, නමුත් කාර්යයන් අතර ප්‍රොසෙසර කාලය බෙදා හැරීමේ තවත් බොහෝ විශේෂාංග පැවතුනි. ඇත්ත වශයෙන්ම, මෙය CFS හි සෑම දෙයක්ම කෙතරම් නරකද යන්න පිළිබඳ කතාවක් නොවේ, නමුත් ප්‍රොසෙසරයේ කාලය “සාධාරණ” බෙදා හැරීම වඩාත්ම සුළු කාර්යය නොවන බව අවධානය යොමු කිරීමේ උත්සාහයකි.

උපලේඛනයේ තවත් වැදගත් කරුණක් වන්නේ පූර්වාරක්ෂාවයි. ප්‍රොසෙසරයෙන් snickering ක්‍රියාවලිය ඉවත් කිරීමට සහ අන් අයට වැඩ කිරීමට මෙය අවශ්‍ය වේ. පිටකිරීමේ ක්‍රියාවලිය සන්දර්භය මාරු කිරීම ලෙස හැඳින්වේ. මෙම අවස්ථාවෙහිදී, කාර්යයේ සම්පූර්ණ සන්දර්භය සංරක්ෂණය කර ඇත: තොගයේ තත්වය, රෙජිස්ටර් යනාදිය, පසුව ක්රියාවලිය බලා සිටීමට යවනු ලබන අතර තවත් එකක් එහි ස්ථානයට පත්වේ. මෙය OS සඳහා මිල අධික මෙහෙයුමක් වන අතර කලාතුරකින් භාවිතා වේ, නමුත් එහි ආවේනික වරදක් නොමැත. නිරන්තර සන්දර්භය මාරු කිරීම OS හි ගැටලුවක් පෙන්නුම් කළ හැකිය, නමුත් සාමාන්යයෙන් එය අඛණ්ඩව පවතින අතර විශේෂයෙන් කිසිවක් සඳහන් නොකරයි.

එක් කරුණක් පැහැදිලි කිරීමට මෙතරම් දීර්ඝ කතාවක් අවශ්‍ය වේ: ක්‍රියාවලියක් අවංක ලිනක්ස් උපලේඛකයක් තුළ වැඩිපුර ප්‍රොසෙසර සම්පත් පරිභෝජනය කිරීමට උත්සාහ කරන තරමට එය වේගයෙන් නතර වන අතර එමඟින් අනෙකුත් ක්‍රියාවලීන් ද ක්‍රියා කළ හැකිය. මෙය නිවැරදිද නැද්ද යන්න විවිධ බර යටතේ වෙනස් ලෙස විසඳිය හැකි සංකීර්ණ ප්‍රශ්නයකි. Windows හි, මෑතක් වන තුරුම, උපලේඛකයා ඩෙස්ක්ටොප් යෙදුම්වල ප්‍රමුඛතා සැකසීම කෙරෙහි අවධානය යොමු කර ඇති අතර, එය පසුබිම් ක්‍රියාවලීන් කැටි කිරීමට හේතු විය හැක. සන් සොලාරිස්ට විවිධ පන්ති කාලසටහන් පහක් තිබුණි. අපි අථත්‍යකරණය දියත් කළ විට, අපි හයවෙනි එක එකතු කළා, සාධාරණ කොටස් සැලසුම්කරු, පෙර පහ Solaris කලාප අථත්‍යකරණය සමඟ ප්‍රමාණවත් ලෙස ක්‍රියා නොකළ නිසා. වැනි පොත් සමඟ මෙම ගැටලුව පිළිබඳ සවිස්තරාත්මක අධ්යයනයක් ආරම්භ කිරීමට මම නිර්දේශ කරමි Solaris Internals: Solaris 10 සහ OpenSolaris Kernel Architecture හෝ ලිනක්ස් කර්නලය අවබෝධ කර ගැනීම.

2.4 සොරකම් නිරීක්ෂණය කරන්නේ කෙසේද?

වෙනත් ඕනෑම ප්‍රොසෙසර මෙට්‍රික් මෙන් අතථ්‍ය යන්ත්‍රයක් තුළ සොරකම් කිරීම නිරීක්ෂණය කිරීම සරල ය: ඔබට ඕනෑම ප්‍රොසෙසර ප්‍රමිතික මෙවලමක් භාවිතා කළ හැක. ප්රධාන දෙය නම් අථත්ය යන්ත්රය Linux මත තිබීමයි. කිසියම් හේතුවක් නිසා වින්ඩෝස් මෙම තොරතුරු එහි පරිශීලකයින්ට ලබා නොදේ. 🙁

සොරකම් කරන්න: අතථ්‍ය යන්ත්‍රවලින් CPU කාලය සොරකම් කරන්නේ කවුද?
ඉහළ විධානයේ ප්‍රතිදානය: ප්‍රොසෙසර භාරයේ විස්තර, දකුණු කෙළවරේ - සොරකම් කරන්න

හයිපර්වයිසර් වෙතින් මෙම තොරතුරු ලබා ගැනීමට උත්සාහ කිරීමේදී දුෂ්කරතාවය පැන නගී. ඔබට සත්කාරක යන්ත්‍රය මත සොරකම් කිරීම පුරෝකථනය කිරීමට උත්සාහ කළ හැකිය, උදාහරණයක් ලෙස, පැටවීමේ සාමාන්‍ය (LA) පරාමිතිය භාවිතා කිරීම - ක්‍රියාත්මක කිරීමේ පෝලිමේ රැඳී සිටින ක්‍රියාවලි ගණනේ සාමාන්‍ය අගය. මෙම පරාමිතිය ගණනය කිරීමේ ක්‍රමය සරල නැත, නමුත් සාමාන්‍යයෙන්, ප්‍රොසෙසර නූල් සංඛ්‍යාවෙන් LA සාමාන්‍යකරණය 1 ට වඩා වැඩි නම්, මෙයින් පෙන්නුම් කරන්නේ Linux සේවාදායකය යමක් අධික ලෙස පටවා ඇති බවයි.

මෙම සියලු ක්‍රියාවලීන් බලා සිටින්නේ කුමක් සඳහාද? පැහැදිලි පිළිතුර වන්නේ ප්රොසෙසරයයි. නමුත් පිළිතුර සම්පූර්ණයෙන්ම නිවැරදි නොවේ, මන්ද සමහර විට ප්‍රොසෙසරය නොමිලේ, නමුත් LA පරිමාණයෙන් බැහැර වේ. මතක තියාගන්න NFS වැටෙන ආකාරය සහ LA වර්ධනය වන ආකාරය. තැටියක් සහ අනෙකුත් ආදාන/ප්‍රතිදාන උපාංග සම්බන්ධයෙන්ද එයම සිදුවිය හැක. නමුත් ඇත්ත වශයෙන්ම, ක්‍රියාවලීන්ට I/O උපාංගයක් හා සම්බන්ධ භෞතික හෝ mutex වැනි තාර්කික ඕනෑම අගුලක අවසානයක් බලා සිටිය හැක. මෙයට දෘඪාංග මට්ටමින් අගුලු දැමීම (තැටිය වෙතින් එකම ප්‍රතිචාරය) හෝ තාර්කික (ඊනියා අගුලු දැමීමේ ප්‍රාථමිකයන්, ආයතන සමූහයක්, mutex අනුවර්තනය සහ භ්‍රමණය, semaphores, තත්ත්‍ව විචල්‍යයන්, rw locks, ipc locks ඇතුළත් වේ. ...)

LA හි තවත් ලක්ෂණයක් වන්නේ එය මෙහෙයුම් පද්ධති සාමාන්‍යයක් ලෙස සැලකීමයි. උදාහරණයක් ලෙස, එක් ගොනුවක් සඳහා ක්‍රියාවලි 100ක් තරඟ කරයි, පසුව LA=50. එවැනි විශාල අගයක් මෙහෙයුම් පද්ධතිය නරක බව පෙන්නුම් කරයි. නමුත් වෙනත් වංක ලෙස ලියා ඇති කේතය සඳහා, මෙය සාමාන්‍ය තත්වයක් විය හැකිය, එය පමණක් නරක වුවත්, මෙහෙයුම් පද්ධතියේ අනෙකුත් ක්‍රියාවලීන් දුක් විඳින්නේ නැත.

මෙම සාමාන්‍යය නිසා (සහ මිනිත්තුවකට නොඅඩු කාලයකදී), LA දර්ශකය මගින් ඕනෑම දෙයක් නිර්ණය කිරීම, විශේෂිත අවස්ථාවන්හි ඉතා අවිනිශ්චිත ප්‍රතිඵල සහිතව, වඩාත්ම ප්‍රතිලාභදායක කාර්යය නොවේ. ඔබ එය තේරුම් ගැනීමට උත්සාහ කරන්නේ නම්, විකිපීඩියාවේ සහ අනෙකුත් පවතින සම්පත් වල ලිපි ක්‍රියාවලිය පිළිබඳ ගැඹුරු පැහැදිලි කිරීමකින් තොරව සරලම අවස්ථා පමණක් විස්තර කරන බව ඔබට පෙනී යනු ඇත. උනන්දුවක් දක්වන සෑම කෙනෙකුටම මම යවමි, මෙන්න බ්‍රෙන්ඩන් ග්‍රෙග් වෙත  - පහත සබැඳි අනුගමනය කරන්න. ඉංග්‍රීසි කතා කිරීමට කම්මැලි කවුද - LA පිළිබඳ ඔහුගේ ජනප්‍රිය ලිපියේ පරිවර්තනය.

3. විශේෂ බලපෑම්

දැන් අපි බලමු අපිට හමු වූ ප්‍රධාන සොරකම් සිද්ධීන් ගැන. ඉහත සියල්ලෙන් ඔවුන් අනුගමනය කරන ආකාරය සහ ඒවා අධි වයිසරයේ දර්ශකවලට සම්බන්ධ වන්නේ කෙසේදැයි මම ඔබට කියමි.

ප්රතිචක්රීකරණය. සරලම සහ වඩාත් සුලභ: හයිපර්වයිසර් නැවත භාවිතා කර ඇත. ඇත්ත වශයෙන්ම, ධාවනය වන අතථ්‍ය යන්ත්‍ර විශාල ප්‍රමාණයක් ඇත, ඒවා තුළ ඉහළ ප්‍රොසෙසර පරිභෝජනය, තරඟකාරිත්වය, LA භාවිතය 1 ට වඩා වැඩිය (ප්‍රොසෙසර නූල් මගින් සාමාන්‍යකරණය කර ඇත). සියලුම අතථ්‍ය යන්ත්‍ර තුළ ඇති සියල්ල මන්දගාමී වේ. Hypervisor වෙතින් සම්ප්රේෂණය කරන ලද සොරකම් ද වර්ධනය වෙමින් පවතී, එය භාරය නැවත බෙදා හැරීම හෝ යමෙකු අක්රිය කිරීම අවශ්ය වේ. පොදුවේ ගත් කල, සෑම දෙයක්ම තාර්කික හා තේරුම්ගත හැකි ය.

Paravirtualization එදිරිව තනි අවස්ථා. හයිපර්වයිසර් මත ඇත්තේ එක් අතථ්‍ය යන්ත්‍රයක් පමණි; එය එයින් කුඩා කොටසක් පරිභෝජනය කරයි, නමුත් විශාල I/O භාරයක් නිපදවයි, උදාහරණයක් ලෙස තැටියේ. කොතැනක හෝ කුඩා සොරකමක් එහි දිස්වේ, 10% දක්වා (පරීක්ෂණ කිහිපයකින් පෙන්වා ඇති පරිදි).

නඩුව සිත්ගන්නා සුළුය. පැරා අථත්‍ය ධාවක මට්ටමින් අවහිර කිරීම නිසා ස්ටීල් මෙහි දිස්වේ. අතථ්‍ය යන්ත්‍රය තුළ බාධාවක් සාදනු ලැබේ, රියදුරු විසින් සැකසූ අතර අධි වයිසර් වෙත යවනු ලැබේ. Hypervisor හි බාධා කිරීම් හැසිරවීම හේතුවෙන්, අථත්‍ය යන්ත්‍රය සඳහා එය යවන ලද ඉල්ලීමක් ලෙස පෙනේ, එය ක්‍රියාත්මක කිරීමට සූදානම් වන අතර ප්‍රොසෙසරය සඳහා බලා සිටී, නමුත් එයට ප්‍රොසෙසර කාලය ලබා දී නොමැත. වර්චුවල් කෙල්ලට හිතෙනවා මේ පාර හොරකම් කරලා කියලා.

බෆරය යවන මොහොතේ මෙය සිදු වේ, එය හයිපර්වයිසර්ගේ කර්නල් අවකාශයට යයි, අපි එය බලා සිටීමට පටන් ගනිමු. කෙසේ වෙතත්, අථත්ය යන්ත්රයේ දෘෂ්ටි කෝණයෙන්, ඔහු වහාම ආපසු යා යුතුය. එබැවින්, සොරකම් ගණනය කිරීමේ ඇල්ගොරිතමයට අනුව, මෙම කාලය සොරකම් කිරීම ලෙස සැලකේ. බොහෝ දුරට ඉඩ, මෙම තත්වය තුළ වෙනත් යාන්ත්‍රණ තිබිය හැකිය (උදාහරණයක් ලෙස, වෙනත් sys ඇමතුම් සැකසීම), නමුත් ඒවා බොහෝ වෙනස් නොවිය යුතුය.

Scheduler එදිරිව අධික ලෙස පටවන ලද අතථ්‍ය යන්ත්‍ර. එක් අතථ්‍ය යන්ත්‍රයක් අනෙක් අයට වඩා සොරකම් කිරීමෙන් පීඩා විඳින විට, මෙය උපලේඛකයාට හේතු වේ. ක්‍රියාවලියක් ප්‍රොසෙසරය පූරණය කරන තරමට, උපලේඛකයා ඉක්මනින් එය ඉවත් කරයි, එවිට අනෙක් අයටද ක්‍රියා කළ හැකිය. අතථ්‍ය යන්ත්‍රය සුළු වශයෙන් පරිභෝජනය කරන්නේ නම්, එය සොරකම් කිරීම කිසිසේත්ම නොදකිනු ඇත: එහි ක්‍රියාවලිය අවංකව වාඩි වී බලා සිටියේය, අපි එයට වැඩි කාලයක් ලබා දිය යුතුය. අතථ්‍ය යන්ත්‍රයක් එහි සියලුම හරයන් මත උපරිම බරක් නිපදවන්නේ නම්, එය බොහෝ විට ප්‍රොසෙසරයෙන් ඉවත් කරනු ලබන අතර ඔවුන් එයට වැඩි කාලයක් ලබා නොදීමට උත්සාහ කරයි.

අථත්‍ය යන්ත්‍රය තුළ ඇති ක්‍රියාවලීන් දත්ත සැකසුම් සමඟ සාර්ථකව කටයුතු කළ නොහැකි නිසා වැඩි ප්‍රොසෙසරයක් ලබා ගැනීමට උත්සාහ කරන විට එය වඩාත් නරක ය. එවිට හයිපර්වයිසර් මත මෙහෙයුම් පද්ධතිය, අවංක ප්රශස්තකරණය හේතුවෙන්, අඩු සහ අඩු ප්රොසෙසර කාලයක් ලබා දෙනු ඇත. මෙම ක්‍රියාවලිය හිම කුණාටුවක් මෙන් සිදු වන අතර සොරකම් කිරීම අහසට පනියි, නමුත් වෙනත් අතථ්‍ය යන්ත්‍රවලට එය නොපෙනේ. සහ වැඩි හරය, බලපෑමට ලක් වූ යන්ත්රය වඩාත් නරක ය. කෙටියෙන් කිවහොත්, බොහෝ හරයන් සහිත අධික ලෙස පටවා ඇති අථත්‍ය යන්ත්‍ර වඩාත් දුක් විඳිති.

අඩු LA, නමුත් සොරකම් තිබේ. LA දළ වශයෙන් 0,7 නම් (එනම්, හයිපර්වයිසරය යටපත් වී ඇති බවක් පෙනේ), නමුත් තනි අථත්‍ය යන්ත්‍ර තුළ සොරකම් කිරීම නිරීක්ෂණය කෙරේ:

  • දැනටමත් ඉහත විස්තර කර ඇති paravirtualization සමඟ විකල්පය. අථත්‍ය යන්ත්‍රයට සොරකම් කරන ප්‍රමිතික ලබා ගත හැක, නමුත් හයිපර්වයිසර් හොඳ ය. අපගේ අත්හදා බැලීම්වල ප්‍රතිඵලවලට අනුව, මෙම සොරකම් කිරීමේ විකල්පය 10% නොඉක්මවන අතර අථත්‍ය යන්ත්‍රය තුළ යෙදුම්වල ක්‍රියාකාරිත්වයට සැලකිය යුතු බලපෑමක් ඇති නොකළ යුතුය.
  • LA පරාමිතිය වැරදි ලෙස ගණනය කර ඇත. වඩාත් නිවැරදිව, සෑම නිශ්චිත මොහොතකම එය නිවැරදිව ගණනය කරනු ලැබේ, නමුත් සාමාන්‍ය මිනිත්තුවකට වඩා වැඩි වූ විට එය අවතක්සේරු කර ඇත. උදාහරණයක් ලෙස, හයිපර්වයිසර් තුනෙන් එකකට එක් අතථ්‍ය යන්ත්‍රයක් එහි සියලුම ප්‍රොසෙසර හරියටම මිනිත්තු භාගයක් පරිභෝජනය කරන්නේ නම්, හයිපර්වයිසරයේ විනාඩියකට LA 0,15 වනු ඇත; එවැනි අතථ්‍ය යන්ත්‍ර හතරක් එකවර ක්‍රියා කිරීමෙන් 0,6 ලබා දෙනු ඇත. LA දර්ශකයට අනුව විනාඩි භාගයක් ඔවුන්ගෙන් 25% ක වල් සොරකමක් සිදු වූ බව තවදුරටත් පිටතට ඇද ගත නොහැක.
  • නැවතත්, යමෙකු ඕනෑවට වඩා කන බව තීරණය කළ කාලසටහන්කරු නිසා සහ යමෙකුට බලා සිටීමට ඉඩ දුන්නේය. මේ අතරතුර, මම සන්දර්භය මාරු කරමි, බාධා කිරීම් හසුරුවන්න සහ අනෙකුත් වැදගත් පද්ධති දේවල් බලාගන්නම්. එහි ප්‍රතිඵලයක් වශයෙන්, සමහර අතථ්‍ය යන්ත්‍රවල කිසිදු ගැටළුවක් නොපෙනෙන අතර අනෙක් ඒවා බරපතල කාර්ය සාධන පිරිහීමකට ලක්වේ.

4. වෙනත් විකෘති කිරීම්

අතථ්‍ය යන්ත්‍රයක ප්‍රොසෙසරයේ සාධාරණ ප්‍රතිලාභය විකෘති කිරීමට තවත් හේතු මිලියනයක් තිබේ. උදාහරණයක් ලෙස, hyperthreading සහ NUMA ගණනය කිරීම් වලට අපහසුතා හඳුන්වා දෙයි. ඔවුන් ක්‍රියාවලිය ක්‍රියාත්මක කිරීම සඳහා කර්නලය තේරීම සම්පූර්ණයෙන්ම ව්‍යාකූල කරයි, මන්ද උපලේඛකයා සංගුණක - බර භාවිතා කරයි, එමඟින් සන්දර්භය මාරු කිරීමේදී ගණනය කිරීම වඩාත් අපහසු වේ.

turbo boost හෝ, අනෙක් අතට, බලශක්ති ඉතිරිකිරීමේ මාදිලිය වැනි තාක්ෂණයන් හේතුවෙන් විකෘති කිරීම් ඇත, ඒවා භාවිතා කිරීම ගණනය කිරීමේදී, සේවාදායකයේ සංඛ්‍යාතය හෝ කාල පෙත්ත පවා කෘතිමව වැඩි කිරීමට හෝ අඩු කිරීමට හැකිය. ටර්බෝ බූස්ට් සක්‍රීය කිරීම එක් ප්‍රොසෙසර ත්‍රෙඩ් එකක ක්‍රියාකාරීත්වය තවත් එකක ක්‍රියාකාරීත්වය වැඩි වීම නිසා අඩු කරයි. මේ මොහොතේ, වත්මන් ප්‍රොසෙසර සංඛ්‍යාතය පිළිබඳ තොරතුරු අථත්‍ය යන්ත්‍රයට සම්ප්‍රේෂණය නොවන අතර, යමෙකු එහි කාලය සොරකම් කරන බව එය විශ්වාස කරයි (උදාහරණයක් ලෙස, එය 2 GHz ඉල්ලා සිටියද, එයින් අඩක් ලැබුණි).

සාමාන්යයෙන්, විකෘති කිරීම සඳහා බොහෝ හේතු තිබිය හැක. විශේෂිත පද්ධතියක ඔබට වෙනත් දෙයක් සොයාගත හැකිය. මම ඉහත සබැඳි ලබා දුන් පොත් වලින් ආරම්භ කිරීම වඩා හොඳ වන අතර, ඒවායින් perf, sysdig, systemtap වැනි උපයෝගිතා භාවිතා කරමින් හයිපර්වයිසර් වෙතින් සංඛ්‍යාලේඛන ලබා ගැනීම වඩා හොඳය. දුසිම් ගනනක්.

5. නිගමන

  1. paravirtualization හේතුවෙන් යම් සොරකම් සිදු විය හැකි අතර එය සාමාන්‍ය දෙයක් ලෙස සැලකිය හැක. මෙම අගය 5-10% විය හැකි බව ඔවුන් අන්තර්ජාලයේ ලියයි. අතථ්‍ය යන්ත්‍රය තුළ ඇති යෙදුම් සහ එය එහි භෞතික උපාංග මත පැටවීම මත රඳා පවතී. මෙහිදී අතථ්‍ය යන්ත්‍ර තුළ යෙදුම් හැඟෙන්නේ කෙසේද යන්න පිළිබඳව අවධානය යොමු කිරීම වැදගත් වේ.
  2. අථත්‍ය යන්ත්‍රය තුළ ඇති හයිපර්වයිසර් සහ සොරකම්වල බරෙහි අනුපාතය සෑම විටම පැහැදිලිව අන්තර් සම්බන්ධිත නොවේ; විවිධ බර යටතේ ඇති විශේෂිත අවස්ථාවන්හිදී සොරකම් කිරීමේ ඇස්තමේන්තු දෙකම වැරදි විය හැකිය.
  3. බොහෝ දේ ඉල්ලා සිටින ක්‍රියාවලීන් කෙරෙහි උපලේඛකයාට ඇත්තේ නරක ආකල්පයකි. වැඩිපුර ඉල්ලන අයට අඩුවෙන් දෙන්න හදනවා. විශාල අතථ්‍ය යන්ත්‍ර නරක ය.
  4. පැරා අථත්‍යකරණයකින් තොරව වුවද කුඩා සොරකමක් සාමාන්‍ය විය හැකිය (අථත්‍ය යන්ත්‍රය තුළ ඇති බර, අසල්වැසියන්ගේ බරෙහි ලක්ෂණ, නූල් හරහා බර බෙදා හැරීම සහ වෙනත් සාධක සැලකිල්ලට ගනිමින්).
  5. ඔබට නිශ්චිත පද්ධතියක සොරකම් කිරීම හඳුනා ගැනීමට අවශ්‍ය නම්, ඔබට විවිධ විකල්ප ගවේෂණය කිරීමට, ප්‍රමිතික එකතු කිරීමට, ඒවා හොඳින් විශ්ලේෂණය කිරීමට සහ බර ඒකාකාරව බෙදා හරින ආකාරය ගැන සිතා බැලිය යුතුය. ඕනෑම අවස්ථාවක අපගමනය විය හැකි අතර, එය පර්යේෂණාත්මකව තහවුරු කළ යුතු හෝ කර්නල් නිදොස්කරණයේ බැලිය යුතුය.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න