شرکت اینتل اخیراً گزارش داده که با یک تغییر کوچک در کد هسته لینوکس، توانسته است بهبود عملکردی چشمگیر و غیرمنتظرهای، نزدیک به 3889 درصد، در برخی از تستها بهدست آورد. این موضوع اهمیت زیادی دارد، زیرا بهبود عملکردی در این حد با تنها یک خط کد نشاندهنده قدرت بالای تغییرات بهینهسازی در سیستمعامل است که میتواند تاثیرات گستردهای روی کاربردهای تخصصی و پیشرفته داشته باشد.
بنابر گزارشی که وبسایت Phoronix منتشر کرده، تنها یک بهینهسازی ساده و حذف یک خط کد در هسته لینوکس موجب میشود بتوان در بسیاری از فرایندهای پردازشی، بهبودی نزدیک به 40 برابری در سرعت اجرای عملیات حاصل نمود.
کد هسته لینوکس چیست؟
بهطور خلاصه، کد هسته لینوکس قلب تپنده سیستمعامل لینوکس است که وظایف اساسی مدیریت منابع سختافزاری و پشتیبانی از اجرای نرمافزارها را بر عهده دارد و در موفقیت و محبوبیت این سیستمعامل نقش حیاتی دارد.
کد هسته لینوکس یا “Linux Kernel Code” به بخشی از نرمافزارهای پایهای و اصلی سیستمعامل لینوکس اطلاق میشود که وظیفه مدیریت منابع سختافزاری و کنترل عملکردهای اساسی سیستم را بر عهده دارد. این کد بهعنوان هسته اصلی سیستمعامل، وظیفه برقراری ارتباط بین سختافزار و نرمافزارهای کاربردی را دارد و به گونهای طراحی شده که بتواند انواع مختلفی از دستگاهها و پلتفرمها، از سرورها و کامپیوترهای شخصی گرفته تا گوشیهای هوشمند و سیستمهای جاسازیشده (embedded systems)، را پشتیبانی کند.
ربات ویژه تست هسته لینوکس چگونه کار میکند؟
برای تست هسته لینوکس روی پردازندهها از یک ربات ویژه استفاده میشود که به تازگی اینتل گزارشی جالب در مورد بهینهسازی مرتبط با آن را منتشر کرده است. این ربات اتوماتیک وظیفه بررسی مداوم تغییرات و بهینهسازیهای اعمالشده در کد هسته لینوکس را بر عهده دارد و با انجام آزمایشهای مختلف، عملکرد این تغییرات را اندازهگیری میکند.
وجود چنین ابزاری به اینتل و توسعهدهندگان کمک میکند تا تغییرات مثبت یا منفی روی عملکرد سیستم را بهسرعت شناسایی کنند. بهطور کلی، ربات تست هسته لینوکس اینتل یک ابزار کلیدی برای پایش، تجزیه و تحلیل و بهینهسازی عملکرد لینوکس محسوب میشود که کمک میکند تا هسته لینوکس به شکلی پایدار و کارآمد برای کاربردهای متنوع بهبود یابد.
بهینهسازی انجام شده اینتل
تغییری که منجر به این بهبود شده، مربوط به بهینهسازی نحوه تخصیص حافظه موقت، (موسوم به THP) در برخی پردازشهای خاص است. این تغییر کوچک به کد امکان میدهد تا تنها در شرایط خاص و بهینه از حافظه پشتیبان بزرگتر استفاده کند، که موجب جلوگیری از پراکندگی دادهها و کاهش تداخلات پردازش در حافظه میشود. به این ترتیب، سیستم در برخی بارهای کاری خاص میتواند حافظه و پردازش را بهتر مدیریت کند و سرعت بالاتری را تجربه کند.
وبسایت منبع در مورد جزئیات این بهینهسازی میگوید:
اصلاحیهای که باعث این افزایش چشمگیر عملکرد شده، با عنوان “mm, mmap: limit THP alignment of anonymous mappings to PMD-aligned sizes” شناخته میشود. این وصله به طور خاص به رفع برخی کاهشهای عملکرد قبلی پرداخته و در شرایط ویژهای موجب افزایش عمده عملکرد شده است. پیام این وصله توضیح میدهد که از زمان ایجاد تغییر “mm: align larger anonymous mappings on THP boundaries” در هسته لینوکس، هر درخواست mmap() برای حافظه ناشناس که بدون اشاره به آدرس خاص و با اندازه حداقل برابر PMD_SIZE باشد، به گونهای تنظیم میشود که بتواند از صفحه THP استفاده کند.
با این حال، این تغییر منجر به کاهش عملکرد در برخی بارهای کاری شده است. طبق گزارشها، این کاهش عملکرد تا 600 درصد در برخی بنچمارکها مانند cactusBSSN بوده است. البته اینتل در حال کار است تا این مورد را نیز رفع کند و بهینگی ایجاد شده را حفظ نماید.
پیش از این، تغییراتی در نحوه تخصیص حافظه برای حافظههای موقت اعمال شده بود که در برخی موارد به کاهش عملکرد در برنامههایی با دسترسی زیاد به حافظه انجامید. این بهینهسازی جدید تلاش میکند که از پراکندگی دادهها جلوگیری کرده و عملکرد را در چنین شرایطی بهبود بخشد. بهعنوان مثال، در برخی از بنچمارکها، این پراکندگی منجر به کاهش سرعت تا 600 درصد شده بود، و هدف از این تغییرات کاهش یا رفع این مشکل بوده است.
بهینهسازی مذکور در دنیای واقعی چطور برداشت میشود؟
این بهینهسازی که اینتل در کد هسته لینوکس اعمال کرده است، میتواند تاثیرات مثبتی در دنیای واقعی، بهویژه برای بارهای کاری خاص و کاربردهای سنگین و حساس به کارایی داشته باشد. چند نمونه از تاثیرات احتمالی آن در دنیای واقعی میتواند منجر به بهبود کارایی در سرورها و دیتاسنترهای لینوکس، افزایش سرعت در برنامههای علمی و محاسباتی دادههای عطیم، کاهش زمان پاسخگویی و بهبود تجربه کاربری در همه برنامههای تحت لینوکس، بهبود عملکرد در دستگاههای Embedded و اینترنت اشیا بر پایه لینوکس و افزایش ثبات و اطمینان در سیستمهای صنعتی و کاربردی لینوکس شود.
این تغییر با تنها یک خط کد اعمال شده است و از آنجا که بخشی از کد اصلی هسته لینوکس محسوب میشود، در نسخههای آینده این هسته برای عموم در دسترس خواهد بود. اینتل قصد دارد این تغییر را با بنچمارکهای بیشتری آزمایش کند تا تاثیرات آن را در بارهای کاری مختلف بررسی کند و ببیند آیا در شرایط واقعی هم بهبودهای مشابهی بهدست میآید یا خیر.
بهطور کلی، این بهینهسازی میتواند در بسیاری از حوزهها از جمله مراکز داده، محاسبات علمی، دستگاههای IoT و سیستمهای حساس به کارایی در دنیای واقعی تاثیرات قابلتوجهی داشته باشد.
source