ফাস্ট কার্নেল হেডার, প্যাচের একটি সেট যা কার্নেল সংকলনের গতি 50-80% করে

ইঙ্গো মোলনার, একটি সুপরিচিত লিনাক্স কার্নেল বিকাশকারী এবং CFS টাস্ক শিডিউলারের লেখক লিনাক্স কার্নেল ডেভেলপমেন্ট মেইলিং লিস্ট আলোচনার জন্য প্রস্তাবিত বেশ কয়েকটি প্যাচ, যা কার্নেলের উৎসের অর্ধেকেরও বেশি ফাইলকে প্রভাবিত করে এবং কনফিগারেশনের উপর নির্ভর করে 50 -80% এর সামগ্রিক কার্নেল পুনর্নির্মাণের গতি বৃদ্ধি প্রদান করে।

অপ্টিমাইজেশান বাস্তবায়িত উল্লেখযোগ্য যে এটি সবচেয়ে বড় পরিবর্তনের সংযোজনের সাথে যুক্ত কার্নেল ডেভেলপমেন্টের ইতিহাসে: তারা 2297 হাজারেরও বেশি ফাইল পরিবর্তন করে একসাথে 25টি প্যাচ অন্তর্ভুক্ত করার সিদ্ধান্ত নিয়েছে।

কর্মক্ষমতা লাভ হেডার ফাইল হ্যান্ডলিং পদ্ধতি পরিবর্তন করে অর্জন করা হয়. এটি উল্লেখ করা উচিত যে কার্নেল বিকাশের ত্রিশ বছরের সময়, ফাইলগুলির মধ্যে প্রচুর সংখ্যক ক্রস-নির্ভরতার উপস্থিতির কারণে হেডার ফাইলগুলির অবস্থা একটি খারাপ আকার ধারণ করেছে।

শিরোনাম ফাইলের পুনর্গঠন এক বছর ধরে এবং অনুক্রম এবং নির্ভরতাগুলির একটি উল্লেখযোগ্য পুনঃডিজাইন প্রয়োজন. পুনর্গঠনের সময়, বিভিন্ন কার্নেল সাবসিস্টেমের জন্য টাইপ সংজ্ঞা এবং API আলাদা করার জন্য কাজ করা হয়েছিল।

আমি আমার নতুন "ফাস্ট কার্নেল হেডার" প্রকল্পের প্রথম সর্বজনীন সংস্করণটি ঘোষণা করতে পেরে আনন্দিত যেটি আমি 2020 সালের শেষ থেকে কাজ করছি, যা লিনাক্স কার্নেল শিরোলেখ শ্রেণিবিন্যাসের এবং শিরোলেখ নির্ভরতার একটি বিস্তৃত পুনর্ব্যবহার, যার দ্বিগুণ লক্ষ্য রয়েছে:

- কার্নেল তৈরির গতি বাড়ান (পরম এবং ক্রমবর্ধমান বিল্ড সময় উভয়ই)

- একে অপরের থেকে সাবসিস্টেম এবং সংজ্ঞা API এর ডিকপলিং টাইপ করুন

বেশিরভাগ কার্নেল ডেভেলপাররা জানেন, লিনাক্স কার্নেলে প্রায় ~ 10,000 প্রধান .h শিরোনাম রয়েছে, অন্তর্ভুক্ত / এবং arch / * / অন্তর্ভুক্ত / অনুক্রমের মধ্যে রয়েছে। গত 30+ বছরে, তারা ক্রস-নির্ভরতার একটি জটিল এবং বেদনাদায়ক সেটে বিকশিত হয়েছে যেটিকে আমরা স্নেহের সাথে 'নির্ভরতা নরক' বলি।

করা পরিবর্তনগুলির মধ্যে রয়েছে: একে অপরের থেকে উচ্চ-স্তরের হেডার ফাইলের বিচ্ছেদ, হেডার ফাইল লিঙ্কিং ইনলাইন ফাংশন বর্জন, প্রকার এবং API-এর জন্য হেডার ফাইলের ম্যাপিং, হেডার ফাইলগুলির একটি পৃথক সেটের বিধান (প্রায় 80টি ফাইলের পরোক্ষ নির্ভরতা ছিল যা সমাবেশে হস্তক্ষেপ করে, অন্যান্য ফাইল হেডার ফাইলগুলির মাধ্যমে প্রকাশ করা হয়), নির্ভরতাগুলির স্বয়ংক্রিয় সংযোজন ".h" এবং ".c" ফাইল, হেডার ফাইলের ধাপে ধাপে অপ্টিমাইজেশান, "CONFIG_KALLSYMS_FAST = y" মোডের ব্যবহার, অবজেক্ট ফাইলের সংখ্যা কমানোর জন্য সি ফাইলের সমাবেশ ব্লকে নির্বাচনী একত্রীকরণ।

ফলস্বরূপ, প্রক্রিয়াকৃত শিরোনাম ফাইলের আকার কমাতে সম্পন্ন করা কাজপোস্ট-প্রিপ্রসেসিং পর্যায়ে 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 থেকে XNUMX বিল্ডের মধ্যে) হ্রাস দেখায় ঘন্টা) এবং বিল্ডের সময় CPU কোর ব্যবহারের দক্ষতা বৃদ্ধি করেছে।

একটি ক্রমবর্ধমান সংকলনের সাথে, অপ্টিমাইজেশান প্রভাবটি আরও বেশি লক্ষণীয়: হেডার ফাইলগুলিতে পরিবর্তন করার পরে কার্নেল পুনর্নির্মাণের সময় উল্লেখযোগ্যভাবে হ্রাস করা হয়েছে (পরিবর্তিত হেডার ফাইলের উপর নির্ভর করে 112% থেকে 173%)।

অপ্টিমাইজেশন বর্তমানে শুধুমাত্র ARM64, MIPS, Sparc, এবং x86 (32-bit এবং 64-bit) আর্কিটেকচারের জন্য উপলব্ধ।

সূক্ষ্মভাবে আপনি যদি এটি সম্পর্কে আরও জানতে আগ্রহী হন, আপনি বিশদে পরীক্ষা করতে পারেন নিম্নলিখিত লিঙ্ক.


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়বদ্ধ: মিগুয়েল অ্যাঞ্জেল গাটান
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।