התגלתה רגרסיה בליבת לינוקס 7.0 אשר מפחיתה את ביצועי PostgreSQL בחצי.

מהנדס באמזון זיהה רגרסיה ספציפית לליבת לינוקס 7.0, שצפויה לצאת ב-13 באפריל. שינוי בהגדרות מתזמן המשימות הביא לירידה משמעותית בתפוקה ובתגובתיות בעת הפעלת PostgreSQL על מערכות ARM64. באמצעות ליבה 7.0, הביצועים במבחן "simple-update" של pgbench ירדו כמעט פי שניים, מ-98565 ל-50751.

ההאטה נגרמה עקב שינוי מצב ברירת המחדל של מתזמן הפעולה מ-PREEMPT_NONE ל-PREEMPT_LAZY בארכיטקטורות התומכות בו. דבר זה גרם ל-PostgreSQL להשקיע 55% מזמן המעבד שלו בקריאה ל-s_lock() במרחב המשתמש. כדי לטפל בבעיה זו, מוצע להחזיר את PREEMPT_NONE לברירת המחדל ולנתק אותו מההגדרה ARCH_NO_PREEMPT.

פיטר זיילסטרה, מחבר השינויים שגרמו לרגרסיה ומתחזק תת-מערכות הליבה הקשורות למנעולים, הצהיר כי יש ליישם תיקון בקוד PostgreSQL. כדי לטפל בירידה בביצועים, הוא המליץ ​​להשתמש בהרחבה "rseq slice" (Restartable Sequences) שנוספה לאחרונה בליבת PostgreSQL כדי להגביל את הסבירות לפינוי מחזיק המנעול.

עדיין לא ברור איזו החלטה יקבל לינוס טורבאלדס, שכן הוא דבק בעיקרון שהליבה לא צריכה לפגוע בביצועים או לשבור תאימות בין מרחב המשתמש. מצד אחד, ליבה 7.0 נמצאת בשלב הבדיקות הסופי לפני השחרור, וביטול הגדרות המתזמן עלול להוביל לרגרסיות נוספות. מצד שני, משתמשים עלולים לחוות ירידה של חצי בביצועים של אחד מבסיסי הנתונים הפופולריים ביותר.

מקור: OpenNet.ru

הוספת תגובה