
مهندسان متا (Meta) در جریان بررسی تأخیرهای طولانی در برخی دیمنهای سیستمی روی ناوگان عظیم سرورهای خود، گلوگاههایی را در Kernfs شناسایی کردند؛ چارچوبی که برای ساخت فایلسیستمهای شبهای (pseudo file-systems) مانند sysfs و configfs در لینوکس استفاده میشود. این مشکلات اکنون با مجموعهای از وصلهها برای لینوکس ۷.۴ هدف قرار گرفتهاند.
۱۸ وصله برای رفع گلوگاههای Kernfs
شکیل بات (Shakeel Butt) از متا ۱۸ وصله (Patch) برای لینوکس ۷.۴ ارائه کرده است که کد Kernfs را بهبود میدهد. این تغییرات نحوه مدیریت قفلهای (Locks) مختلف در Kernfs را اصلاح میکند و در همین مسیر چند باگ (Bug) مرتبط را نیز برطرف میسازد.
به گفته منبع، بخشی از این کار پس از آن آغاز شد که رابطهای مرتبط با cgroup میتوانستند برای مدتهای طولانی در وضعیت انتظار باقی بمانند و دیمنهای سیستمی را دچار توقف چنددقیقهای کنند.
نتیجه چهار وصله کلیدی
چهار وصله از میان این ۱۸ وصله از اهمیت بیشتری برخوردارند. در سناریوی آزمایشی، چند رشته (Thread) همزمان روی یک ماشین مجازی با ۸ پردازنده (8-CPU VM) در حال پیمایش cgroupfs و sysfs بودند، در حالی که رشتهای دیگر مشغول تغییر cgroupها، تغییر نام netdevها و افزودن یا حذف دستگاهها بود.
بر اساس دادههای ارائهشده، رقابتهای خواندن (Read Contention) در kernfs_rwsem بهطور محسوسی کاهش یافت؛ در یکی از سنجهها این عدد از ۴۸,۵۹۳,۳۶۰ به ۱,۲۸۰,۲۸۰ رسید و در سنجهای دیگر از ۱,۷۴۴,۵۱۷ به ۴۲۹,۸۴۶ کاهش پیدا کرد. همچنین توان عملیاتی (Throughput) مسیر پیمایش خواننده در همان بار کاری بین ۳۵ تا ۵۳ درصد بهبود یافت.
اهمیت برای سیستمهای بزرگ
این بهبودها نشان میدهد که اصلاح قفلگذاری و مسیرهای دسترسی در Kernfs میتواند در محیطهای مقیاس بزرگ، که تعداد زیادی cgroup و دستگاه بهطور همزمان مدیریت میشوند، تأثیر عملی داشته باشد. جزئیات بیشتر درباره این تغییرات و مواردی که متا در استفاده واقعی با آن روبهرو شده، در درخواست کشش (Pull Request) مربوطه منتشر شده است.