پیچ کا ایک سیٹ شائع کیا گیا ہے جو لینکس کرنل کی تعمیر کو 50-80٪ تک تیز کرتا ہے۔

Ingo Molnar، ایک معروف لینکس کرنل ڈویلپر اور CFS (مکمل طور پر منصفانہ شیڈیولر) ٹاسک شیڈیولر کے مصنف، نے لینکس کرنل ڈویلپر میلنگ لسٹ پر گفت و شنید کی تجویز پیش کی جو کہ دانا کے ذرائع میں موجود تمام فائلوں میں سے نصف سے زیادہ کو متاثر کرتی ہے۔ سیٹنگز کے لحاظ سے مکمل کرنل کی دوبارہ تعمیر کی رفتار میں 50-80% اضافہ فراہم کرتا ہے۔ لاگو کردہ اصلاح قابل ذکر ہے کہ یہ کرنل کی ترقی کی تاریخ میں تبدیلیوں کے سب سے بڑے سیٹ کے اضافے کے ساتھ منسلک ہے - 2297 پیچ ایک ساتھ شامل کرنے کے لیے تجویز کیے گئے تھے، 25 ہزار سے زیادہ فائلوں کو تبدیل کیا گیا تھا (10 ہزار ہیڈر فائلیں "شامل ہیں۔ /" اور "arch/*/include/"ڈائریکٹریز" اور سورس ٹیکسٹس کے ساتھ 15 ہزار فائلیں)۔

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

کی گئی تبدیلیوں میں سے: اعلیٰ سطح کی ہیڈر فائلوں کو ایک دوسرے سے الگ کرنا، ہیڈر فائلوں کو جوڑنے والے ان لائن فنکشنز کو ختم کرنا، اقسام اور APIs کے لیے ہیڈر فائلوں کو الگ کرنا، ہیڈر فائلوں کی علیحدہ اسمبلی کو یقینی بنانا (تقریباً 80 فائلوں میں بالواسطہ انحصار ہوتا ہے جو اسمبلی میں مداخلت کرتی ہیں، جس کے ذریعے ظاہر کیا جاتا ہے۔ دیگر ہیڈر فائلز)، ".h" اور ".c" فائلوں میں انحصار کا خودکار اضافہ، ہیڈر فائلوں کی مرحلہ وار اصلاح، "CONFIG_KALLSYMS_FAST=y" موڈ کا استعمال، C فائلوں کا اسمبلی بلاکس میں منتخب کنسولیڈیشن آبجیکٹ فائلوں کی تعداد کو کم کریں۔

نتیجے کے طور پر، کیے گئے کام نے پوسٹ پری پروسیسنگ مرحلے پر کارروائی کی گئی ہیڈر فائلوں کے سائز کو 1-2 آرڈرز کی شدت سے کم کرنا ممکن بنایا۔ مثال کے طور پر، اصلاح سے پہلے، ہیڈر فائل "linux/gfp.h" استعمال کرنے کے نتیجے میں کوڈ کی 13543 لائنوں کا اضافہ اور 303 منحصر ہیڈر فائلوں کو شامل کیا گیا، اور اصلاح کے بعد سائز کو کم کر کے 181 لائنوں اور 26 منحصر فائلوں تک کر دیا گیا۔ یا ایک اور مثال: فائل "kernel/pid.c" کو بغیر کسی پیچ کے پری پروسیس کرتے وقت، کوڈ کی 94 ہزار لائنیں شامل ہوتی ہیں، جن میں سے زیادہ تر pid.c میں استعمال نہیں ہوتی ہیں۔ ہیڈر فائلوں کو الگ کرنے سے پروسیس شدہ کوڈ کی مقدار کو تین گنا کم کرنا ممکن ہوا، جس سے پروسیس شدہ لائنوں کی تعداد 36 ہزار تک کم ہو گئی۔

جب ٹیسٹ سسٹم پر "make -j96 vmlinux" کمانڈ کے ساتھ کرنل کو مکمل طور پر دوبارہ بنایا گیا، تو پیچ کے اطلاق نے v5.16-rc7 برانچ کے تعمیراتی وقت میں 231.34 سے 129.97 سیکنڈ تک کمی ظاہر کی (15.5 سے 27.7 بلڈز تک) فی گھنٹہ)، اور اسمبلیوں کے دوران CPU کور استعمال کرنے کی کارکردگی میں بھی اضافہ ہوا۔ بڑھتی ہوئی تعمیر کے ساتھ، اصلاح کا اثر اور بھی نمایاں ہوتا ہے - ہیڈر فائلوں میں تبدیلیاں کرنے کے بعد کرنل کو دوبارہ بنانے کا وقت نمایاں طور پر کم ہو گیا ہے (ہیڈر فائل کی تبدیلی کے لحاظ سے 112% سے 173% تک)۔ اصلاح فی الحال صرف ARM64، MIPS، Sparc اور x86 (32- اور 64-bit) فن تعمیر کے لیے دستیاب ہے۔

ماخذ: opennet.ru

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