په لینکس ۷.۰ کرنل کې یو ریګریشن کشف شوی چې د PostgreSQL فعالیت نیمایي کوي.

د ایمیزون یو انجینر د لینکس کرنل 7.0 لپاره ځانګړی ریګریشن وپیژند، کوم چې تمه کیږي د اپریل په 13 خپور شي. د ټاسک شیډولر ترتیباتو کې بدلون د ARM64 سیسټمونو کې د PostgreSQL چلولو پرمهال د تروپټ او ځواب ویلو کې د پام وړ کمښت لامل شو. د کرنل 7.0 په کارولو سره، د pgbench "ساده تازه" ازموینې کې فعالیت تقریبا دوه چنده راټیټ شو، له 98565 څخه 50751 ته.

دا سستوالی د هغو معماریو په اړه چې د دې ملاتړ کوي د ډیفالټ شیډولر پریمپشن حالت له PREEMPT_NONE څخه PREEMPT_LAZY ته بدلولو له امله رامینځته شوی. دا د دې لامل شوی چې PostgreSQL د خپل CPU وخت 55٪ د کارونکي ځای کې د s_lock() زنګ وهلو لپاره مصرف کړي. د دې مسلې د حل لپاره، دا وړاندیز شوی چې PREEMPT_NONE ډیفالټ ته راستون شي او د ARCH_NO_PREEMPT ترتیب څخه یې غیر لینک کړي.

پیټر زیجلسټرا، د هغو بدلونونو لیکوال چې د ریګریشن لامل شوي او د ټاسک شیډولر او لاک پورې اړوند کرنل فرعي سیسټمونو ساتونکی، وویل چې د PostgreSQL کوډ کې باید یو حل پلي شي. د فعالیت تخریب ته د رسیدو لپاره، هغه د PostgreSQL کرنل کې د وروستي اضافه شوي "rseq سلائس" (بیا پیل کیدونکي ترتیبونه) ​​توسیع کارولو سپارښتنه وکړه ترڅو د لاک هولډر ایستلو احتمال محدود کړي.

دا لا څرګنده نه ده چې لینس توروالډز به څه پریکړه وکړي، ځکه چې هغه دې اصل ته غاړه کیږدي چې کرنل باید فعالیت خراب نه کړي یا د کارونکي ځای مطابقت مات نه کړي. له یوې خوا، کرنل 7.0 د خپریدو دمخه د ازموینې په وروستي پړاو کې دی، او د مهالویش تنظیماتو بیرته راګرځول کولی شي د نورو فشارونو لامل شي. له بلې خوا، کاروونکي کولی شي د یو له خورا مشهور ډیټابیسونو د فعالیت نیمایي کمښت تجربه کړي.

سرچینه: opennet.ru

Add a comment