
بر اساس گزارش فورونیکس، مجموعهای از بهبودهای بخش memblock برای هسته لینوکس ۷.۴ ارسال شده است. مهمترین تغییر، بهینهسازی عملکرد در فایل mm/memblock.c است؛ همان تخصیصدهنده حافظه فیزیکی اولیه (Early Boot-Time Physical Memory Allocator) که پیش از راهاندازی تخصیصدهنده صفحه کامل (Full Page Allocator) در هنگام بوت استفاده میشود.
جستوجوی دودویی جای جستوجوی خطی را میگیرد
مهندس گوگل، تارون ساهو (Tarun Sahu)، متوجه شد کد mm/memblock.c برای یافتن نواحی نامزد، از جستوجوی خطی (Linear Search) استفاده میکند و نه جستوجوی دودویی (Binary Search). این بهینهسازی در توابع memblock_add_range() و memblock_isolate_range() اعمال شده است.
تأثیر چشمگیر در شرایط پراکندگی شدید حافظه
هنگامی که حافظه با پراکندگی شدید (Heavy Fragmentation) روبهروست—مثلاً هنگام استفاده از قابلیت انتقال هسته (Kernel Handover یا KHO) که هماهنگکننده بهروزرسانی زنده (Live Update Orchestrator) و مجموعههای مرتبط از آن بهره میبرند—و تعداد زیادی فولیوی ناپیوسته (Disjoint Folios) وجود دارد، فرایند پیمایش با جستوجوی خطی زمان قابلتوجهی میگیرد.
کاهش زمان بازیابی حافظه KHO
یادداشت این وصله (Patch) نشان میدهد که استفاده از جستوجوی دودویی، پیچیدگی بدترین حالت (Worst-Case Complexity) را به O(N log N) کاهش میدهد—و برای افزودنهای متوالی به O(N) میرساند—و زمان بازیابی حافظه KHO را از حدود ۲۶۸ ثانیه به حدود ۵۰ میلیثانیه میکاهد.
این بهینهسازی بهعنوان بخشی از درخواست ادغام (Pull Request) بخش memblock برای هسته لینوکس ۷.۴ ارائه شده است. طبق گزارش، این تغییر صرفاً تخصیصدهنده حافظه در مراحل اولیه بوت را تحت تأثیر قرار میدهد.