نسخه جدید اجرای ذخیره سازی را تثبیت می کند "
Extstore به شما امکان می دهد از درایوهای SSD/Flash برای افزایش اندازه کش استفاده کنید. همانند حافظه رم، حافظه فلش دائمی نیست و پس از راه اندازی مجدد تنظیم مجدد می شود. دامنه حالت جدید اطمینان از ذخیره کارآمد داده های بزرگ است. هنگام استفاده از "extstore"، کلیدها و ابرداده ها، مانند قبل، فقط در RAM ذخیره می شوند، اما داده های بزرگ مرتبط با کلیدها، که اندازه آنها از آستانه تعیین شده فراتر می رود، در حافظه خارجی ذخیره می شود و فقط اشاره گر در RAM باقی می ماند.
اگر کلید با داده های کوچک مرتبط باشد، Memcached طبق معمول کار می کند، داده ها را در حافظه نگه می دارد و به حافظه خارجی دسترسی ندارد. اگر مقدار زیادی حافظه آزاد وجود داشته باشد، میتوان اطلاعات مورد نیاز را بهطور کامل در حافظه پنهان RAM قرار داد (به عنوان مثال، میتوانید مشخص کنید که فقط اشیاء بزرگتر از 1024 بایت که به مدت 3600 ثانیه به آنها دسترسی نداشتهاند به Flash بازنشانی شوند. ).
پیاده سازی برای اطمینان از حداکثر کارایی و حداقل بار CPU، با هزینه ذخیره سازی (سطح بالای تکه تکه شدن) بهینه شده است. برای افزایش طول عمر درایوهای فلش، داده ها به صورت متوالی بافر شده و به ذخیره سازی منتقل می شوند. برای ذخیره وضعیت حافظه پنهان بین راه اندازی مجدد، می توانید از قابلیتی که در نسخه 1.5.18 ظاهر شد برای تخلیه حافظه پنهان در یک فایل استفاده کنید. در راهاندازی بعدی، میتوانید کش را از این فایل بازیابی کنید تا پیکهای بارگذاری روی پردازندههای محتوا به دلیل خالی بودن حافظه پنهان (حافظه پنهان بلافاصله «گرم» شود) حذف شود.
دومین تغییر مهم در Memcached 1.6، بازسازی کد ارتباطی شبکه بود که برای پردازش خودکار درخواستهای دستهای در یک تماس سیستمی منفرد سازگار است. پیش از این، هنگام ارسال چندین دستور GET در یک بسته TCP، memcached نتایج را با تماسهای سیستمی جداگانه ارسال میکرد. در Memcached 1.6، پاسخها جمعآوری میشوند و با ارسال یک تماس سیستمی بازگردانده میشوند. به عنوان یک نتیجه، در حال حاضر به طور متوسط 1.5 کلید در هر تماس سیستمی وجود دارد که در آزمایشات کاهش بار CPU را تا 25٪ و کاهش تاخیر تا چند درصد را نشان می دهد.
طراحی مجدد زیرسیستم شبکه همچنین امکان حرکت به تخصیص پویا از بافرها را در صورت نیاز به جای تخصیص استاتیکی بافرها فراهم کرد. این بهینه سازی باعث کاهش مصرف حافظه در هنگام انتظار برای دستورات جدید از طریق اتصال برقرار شده توسط کلاینت از 4.5 کیلوبایت به 400-500 بایت شد و همچنین امکان خلاص شدن از شر بسیاری از تماس ها به malloc، realloc و free را فراهم کرد که منجر به تکه تکه شدن غیر ضروری حافظه می شود. سیستم هایی با تعداد زیادی اتصال هر نخ کارگر اکنون مجموعه خود را از بافرهای خواندن و نوشتن برای اتصالات کلاینت فعال مدیریت می کند. برای تنظیم اندازه این بافرها
گزینه های "-o resp_obj_mem_limit=N" و "-o read_buf_mem_limt=N" ارائه شده است.
شعبه 1.6 نیز منسوخ شدن از
منبع: opennet.ru