انقلاب سرعت در لینوکس؛ بوت شدن سیستم از ۴ دقیقه رسید به نیم ثانیه!

بی تعارف بگوییم؛ تا حالا شده سیستمتان موقع بالا آمدن مثل لاکپشت کار کند و کلافهتان کند؟ خبر خوب اینکه دنیای متنباز قرار است دوباره ما را شگفتزده کند! تازهus ترین آپدیت برای Kernel لینوکس نشان میدهد که بخش مدیریت حافظه در همان لحظات اولیه بوت شدن سیستم، یک آپدیت خفن گرفته که سرعتش را از حدود ۲۶۸ ثانیه رسانده به چیزی حدود ۵۰ میلیثانیه! یعنی فک کنید کاری که نزدیک ۴ دقیقه طول میکشید، حالا در یک چشم به هم زدن انجام میشود.
این شاهکار عجیب و غریب به لطف تلاشهای یک مهندس گوگل به نام Tarun Sahu اتفاق افتاده است. ماجرا از این قرار است که سیستم اختصاص دادن حافظه فیزیکی در روزهای اول بوت سیستم (یعنی همان زمانی که هنوز سیستم اصلی صفحه بندی حافظه فعال نشده) یک نقص کوچک داشت و برای پیدا کردن فضاهای خالی، از یک روش جستجوی خطی یا همان linear search استفاده میکرد؛ روشی که مثل این است که بخواهید یک کتاب را صفحه به صفحه بگردید تا نام یک نفر را پیدا کنید!
ماجرا از چه قرار است و چرا اینقدر کند بود؟
وقتی سیستم زیر فشار کارهای سنگین باشد و اصطلاحاً fragmentation یا تکهتکه شدن حافظه بالا برود (مثلاً وقتی از قابلیت خفن Kernel Handover یا همان KHO استفاده میکنید که توی بهروزرسانیهای بدون ریاستارت و Live Update کاربرد دارد)، جستجوی خطی ساده کم میآورد. این یعنی سیستم مجبور بود تکههای پخش و پلا شده حافظه را یکییکی و با حوصله زیاد اسکن کند که زمان بسیار زیادی میبرد.
این مهندس گوگل متوجه شد اگر این جستجوی کند را با یک binary search یا همان جستجوی دودویی جایگزین کنند، همهچیز زیر و رو میشود. با این تغییر هوشمندانه، پیچیدگی بدترین حالت ممکن از حالت قبلی به شدت کاهش پیدا کرد.
“استفاده از binary search باعث میشود پیچیدگی سیستم در بدترین حالت به شدت افت کند و زمان بازیابی حافظه KHO از حدود ۲۶۸ ثانیه به چیزی در حدود ۵۰ میلیثانیه کاهش یابد.”
این بهینهسازی خفن حالا به عنوان بخشی از درخواست ادغام یا همان pull request جدید برای Kernel لینوکس ارسال شده و به زودی همهی ما از لذت یک بوت فوقالعاده سریع بهرهمند میشویم. این یعنی لینوکس روز به روز دارد سریعتر، بهینهتر و بیرقیبتر میشود.


