فیس بوک وصله هایی را منتشر کرد که کنترل کننده حافظه Slab را در Linux بهبود می بخشد

رومان گوشچین (مهندس نرم افزار فیس بوک) ثبت در لیست توسعه هسته لینوکس ، مجموعه ای از وصله ها به برنامه نقشه برداری حافظه کنترل کننده اسلب (یک کنترل کننده حافظه).

کنترل کننده جدید قابل توجه است با انتقال حساب دال از سطح صفحه حافظه به سطح جسم هسته ، امکان به اشتراک گذاری صفحات دال در گروه های مختلف c ، به جای اختصاص جداگانه حافظه های دال برای هر گروه c.

رومان آنچه را "نقص بسیار جدی" در کنترل کننده حافظه اسلب موجود می داند و این روزها منجر به کم استفاده شدن در گروههای مختلف می شود ، پیدا کرد.

وی افزود: "دلیل واقعی اینكه طرح موجود منجر به استفاده كم از دال می شود ساده است: صفحات دال منحصراً توسط یك حافظه استفاده می شود.

اگر فقط چند تخصیص از یک اندازه مشخص توسط cgroup انجام شده باشد ، یا اگر بعد از حذف cgroup برخی از اشیا active فعال باقی مانده باشد ، یا cgroup شامل یک برنامه تک رشته ای است که به سختی هر شی objects هسته ای را اختصاص می دهد ، اما هر بار در CPU جدید: در همه این موارد ، استفاده از دال در نتیجه بسیار کم است.

اگر حسابداری kmem غیرفعال باشد ، هسته می تواند از فضای آزاد در صفحات اسلب برای سایر تخصیص ها استفاده کند. «

کنترل کننده حافظه Slab پیشنهادی توسط Romano Gushchin در سال گذشته کاملا امیدوار کننده بود کارایی را افزایش می دهد استفاده از دال ، اندازه حافظه استفاده شده را کاهش دهید برای اسلب 30-45٪ و به طور قابل توجهی مصرف حافظه هسته را کاهش می دهد.

همچنین وصله های اجرا شده نشان داده شده است که فیس بوک در حال حاضر از کد تولید شده در سرورهای خود استفاده می کند و بود پس انداز 650-700 مگابایت پوند برای سرورهای وب جلویی، ذخیره پایگاه داده و سرورهای DNS ، از جمله جوایز دیگر.

با کاهش تعداد اسلبهای غیر متحرک ، تأثیر مثبتی در زمینه کاهش تکه تکه شدن حافظه نیز مشاهده می شود. کنترل کننده حافظه جدید کد برای اسلب حسابداری را به طور قابل توجهی ساده می کند و به ایجاد الگوریتم های پیچیده برای ایجاد پویا و حذف حافظه نهان برای هر گروه c نیاز ندارد.

همه cgroups برای حافظه در پیاده سازی جدید از مجموعه مشترک حافظه پنهان slab استفاده می کنند و طول عمر cache slab دیگر با طول عمر محدودیت های حافظه تنظیم شده از cgroup گره خورده است.

حسابداری دقیق تر منابع موجود در کنترل کننده اسلب جدید باید CPU را بیشتر بارگیری کند ، اما در عمل اختلافات قابل اغماض بود.

به ویژه درایور اسلب جدید برای چندین ماه در سرورهای فیس بوک مورد استفاده قرار گرفته است در عملیاتی که انواع مختلف بار را تحمل می کند و تاکنون هیچ رگرسیون قابل توجهی مشاهده نشده است.

پچ شامل چند قسمت نیمه مستقل است که همچنین می توانند کاربرد آنها را خارج از کنترل کننده حافظه slab پیدا کنند:

  • Subpage Load API ، که می تواند در آینده برای شمارش اشیا other دیگری که اندازه یک صفحه نیستند استفاده شود ، به عنوان مثال تخصیص percpu
  • API mem_cgroup_ptr ، جایی که نشانگرها به یک memcg محاسبه می شوند ، می تواند برای بازآفرینی کارآمد سایر اشیا، ، به عنوان مثال pagecache ، دوباره مورد استفاده قرار گیرد.

در همان زمان، کاهش قابل توجهی در مصرف حافظه وجود دارد- در برخی از میزبان ها می توانستید حداکثر 1 گیگابایت حافظه ذخیره کنید ، اما این شاخص است تا حد زیادی به ماهیت بار بستگی دارد ، اندازه کل RAM ، مقدار CPU و ویژگی های کار با حافظه.

به جای ایجاد یک مجموعه جداگانه از kmem_caches برای هر گروه حافظه ، از دو مجموعه جهانی استفاده می شود: مجموعه ریشه برای محاسبه نشده و گروه ریشه برای cgroup گروه و مجموعه دوم برای همه کارهای دیگر. این اجازه می دهد تا مدیریت مادام العمر kmem_cache را ساده کنید.

سرانجام ، اگر شما می خواهید مجموعه جدید 19 وصله را بدانید ، می توانید آن را در لیست پیدا کنید نامه هسته.


محتوای مقاله به اصول ما پیوست اخلاق تحریریه. برای گزارش یک خطا کلیک کنید اینجا.

اولین کسی باشید که نظر

نظر خود را بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند با *

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.