یک رگرسیون در هسته لینوکس ۷.۰ کشف شده است که عملکرد PostgreSQL را به نصف کاهش می‌دهد.

یکی از مهندسان آمازون یک رگرسیون خاص را برای هسته لینوکس ۷.۰ شناسایی کرد که انتظار می‌رود در ۱۳ آوریل منتشر شود. تغییر در تنظیمات زمان‌بندی وظایف منجر به کاهش قابل توجه در توان عملیاتی و پاسخگویی هنگام اجرای PostgreSQL روی سیستم‌های ARM64 شد. با استفاده از هسته ۷.۰، عملکرد در تست "simple-update" در pgbench تقریباً دو برابر کاهش یافت و از ۹۸۵۶۵ به ۵۰۷۵۱ رسید.

این کاهش سرعت به دلیل تغییر حالت پیش‌فرض زمان‌بند از PREEMPT_NONE به PREEMPT_LAZY در معماری‌هایی که از آن پشتیبانی می‌کنند، ایجاد شده است. این امر باعث شد PostgreSQL 55٪ از زمان CPU خود را صرف فراخوانی s_lock() در فضای کاربر کند. برای رفع این مشکل، پیشنهاد می‌شود PREEMPT_NONE به حالت پیش‌فرض برگردانده شود و ارتباط آن با تنظیم ARCH_NO_PREEMPT قطع شود.

پیتر زیلسترا، نویسنده تغییراتی که باعث رگرسیون شد و نگهدارنده زمان‌بندی وظایف و زیرسیستم‌های هسته مرتبط با قفل، اظهار داشت که باید یک اصلاحیه در کد PostgreSQL پیاده‌سازی شود. برای رفع این مشکل، او استفاده از افزونه "rseq slice" (توالی‌های قابل راه‌اندازی مجدد) که اخیراً در هسته PostgreSQL اضافه شده است را توصیه کرد تا احتمال حذف قفل را محدود کند.

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

منبع: opennet.ru

اضافه کردن نظر