چوري: جيڪو ورچوئل مشينن مان سي پي يو جو وقت چوري ڪري ٿو

چوري: جيڪو ورچوئل مشينن مان سي پي يو جو وقت چوري ڪري ٿو

سلام! مان توهان کي آسان لفظن ۾ ورچوئل مشينن جي اندر چوري ڪرڻ جي مشينن بابت ۽ ڪجهه غير واضح نمونن بابت ٻڌائڻ چاهيان ٿو جيڪي اسان ان جي تحقيق دوران ڳولڻ ۾ ڪامياب ٿي ويا هئاسين، جنهن ۾ مون کي هڪ ڪلائوڊ پليٽ فارم جي ٽيڪنيڪل ڊائريڪٽر جي حيثيت سان گڏ ٿيڻو هو. Mail.ru ڪلائوڊ حل. پليٽ فارم KVM تي هلندو آهي.

سي پي يو چوري جو وقت اهو وقت آهي جنهن دوران ورچوئل مشين ان جي عمل لاءِ پروسيسر وسيلا حاصل نه ڪندو آهي. هي وقت صرف ورچوئلائيزيشن ماحول ۾ مهمان آپريٽنگ سسٽم ۾ شمار ڪيو ويندو آهي. اهي سڀ کان وڌيڪ مختص ڪيل وسيلا ڪٿي وڃن ٿا ان جا سبب، جيئن زندگيءَ ۾، بلڪل مبهم آهن. پر اسان ان کي معلوم ڪرڻ جو فيصلو ڪيو، ۽ اڃا به ڪيترائي تجربا ڪيا. اهو نه آهي ته اسان هاڻي چوري بابت سڀ ڪجهه ڄاڻون ٿا، پر هاڻي اسان توهان کي ڪجهه دلچسپ ٻڌائينداسين.

1. چوري ڇا آهي

تنهن ڪري، چوري هڪ ميٽرڪ آهي جيڪو ظاهر ڪري ٿو پروسيسر جي وقت جي گهٽتائي هڪ ورچوئل مشين اندر پروسيس لاءِ. جيئن بيان ڪيو ويو آهي KVM ڪرنل پيچ ۾اسٽيلٿ اهو وقت آهي جنهن دوران هائپرائزر ميزبان OS تي ٻين عملن کي انجام ڏئي رهيو آهي جيتوڻيڪ هن عمل لاءِ ورچوئل مشين جي عمل کي قطار ڪري ڇڏيو آهي. اهو آهي، چوري جي حساب سان حساب ڪيو ويندو آهي وقت جي وچ ۾ فرق جڏهن پروسيس تي عمل ڪرڻ لاء تيار آهي ۽ وقت جڏهن پروسيس کي مختص ڪيو ويو آهي پروسيسر وقت.

ورچوئل مشين ڪنييل هائپرائزر کان چوري ميٽرڪ وصول ڪري ٿي. ساڳئي وقت، هائپر وائزر اهو واضح نه ٿو ڪري ته اهو ڪهڙو عمل هلي رهيو آهي، اهو صرف چوي ٿو "جڏهن مان مصروف آهيان، مان توهان کي وقت نه ٿو ڏئي سگهان." KVM تي، چوري جي حساب لاء مدد شامل ڪئي وئي آھي پيچ. هتي ٻه اهم نقطا آهن:

  • ورچوئل مشين هائپرائزر کان چوري بابت سکي ٿي. اھو آھي، نقصان جي نقطي نظر کان، ورچوئل مشين تي عملن لاء، اھو ھڪڙو اڻ سڌي طرح آھي جيڪو مختلف تحريف جي تابع ٿي سگھي ٿو.
  • هائپرائزر مجازي مشين سان معلومات حصيداري نٿو ڪري ته اهو ڇا ڪري رهيو آهي - بنيادي شيء اها آهي ته اهو ان لاء وقت وقف نٿو ڪري. انهي جي ڪري، مجازي مشين پاڻ کي چوري اشاري ۾ تحريف کي ڳولي نه ٿو سگهي، جيڪا مقابلي واري عمل جي فطرت طرفان اندازو لڳائي سگهجي ٿي.

2. ڇا چوري کي متاثر ڪري ٿو

2.1. چوري جو حساب

لازمي طور تي، چوري جي حساب سان حساب ڪيو ويندو آهي تقريبن عام سي پي يو استعمال جي وقت وانگر. ريسائڪلنگ کي ڪيئن سمجهيو ويندو آهي بابت گهڻو ڄاڻ ناهي. شايد ڇاڪاڻ ته گهڻا ماڻهو هن سوال کي واضح سمجهندا آهن. پر هتي پڻ خرابيون آهن. هن عمل سان پاڻ کي واقف ڪرڻ لاء، توهان پڙهي سگهو ٿا Brendan Gregg پاران آرٽيڪل: توهان ڪيترن ئي نونسن جي باري ۾ سکندا جڏهن استعمال جي حساب سان ۽ حالتن جي باري ۾ جڏهن هي حساب هيٺين سببن جي ڪري غلط ٿيندو:

  • پروسيسر کي وڌيڪ گرم ڪري ٿو، جنهن جي ڪري سائيڪلن کي ڇڏڻ لاء.
  • ٽربو بوسٽ کي فعال / غير فعال ڪريو، جيڪو پروسيسر ڪلاڪ جي تعدد کي تبديل ڪري ٿو.
  • وقت جي سلائس جي ڊيگهه ۾ تبديلي جيڪا ٿئي ٿي جڏهن پروسيسر پاور-سيونگ ٽيڪنالاجيون استعمال ڪندي جهڙوڪ اسپيڊ اسٽيپ.
  • اوسط جي حساب سان مسئلو: 80٪ تي هڪ منٽ جي استعمال جو اندازو لڳائڻ 100٪ جي مختصر مدت جي دفن کي لڪائي سگھي ٿو.
  • هڪ اسپن لاڪ پروسيسر کي ٻيهر حاصل ڪرڻ جو سبب بڻائيندو آهي، پر صارف جي عمل کي ان جي عمل ۾ ڪا به ترقي نظر نه ايندي آهي. نتيجي طور، پروسيس جي حساب سان پروسيسر جي استعمال هڪ سئو سيڪڙو ٿي ويندي، جيتوڻيڪ اهو عمل جسماني طور تي پروسيسر وقت استعمال نه ڪندو.

مون کي اهڙو مضمون نه مليو آهي جنهن ۾ چوري جي ساڳي حساب سان بيان ڪيو ويو هجي (جيڪڏهن توهان کي خبر آهي ته ان کي تبصرن ۾ حصيداري ڪريو). پر، ماخذ ڪوڊ جي حساب سان، حساب ڪتاب جو طريقو ساڳيو آهي جيئن ري سائيڪلنگ لاء. بس، هڪ ٻيو ڪائونٽر شامل ڪيو ويو آهي ڪرنل ۾، سڌو سنئون KVM پروسيس (ورچوئل مشين پروسيس) لاءِ، جيڪو شمار ڪري ٿو KVM پروسيس جي مدي کي CPU وقت جي انتظار ۾. ڪائونٽر پروسيسر جي باري ۾ معلومات وٺي ٿو ان جي وضاحتن کان ۽ چيڪ ڪري ٿو ته ڇا ان جا سڀئي ٽڪ ورچوئل مشين پروسيس ذريعي استعمال ڪيا ويا آهن. جيڪڏهن اهو سڀ ڪجهه آهي، پوء اسان فرض ڪيو ته پروسيسر صرف مجازي مشين جي عمل سان قبضو ڪيو ويو آهي. ٻي صورت ۾، اسان ڄاڻون ٿا ته پروسيسر ڪجهه ٻيو ڪم ڪري رهيو هو، چوري ظاهر ٿيو.

چوري جي ڳڻپ جو عمل ساڳيو مسئلن سان مشروط آهي جيئن باقاعده ري سائيڪلنگ ڳڻپ. اهو چوڻ نه آهي ته اهڙا مسئلا اڪثر ظاهر ٿيندا آهن، پر اهي مايوس نظر اچن ٿا.

2.2. KVM تي ورچوئلائيزيشن جا قسم

عام طور تي ڳالهائڻ، ورچوئلائيزيشن جا ٽي قسم آهن، جن مان سڀئي KVM جي مدد سان آهن. چوري ٿيڻ جو ميکانيزم شايد ورچوئلائيزيشن جي قسم تي ڀاڙي ٿو.

براڊلينڊ. هن معاملي ۾، جسماني hypervisor ڊوائيسز سان مجازي مشين آپريٽنگ سسٽم جي آپريشن ڪجهه هن طرح ٿئي ٿو:

  1. مهمان آپريٽنگ سسٽم پنهنجي مهمان ڊوائيس ڏانهن هڪ حڪم موڪلي ٿو.
  2. مهمان ڊيوائس ڊرائيور حڪم وصول ڪري ٿو، ڊوائيس BIOS لاءِ درخواست ٺاهي ٿو ۽ ان کي هائپرائزر ڏانهن موڪلي ٿو.
  3. هائپرائزر پروسيس کي ترجمو ڪري ٿو حڪم کي فزيڪل ڊيوائس لاءِ ڪمانڊ، ان کي ٺاهڻ، ٻين شين جي وچ ۾، وڌيڪ محفوظ.
  4. جسماني ڊوائيس ڊرائيور تبديل ٿيل حڪم قبول ڪري ٿو ۽ ان کي جسماني ڊوائيس ڏانهن موڪلي ٿو.
  5. حڪمن تي عمل ڪرڻ جا نتيجا ساڳئي رستي سان واپس ويندا آهن.

ترجمي جو فائدو اهو آهي ته اهو توهان کي ڪنهن به ڊوائيس کي نقل ڪرڻ جي اجازت ڏئي ٿو ۽ آپريٽنگ سسٽم جي ڪنيل جي خاص تياري جي ضرورت ناهي. پر توهان کي هن لاء ادا ڪرڻو پوندو، سڀ کان پهريان، رفتار ۾.

هارڊويئر ورچوئلائيزيشن. انهي حالت ۾، ڊوائيس هارڊويئر سطح تي آپريٽنگ سسٽم کان حڪم سمجهي ٿو. اهو سڀ کان تيز ۽ بهترين طريقو آهي. پر، بدقسمتي سان، اهو سڀني جسماني ڊوائيسز، هائپر ويزرز ۽ مهمان آپريٽنگ سسٽم طرفان سهڪار نه آهي. في الحال، مکيه ڊوائيس جيڪي سپورٽ ڪن ٿيون هارڊويئر ورچوئلائيزيشن پروسيسر آهن.

Paravirtualization. KVM تي ڊوائيس ورچوئلائيزيشن لاءِ سڀ کان عام اختيار ۽ عام طور تي مهمان آپريٽنگ سسٽم لاءِ سڀ کان وڌيڪ عام ورچوئلائيزيشن موڊ. ان جي خصوصيت اها آهي ته ڪم ڪجهه هائپر وائيزر سب سسٽم سان (مثال طور، نيٽ ورڪ يا ڊسڪ اسٽيڪ سان) يا ميموري صفحن جو مختص ڪرڻ هائپر وائيزر API استعمال ڪندي ٿئي ٿو، بغير گهٽ-سطح جي حڪمن کي ترجمو ڪرڻ جي. هن ورچوئلائيزيشن جي طريقي جو نقصان اهو آهي ته مهمان آپريٽنگ سسٽم ڪنيل کي تبديل ڪيو وڃي ته جيئن اهو هن API استعمال ڪندي هائپر ويزر سان رابطو ڪري سگهي. پر اهو عام طور تي مهمان آپريٽنگ سسٽم تي خاص ڊرائيور نصب ڪندي حل ڪيو ويندو آهي. KVM ۾ هي API سڏيو ويندو آهي virtio API.

paravirtualization سان، براڊ ڪاسٽنگ جي مقابلي ۾، فزيڪل ڊيوائس جو رستو خاص طور تي گھٽجي ويو آھي حڪم موڪلڻ سان سڌو سنئون ورچوئل مشين کان ھوسٽ تي هائپر وائزر عمل ڏانھن. اهو توهان کي مجازي مشين جي اندر سڀني هدايتن جي عمل کي تيز ڪرڻ جي اجازت ڏئي ٿو. KVM ۾، اهو ڪيو ويو آهي virtio API، جيڪو صرف ڪجهه ڊوائيسز لاء ڪم ڪري ٿو، جهڙوڪ نيٽورڪ يا ڊسڪ اڊاپٽر. اهو ئي سبب آهي ته virtio ڊرائيور ورچوئل مشينن ۾ نصب ٿيل آهن.

هن تيز رفتاري جو نقصان اهو آهي ته سڀئي عمل جيڪي ورچوئل مشين اندر هلن ٿا ان جي اندر ئي نه رهن. اهو ڪجهه خاص اثر پيدا ڪري ٿو جنهن جي نتيجي ۾ چوري تي اسپوننگ ٿي سگهي ٿي. مان هن مسئلي جو تفصيلي مطالعو شروع ڪرڻ جي صلاح ڏيان ٿو ورچوئل I/O لاءِ هڪ API: virtio.

2.3. "منصفانه" منصوبه بندي

هڪ هائپرائزر تي هڪ مجازي مشين، حقيقت ۾، هڪ عام عمل آهي جيڪو لينڪس ڪنييل ۾ شيڊولنگ جي قانونن جي (پروسيس جي وچ ۾ وسيلن جي ورڇ) جي فرمانبرداري ڪري ٿو، تنهنڪري اچو ته ان تي هڪ ويجهي نظر رکون.

لينڪس استعمال ڪري ٿو نام نهاد CFS، مڪمل طور تي منصفانه شيڊيولر، جيڪو kernel 2.6.23 کان ڊفالٽ شيڊولر بڻجي چڪو آهي. ھن الگورتھم کي سمجھڻ لاءِ، توھان پڙھي سگھوٿا لينڪس ڪنيل آرڪيٽيڪچر يا سورس ڪوڊ. CFS جو بنياد پروسيسر جي وقت کي تقسيم ڪرڻ آهي پروسيس جي وچ ۾ ان جي عمل جي مدت جي لحاظ سان. وڌيڪ CPU وقت هڪ پروسيس جي ضرورت آهي، گهٽ CPU وقت اهو وصول ڪري ٿو. اهو يقيني بڻائي ٿو ته سڀئي عمل "منصفانه" تي عمل ڪيا ويا آهن - انهي ڪري ته هڪ عمل مسلسل سڀني پروسيسرز تي قبضو نٿو ڪري، ۽ ٻيا عمل پڻ عمل ڪري سگهن ٿا.

ڪڏهن ڪڏهن اهو نمونو دلچسپ نموني ڏانهن وٺي ويندو آهي. ڊگھي عرصي کان لينڪس استعمال ڪندڙ شايد ڊيسڪ ٽاپ تي باقاعده ٽيڪسٽ ايڊيٽر جي منجمد ٿيڻ کي ياد ڪندا آهن جڏهن ته وسيلن جي شدت واري ايپليڪيشنن کي هلائيندا آهن جهڙوڪ هڪ ڪمپلر. اهو ٿي چڪو آهي ڇاڪاڻ ته ڊيسڪ ٽاپ ايپليڪيشنن ۾ غير وسيلا-گھڻي ڪمن جو مقابلو وسيلا-گھڻي ڪمن سان ڪيو ويو آهي، جهڙوڪ مرتب ڪندڙ. CFS سمجهي ٿو ته اهو غير منصفانه آهي، تنهنڪري اهو وقتي طور تي ٽيڪسٽ ايڊيٽر کي روڪي ٿو ۽ پروسيسر کي گڏ ڪرڻ واري ڪم کي سنڀالڻ جي اجازت ڏئي ٿو. اهو هڪ ميڪانيزم استعمال ڪندي درست ڪيو ويو sched_autogroup، پر ڪمن جي وچ ۾ پروسيسر جي وقت جي تقسيم جا ٻيا ڪيترائي خاصيتون رهيون آهن. دراصل، هي هڪ ڪهاڻي ناهي ته CFS ۾ هر شيء ڪيئن خراب آهي، پر حقيقت ڏانهن ڌيان ڏيڻ جي ڪوشش ڪئي وئي آهي ته پروسيسر جي وقت جي "منصفانه" تقسيم سڀ کان ننڍڙو ڪم نه آهي.

شيڊولر ۾ هڪ ٻيو اهم نقطو اڳڀرائي آهي. اهو ضروري آهي ته پروسيسر مان ڇڪڻ واري عمل کي ختم ڪرڻ ۽ ٻين کي ڪم ڪرڻ ڏيو. خارج ڪرڻ واري عمل کي حوالو سوئچنگ سڏيو ويندو آهي. انهي صورت ۾، ڪم جو سڄو مفهوم محفوظ آهي: اسٽيڪ جي حالت، رجسٽر، وغيره، جنهن کان پوء پروسيس کي انتظار ڪرڻ لاء موڪليو ويو آهي، ۽ ٻيو هڪ ان جي جاء وٺندو آهي. اهو او ايس لاءِ هڪ مهانگو آپريشن آهي ۽ گهٽ ۾ گهٽ استعمال ڪيو ويندو آهي، پر ان سان گڏ موروثي طور تي ڪجهه به غلط ناهي. بار بار جي حوالي سان سوئچنگ شايد OS ۾ هڪ مسئلو ظاهر ڪري، پر عام طور تي اهو مسلسل آهي ۽ خاص طور تي ڪجهه به ظاهر نٿو ڪري.

هڪ حقيقت کي بيان ڪرڻ لاءِ اهڙي ڊگهي ڪهاڻي جي ضرورت آهي: وڌيڪ پروسيسر وسيلا هڪ پروسيسر هڪ ايماندار لينڪس شيڊولر ۾ استعمال ڪرڻ جي ڪوشش ڪندو، تيزيء سان ان کي روڪيو ويندو ته جيئن ٻيا عمل پڻ ڪم ڪري سگهن. ڇا اهو صحيح آهي يا نه اهو هڪ پيچيده سوال آهي جنهن کي مختلف بوجھ هيٺ مختلف طريقي سان حل ڪري سگهجي ٿو. ونڊوز ۾، تازو تائين، شيڊولر ڊيسڪ ٽاپ ايپليڪيشنن جي ترجيحي پروسيسنگ تي ڌيان ڏنو ويو، جيڪو پس منظر جي عمل کي منجمد ڪرڻ جو سبب بڻجي سگهي ٿو. سج سولارس جا پنج مختلف طبقن جا شيڊيولر هئا. جڏهن اسان ورچوئلائيزيشن شروع ڪئي، اسان ڇهين هڪ شامل ڪيو، منصفانه شيئر شيڊولر، ڇاڪاڻ ته پوئين پنجن سولاري زونز ورچوئلائيزيشن سان مناسب ڪم نه ڪيو. مان هن مسئلي جو تفصيلي مطالعو شروع ڪرڻ جي صلاح ڏيان ٿو جهڙوڪ ڪتابن سان سولاريس اندروني: سولاريس 10 ۽ اوپن سولاريس ڪنيل آرڪيٽيڪچر يا لينڪس ڪنيل کي سمجھڻ.

2.4. چوري جي نگراني ڪيئن ڪجي؟

هڪ ورچوئل مشين اندر چوري جي نگراني، ڪنهن ٻئي پروسيسر ميٽرڪ وانگر، سادو آهي: توهان ڪنهن به پروسيسر ميٽرڪ اوزار استعمال ڪري سگهو ٿا. اصلي شيء اها آهي ته مجازي مشين لينڪس تي آهي. ڪجهه سببن لاءِ Windows هن معلومات کي پنهنجي استعمال ڪندڙن کي مهيا نٿو ڪري. 🙁

چوري: جيڪو ورچوئل مشينن مان سي پي يو جو وقت چوري ڪري ٿو
مٿين ڪمانڊ جو آئوٽ: پروسيسر لوڊ جا تفصيل، ساڄي پاسي واري ڪالمن ۾ - چوري

مشڪل پيدا ٿئي ٿي جڏهن هي معلومات حاصل ڪرڻ جي ڪوشش ڪندي هائپرائزر کان. توهان ميزبان مشين تي چوري جي اڳڪٿي ڪرڻ جي ڪوشش ڪري سگهو ٿا، مثال طور، لوڊ اوسط (LA) پيٽرولر استعمال ڪندي - عمل جي قطار ۾ انتظار ڪندڙ عملن جي تعداد جو اوسط قدر. هن پيٽرول کي ڳڻڻ جو طريقو سادو ناهي، پر عام طور تي، جيڪڏهن LA کي عام ڪيو وڃي ته پروسيسر جي سلسلي جو تعداد 1 کان وڌيڪ آهي، اهو ظاهر ڪري ٿو ته لينڪس سرور ڪنهن شيء سان اوورلوڊ ٿيل آهي.

اهي سڀ عمل ڇا جي انتظار ۾ آهن؟ واضح جواب پروسيسر آهي. پر جواب مڪمل طور تي درست ناهي، ڇاڪاڻ ته ڪڏهن ڪڏهن پروسيسر مفت آهي، پر LA پيماني تي بند ٿي ويندو آهي. ياد رکو ڪيئن NFS بند ٿئي ٿو ۽ ڪيئن LA وڌي ٿو. ساڳيو ئي ٿي سگهي ٿو ڊسڪ ۽ ٻين ان پٽ/آئوٽ پٽ ڊوائيسز سان. پر حقيقت ۾، عمل ڪنهن به تالا جي آخر تائين انتظار ڪري سگهن ٿا، يا ته جسماني، هڪ I/O ڊوائيس سان لاڳاپيل، يا منطقي، جهڙوڪ ميوٽڪس. هن ۾ هارڊويئر جي سطح تي لاڪنگ پڻ شامل آهي (ڊسڪ مان ساڳيو جواب)، يا منطق (نام نهاد لاڪنگ پرائمري، جنهن ۾ ادارن جو هڪ گروپ شامل آهي، ميوٽيڪس adaptive ۽ اسپين، سيمفورس، حالت متغير، rw لاڪ، ipc لاڪ ...).

LA جي هڪ ٻي خاصيت اها آهي ته اهو هڪ آپريٽنگ سسٽم جي اوسط طور سمجهيو ويندو آهي. مثال طور، 100 پروسيس هڪ فائل لاءِ مقابلو ڪري رهيا آهن، ۽ پوءِ LA = 50. اهڙي وڏي قيمت ظاهر ٿئي ٿي ته آپريٽنگ سسٽم خراب آهي. پر ٻين ڪڙي لکيل ڪوڊ لاء، اهو هڪ عام حالت ٿي سگهي ٿو، ان حقيقت جي باوجود ته اهو صرف خراب آهي، ۽ آپريٽنگ سسٽم ۾ ٻيا عمل متاثر نه ٿيندا آهن.

انهي اوسط جي ڪري (۽ گهٽ ۾ گهٽ هڪ منٽ ۾)، LA اشاري جي ذريعي ڪنهن به شيء کي طئي ڪرڻ سڀ کان وڌيڪ ثواب وارو ڪم نه آهي، خاص ڪيسن ۾ تمام غير يقيني نتيجن سان. جيڪڏهن توهان ان کي ڳولڻ جي ڪوشش ڪندا، توهان کي معلوم ٿيندو ته وڪيپيڊيا تي آرٽيڪل ۽ ٻين موجود وسيلن تي عمل جي تمام گهڻي وضاحت کان سواء، صرف آسان ڪيسن جي وضاحت ڪن ٿا. مان هر ڪنهن کي موڪليان ٿو جيڪو دلچسپي رکي ٿو، ٻيهر، هتي برينڊن گريگ ڏانهن  - ھيٺ ڏنل لنڪ تي عمل ڪريو. جيڪو انگريزي ڳالهائڻ ۾ تمام سست آهي - LA بابت سندس مشهور مضمون جو ترجمو.

3. خاص اثرات

هاڻي اچو ته چوري جي مکيه ڪيسن تي نظر رکون جيڪي اسان سامهون آيا. مان توهان کي ٻڌايان ٿو ته اهي مٿين سڀني کان ڪيئن پيروي ڪندا آهن ۽ انهن جو تعلق هائپرائزر تي اشارن سان ڪيئن آهي.

ريسائيڪلنگ. آسان ۽ سڀ کان وڌيڪ عام: هائپرائزر ٻيهر استعمال ڪيو ويو آهي. درحقيقت، ڪيتريون ئي هلندڙ مجازي مشينون آهن، انهن جي اندر اعلي پروسيسر واپرائڻ، تمام گهڻو مقابلو، LA استعمال 1 کان وڌيڪ آهي (پروسيسر جي سلسلي ذريعي عام). سڀني ورچوئل مشينن جي اندر هر شيءِ سست ٿي وڃي ٿي. هائپرائزر مان منتقل ٿيل چوري پڻ وڌي رهي آهي، اهو ضروري آهي ته لوڊ کي ٻيهر ورهايو وڃي يا ڪنهن کي بند ڪيو وڃي. عام طور تي، هر شيء منطقي ۽ سمجھڻ وارو آهي.

Paravirtualization بمقابله اڪيلو مثال. هائپر وائيزر تي صرف هڪ ورچوئل مشين آهي؛ اهو ان جو هڪ ننڍڙو حصو استعمال ڪري ٿو، پر هڪ وڏو I/O لوڊ پيدا ڪري ٿو، مثال طور ڊسڪ تي. ۽ ڪنهن هنڌ کان هڪ ننڍڙي چوري ان ۾ ظاهر ٿئي ٿي، 10٪ تائين (جيئن ڪيترن ئي تجربن مان ڏيکاريل آهي).

ڪيس دلچسپ آهي. چوري هتي صحيح طور تي ظاهر ٿئي ٿي ڇاڪاڻ ته paravirtualized ڊرائيور جي سطح تي بلاڪ ڪرڻ جي ڪري. هڪ مداخلت مجازي مشين جي اندر ٺاهي وئي آهي، ڊرائيور طرفان پروسيس ڪيو ويو آهي ۽ هائپرائزر ڏانهن موڪليو ويو آهي. هائپر وائيزر تي مداخلت واري هينڊلنگ جي ڪري، ورچوئل مشين لاءِ اها هڪ موڪليل درخواست وانگر لڳي ٿي، اهو عمل لاءِ تيار آهي ۽ پروسيسر جي انتظار ۾ آهي، پر ان کي پروسيسر جو وقت نه ڏنو ويو آهي. مجازي ڇوڪري سمجهي ٿي ته هن وقت چوري ٿي وئي آهي.

اهو ان وقت ٿئي ٿو جڏهن بفر موڪليو ويو آهي، اهو هائپر وائزر جي ڪنيل اسپيس ۾ وڃي ٿو، ۽ اسان ان جو انتظار ڪرڻ شروع ڪريون ٿا. جيتوڻيڪ، مجازي مشين جي نقطي نظر کان، هن کي فوري طور تي واپس اچڻ گهرجي. تنهن ڪري، چوري جي حساب ڪتاب جي الگورتھم جي مطابق، هن وقت کي چوري سمجهيو ويندو آهي. گهڻو ڪري، هن صورتحال ۾ ٻيون ميکانيزم ٿي سگهي ٿو (مثال طور، ڪجهه ٻين سي ايس ڪالن کي پروسيسنگ)، پر انهن کي گهڻو مختلف نه هجڻ گهرجي.

شيڊيولر بمقابله انتهائي لوڊ ٿيل ورچوئل مشين. جڏهن هڪ مجازي مشين ٻين کان وڌيڪ چوري کان متاثر ٿئي ٿي، اهو شيڊولر جي ڪري آهي. جيترو وڌيڪ هڪ پروسيس پروسيسر کي لوڊ ڪري ٿو، جلدي شيڊولر ان کي ختم ڪري ڇڏيندو ته جيئن ٻيا به ڪم ڪري سگهن. جيڪڏهن مجازي مشين ٿورو استعمال ڪري ٿي، اهو مشڪل سان چوري ڏسندي: ان جي عمل ايمانداري سان ويٺي ۽ انتظار ڪيو، اسان کي ان کي وڌيڪ وقت ڏيڻ جي ضرورت آهي. جيڪڏهن هڪ مجازي مشين پنهنجي سڀني ڪور تي وڌ ۾ وڌ لوڊ پيدا ڪري ٿي، اهو اڪثر ڪري پروسيسر مان ڪڍيو ويندو آهي ۽ اهي ڪوشش ڪندا آهن ته ان کي گهڻو وقت نه ڏيو.

اهو اڃا به خراب آهي جڏهن ورچوئل مشين اندر عمل وڌيڪ پروسيسر حاصل ڪرڻ جي ڪوشش ڪندا آهن ڇاڪاڻ ته اهي ڊيٽا پروسيسنگ سان مقابلو نٿا ڪري سگهن. پوءِ هائپر ويزر تي آپريٽنگ سسٽم، ايمانداري اصلاح جي ڪري، گهٽ ۽ گهٽ پروسيسر وقت فراهم ڪندو. اهو عمل برفاني طوفان وانگر ٿئي ٿو، ۽ چوري ڪري آسمان ڏانهن ٽپو ڏئي ٿو، جيتوڻيڪ ٻيون مجازي مشينون شايد شايد ان کي نوٽيس ڪري سگھن ٿيون. ۽ وڌيڪ ڪور، خراب متاثر مشين. مختصر ۾، تمام گهڻي لوڊ ٿيل ورچوئل مشينون ڪيترن ئي ڪور سان تمام گهڻو متاثر ٿين ٿيون.

گھٽ LA، پر اتي چوري آھي. جيڪڏهن LA لڳ ڀڳ 0,7 آهي (اهو آهي، هائپر وائيزر ان لوڊ ٿيڻ لڳي ٿو)، پر چوري انفرادي ورچوئل مشينن جي اندر ڏٺو ويو آهي:

  • paravirtualization سان اختيار اڳ ۾ ئي مٿي بيان ڪيو ويو آهي. ورچوئل مشين ميٽرڪ حاصل ڪري سگھي ٿي چوري جو اشارو ڪندي، جيتوڻيڪ هائپرائزر ٺيڪ آهي. اسان جي تجربن جي نتيجن موجب، هي چوري اختيار 10٪ کان وڌيڪ نه آهي ۽ مجازي مشين جي اندر ايپليڪيشنن جي ڪارڪردگي تي خاص اثر نه هجڻ گهرجي.
  • LA پيٽرولر غلط حساب ڪيو ويو آھي. وڌيڪ واضح طور تي، هر مخصوص وقت تي اهو صحيح طور تي ڳڻپيو ويو آهي، پر جڏهن هڪ منٽ کان مٿي ڪيو وڃي ته اهو گهٽجي ويو آهي. مثال طور، جيڪڏهن هڪ ورچوئل مشين في ٽيون هائيپروائزر پنهنجي سڀني پروسيسرز کي اڌ منٽ لاءِ استعمال ڪري ٿي، ته پوءِ هائپر وائزر تي LA في منٽ هوندو 0,15؛ چار اهڙيون مجازي مشينون هڪ ئي وقت ڪم ڪنديون 0,6. ۽ حقيقت اها آهي ته انهن مان هر هڪ تي اڌ منٽ لاء 25٪ تي هڪ جهنگلي چوري هئي LA اشاري جي مطابق هاڻي ٻاهر نه ٿو ڪڍي سگهجي.
  • ٻيهر، شيڊولر جي ڪري جنهن فيصلو ڪيو ته ڪو ماڻهو تمام گهڻو کائي رهيو هو ۽ ڪنهن کي انتظار ڪرڻ ڏيو. ساڳئي وقت ۾، مان حوالن کي تبديل ڪندس، مداخلت کي سنڀاليندو ۽ ٻين اهم سسٽم شين جو خيال رکندو. نتيجي طور، ڪجھ مجازي مشينون ڪو به مسئلو نه ڏسندا آھن، جڏھن ته ٻيا سنگين ڪارڪردگي جي خرابي جو تجربو ڪندا آھن.

4. ٻيا تحريف

هڪ ورچوئل مشين تي پروسيسر جي وقت جي منصفانه واپسي کي خراب ڪرڻ لاءِ هڪ لک وڌيڪ سبب آهن. مثال طور، hyperthreading ۽ NUMA حسابن ۾ مشڪلاتن کي متعارف ڪرايو. اهي مڪمل طور تي عمل کي انجام ڏيڻ لاء ڪنييل جي چونڊ کي پريشان ڪن ٿا، ڇاڪاڻ ته شيڊولر استعمال ڪري ٿو ڪوفيفينٽس - وزن، جيڪو حساب کي تبديل ڪرڻ کان به وڌيڪ ڏکيو بڻائي ٿو.

ٽيڪنالاجيز جي ڪري خرابيون آهن جهڙوڪ ٽربو بوسٽ يا، ان جي ابتڙ، توانائي جي بچت واري موڊ، جيڪا، جڏهن استعمال جي حساب سان، مصنوعي طور تي وڌائي يا گھٽائي سگھي ٿي تعدد کي يا ان کان سواء سرور تي وقت جي سلائس. ٽربو بوسٽ کي چالو ڪرڻ هڪ پروسيسر ٿريڊ جي ڪارڪردگي کي گھٽائي ٿو ڇاڪاڻ ته ٻئي جي ڪارڪردگي ۾ واڌ جي ڪري. هن وقت، موجوده پروسيسر جي تعدد بابت معلومات مجازي مشين ڏانهن منتقل نه ڪئي وئي آهي، ۽ اهو يقين آهي ته ڪو ماڻهو پنهنجو وقت چوري ڪري رهيو آهي (مثال طور، اهو 2 GHz جي درخواست ڪئي، پر اڌ حاصل ڪيو).

عام طور تي، تحريف جا ڪيترائي سبب ٿي سگهن ٿا. توھان ھڪڙي خاص سسٽم تي ڪجھ ٻيو ڳولي سگھو ٿا. اھو بھتر آھي ته انھن ڪتابن سان شروع ڪريان جن لاءِ مون مٿي لنڪ ڏنا آھن، ۽ انگ اکر حاصل ڪري hypervisor کان استعمال ڪندي يوٽيلٽيز جهڙوڪ perf، sysdig، systemtap، جن مان. درجن.

5. نتيجو

  1. چوري جي ڪجهه مقدار paravirtualization سبب ٿي سگهي ٿي، ۽ ان کي عام سمجهي سگهجي ٿو. اهي انٽرنيٽ تي لکن ٿا ته هي قيمت 5-10٪ ٿي سگهي ٿو. مجازي مشين جي اندر ايپليڪيشنن تي منحصر آهي ۽ لوڊ تي اهو پنهنجي جسماني ڊوائيسز تي رکي ٿو. هتي اهو ڌيان ڏيڻ ضروري آهي ته ايپليڪيشنون ڪيئن محسوس ڪن ٿيون مجازي مشينن اندر.
  2. هائپر وائزر تي لوڊ جو تناسب ۽ ورچوئل مشين اندر چوري هميشه واضح طور تي لاڳاپيل نه هوندا آهن؛ چوري جا ٻئي اندازا مختلف لوڊن هيٺ مخصوص حالتن ۾ غلط ٿي سگهن ٿا.
  3. شيڊولر وٽ عملن جي باري ۾ خراب رويو آهي جيڪو گهڻو پڇي ٿو. هو انهن کي گهٽ ڏيڻ جي ڪوشش ڪندو آهي جيڪي وڌيڪ گهرندا آهن. وڏيون مجازي مشينون خراب آهن.
  4. ٿورڙي چوري عام ٿي سگهي ٿي جيتوڻيڪ paravirtualization کان سواءِ (ورچوئل مشين جي اندر جي لوڊ کي مدنظر رکندي، پاڙيسري جي لوڊ جي خاصيتن، موضوعن تي لوڊ ورهائڻ ۽ ٻيا عنصر).
  5. جيڪڏهن توهان هڪ مخصوص سسٽم ۾ چوري جو اندازو لڳائڻ چاهيو ٿا، توهان کي مختلف اختيارن کي ڳولڻو پوندو، ميٽرڪ گڏ ڪرڻ، انهن کي احتياط سان تجزيو ڪرڻ ۽ انهي جي باري ۾ سوچڻو پوندو ته لوڊ کي هڪجهڙائي سان ڪيئن ورهايو وڃي. ڪنهن به صورت ۾ انحراف ممڪن آهي، جنهن جي تجرباتي طور تي تصديق ٿيڻ گهرجي يا ڪنيل ڊيبگر ۾ ڏٺو وڃي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو