ఏప్రిల్ 13న విడుదల కానున్న లైనక్స్ కెర్నల్ 7.0కు ప్రత్యేకమైన ఒక లోపాన్ని అమెజాన్ ఇంజనీర్ గుర్తించారు. టాస్క్ షెడ్యూలర్ సెట్టింగ్స్లో మార్పు కారణంగా, ARM64 సిస్టమ్స్పై PostgreSQLను నడుపుతున్నప్పుడు థ్రూపుట్ మరియు ప్రతిస్పందనలో గణనీయమైన తగ్గుదల కనిపించింది. కెర్నల్ 7.0ను ఉపయోగించినప్పుడు, pgbench "simple-update" పరీక్షలో పనితీరు 98565 నుండి 50751కి, అంటే దాదాపు రెండింతలు పడిపోయింది.
దీనికి మద్దతు ఇచ్చే ఆర్కిటెక్చర్లలో డిఫాల్ట్ షెడ్యూలర్ ప్రీఎమ్షన్ మోడ్ను PREEMPT_NONE నుండి PREEMPT_LAZYకి మార్చడం వల్ల ఈ మందకొడితనం ఏర్పడింది. దీనివల్ల PostgreSQL తన CPU సమయంలో 55% s_lock()ను యూజర్ స్పేస్లో కాల్ చేయడానికి వెచ్చించాల్సి వచ్చింది. ఈ సమస్యను పరిష్కరించడానికి, PREEMPT_NONEను డిఫాల్ట్గా తిరిగి మార్చి, దానిని ARCH_NO_PREEMPT సెట్టింగ్ నుండి వేరు చేయాలని ప్రతిపాదించబడింది.
రిగ్రెషన్కు కారణమైన మార్పుల రచయిత మరియు టాస్క్ షెడ్యూలర్, లాక్-సంబంధిత కెర్నల్ సబ్సిస్టమ్ల మెయింటెయినర్ అయిన పీటర్ జిజ్ల్స్ట్రా, PostgreSQL కోడ్లో ఒక పరిష్కారాన్ని అమలు చేయవలసి ఉందని పేర్కొన్నారు. పనితీరు క్షీణతను పరిష్కరించడానికి, లాక్ హోల్డర్ ఎవిక్షన్ సంభావ్యతను పరిమితం చేయడానికి PostgreSQL కెర్నల్లో ఇటీవల జోడించిన "rseq స్లైస్" (రీస్టార్టబుల్ సీక్వెన్సెస్) ఎక్స్టెన్షన్ను ఉపయోగించమని ఆయన సిఫార్సు చేశారు.
కెర్నల్ పనితీరును తగ్గించకూడదని లేదా యూజర్-స్పేస్ అనుకూలతను దెబ్బతీయకూడదనే సూత్రానికి లైనస్ టోర్వాల్డ్స్ కట్టుబడి ఉన్నందున, ఆయన ఏ నిర్ణయం తీసుకుంటారో ఇంకా స్పష్టంగా లేదు. ఒకవైపు, కెర్నల్ 7.0 విడుదలకు ముందు తుది పరీక్షల దశలో ఉంది, మరియు షెడ్యూలర్ సెట్టింగ్లను వెనక్కి మార్చడం ఇతర తిరోగమనాలకు దారితీయవచ్చు. మరోవైపు, అత్యంత ప్రజాదరణ పొందిన డేటాబేస్లలో ఒకదాని పనితీరు సగానికి పడిపోవడాన్ని వినియోగదారులు అనుభవించవచ్చు.
మూలం: opennet.ru
