گوگل نے M:N فلو ماڈل کے نفاذ کو کھولنا شروع کر دیا ہے۔

گوگل تجویز کیا لینکس کرنل میں شامل کرنے کے لیے پیچ کا پہلا سیٹ ان اجزاء کے نفاذ کے ساتھ جو M: N تھریڈنگ ماڈل کے کام کو یقینی بنانے کے لیے ضروری ہے۔ گوگل کا اقدام بند دروازوں کے پیچھے تیار کردہ API کے افتتاح سے متعلق ہے۔ تبدیل کرنا لینکس کرنل کے لیے، جو یوزر اسپیس میں لاگو ایک ملٹی تھریڈڈ سب سسٹم فراہم کرتا ہے جو M: N تھریڈنگ ماڈل استعمال کرتا ہے۔ سب سسٹم کا استعمال Google ایسے خدمات فراہم کرنے کے لیے کرتا ہے جن میں کم سے کم تاخیر کی ضرورت ہوتی ہے۔ دھاگوں کی تقسیم کا نظام الاوقات اور انتظام مکمل طور پر صارف کی جگہ پر کیا جاتا ہے، جو سسٹم کالز کے عمل کو کم سے کم کرکے سیاق و سباق کے سوئچز کی تعداد کو نمایاں طور پر کم کر سکتا ہے۔

اس سب سسٹم کے آپریشن کو یقینی بنانے کے لیے، SwitchTo API کو لینکس کرنل کی سطح پر لاگو کیا گیا تھا، جو تین بنیادی آپریشنز - انتظار، دوبارہ شروع اور تبادلہ (سوئچنگ) کی پیشکش کرتا ہے۔ دانا میں شامل کرنے کے لیے، ایک نئے FUTEX_SWAP آپریشن کے لیے ایک کوڈ تجویز کیا گیا ہے، اس کی تکمیل FUTEX_WAIT اور FUTEX_WAKE، اور ملٹی تھریڈڈ یوزر اسپیس لائبریریوں کی تعمیر کے لیے ایک فریم ورک فراہم کرتا ہے۔ FUTEX_SWAP کو RPC کی طرح کاموں کے درمیان پیغامات بھیجنے کے لیے بھی استعمال کیا جا سکتا ہے۔ مثال کے طور پر، فی الحال، کاموں کے درمیان پیغام کی منتقلی کے لیے، FUTEX_WAIT اور FUTEX_WAKE پر کم از کم چار کالز کی ضرورت ہے، جبکہ FUTEX_SWAP کا استعمال ایک آپریشن کو 5-10 گنا تیزی سے مکمل کرنے کی اجازت دے گا۔

گوگل نے M:N فلو ماڈل کے نفاذ کو کھولنا شروع کر دیا ہے۔

فی الحال، فلو ماڈل 1:1 اور N:1 بنیادی طور پر عملی طور پر استعمال ہوتے ہیں۔ 1:1 ماڈل میں استعمال ہوتا ہے۔ این پی ٹی ایل (پوسکس تھریڈز) اور لینکس تھریڈز، اور دانا کی سطح پر ایک دھاگے (عمل درآمد کے نظام الاوقات کی اکائی) سے صارف کی جگہ کے دھاگے کی براہ راست میپنگ کا مطلب ہے۔ N:1 ماڈل کو لاگو کیا گیا ہے۔ GNU Pth، صارف کی جگہ پر دھاگے کی شیڈولنگ لاتا ہے اور N یوزر اسپیس تھریڈز کو کرنل میں ایک ہی تھریڈ سے منسلک ہونے کی اجازت دیتا ہے، بغیر کرنل کو صارف کے تھریڈز کے بارے میں علم ہوتا ہے۔

1:1 ماڈل کا بنیادی نقصان کرنل اور یوزر اسپیس کے درمیان سیاق و سباق کی تبدیلی کا بڑا اوور ہیڈ ہے۔ N:1 ماڈل اس مسئلے کو حل کرتا ہے، لیکن ایک نیا بناتا ہے - چونکہ کرنل میں ایک دھاگہ عملدرآمد کے نظام الاوقات کی ایک ناقابل تقسیم اکائی ہے، اس لیے آپریٹنگ سسٹم کے کرنل میں ایک ہی دھاگے سے منسلک صارف کے دھاگے CPU کوروں میں پیمانے نہیں کر سکتے اور اس کے پابند ہو جاتے ہیں۔ ایک واحد CPU کور۔

M:N ماڈل ہائبرڈ ہے اور N یوزر اسپیس تھریڈز کو M کرنل تھریڈز میں نقشہ بنا کر مندرجہ بالا تمام نقصانات کو دور کرتا ہے، دونوں سیاق و سباق کے سوئچ اوور ہیڈ کو کم کرتے ہیں اور CPU کور میں اسکیلنگ کرتے ہیں۔ اس اختیار کی قیمت صارف کی جگہ میں تھریڈ شیڈیولر کے نفاذ کی بڑی پیچیدگی اور کرنل شیڈیولر کے ساتھ کارروائیوں کو مربوط کرنے کے لیے میکانزم کی ضرورت ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں