हाल ही में सबसे आम प्रश्नों में से एक है कि मेल्टडाउन / स्पेक्टर के खिलाफ सुरक्षा, और अब एल 1 टीएफ / फोरशैडो के खिलाफ भी लिनक्स प्रदर्शन को प्रभावित करता है। इस महीने
लिनक्स 4.19 कर्नेल विकास की शुरुआत
ने न केवल x86_64 के लिए आग में जोड़ा, बल्कि POWER / s390 / ARM के लिए भी। प्रदर्शन पर पैच के प्रभाव का एक सामान्य विचार प्राप्त करने के लिए, मैंने तीन इंटेल एक्सॉन सिस्टम और दो एएमडी ईपीवाईसी सिस्टम, साथ ही साथ प्रत्येक पक्ष पर एक वर्चुअल मशीन का परीक्षण किया, ताकि लिनक्स 4.19 कर्नेल के डिफ़ॉल्ट प्रदर्शन का मूल्यांकन किया जा सके और इसके विपरीत बिना तार के।

सभी मशीनों पर, लिनक्स कर्नेल 4.19-rc1 के साथ एक सिस्टम स्थापित किया गया था जो पिछले सप्ताहांत में जारी किया गया था। इंटेल पर, प्रासंगिक पैच में मेल्टडाउन के लिए पेज टेबल आइसोलेशन (पीटीआई / केपीटीआई) और कमांड के निष्पादन के खिलाफ विभिन्न स्पेक्टर पैच शामिल हैं, जिसमें __user पॉइंटर को क्लियर करना, आईबीपीबी IBRB_FW के माध्यम से रेटपॉलिन का उपयोग करना, सट्टा स्टोर के लिए पैच का उपयोग करना, prctl और seccomp का उपयोग कर बाईपास भेद्यता। वर्चुअल मशीनों में पीटीई उलटा और सशर्त कैश फ्लशिंग - यह एल 1 टीएफ / फोरशैडो के लिए है।
डिफ़ॉल्ट रूप से, लिनक्स कर्नेल इंटेल एचटी / एसएमटी समर्थन को अक्षम करके कमजोरियों के खिलाफ "पूर्ण" सुरक्षा प्रदान नहीं करता है, इसलिए इसे ध्यान में रखें यदि आप वर्चुअल मशीन का उपयोग करते हैं और वीएम को अविश्वसनीय कोड या उपयोगकर्ता एक्सेस प्रदान करते हैं। यदि आप पूर्ण सुरक्षा का चयन करते हैं और एसएमटी को अक्षम करते हैं, तो उपलब्ध थ्रेड्स की संख्या के आधा होने के कारण
प्रदर्शन पर प्रभाव अधिक ध्यान देने योग्य है । क्लाउड सेवा प्रदाता बस शेड्यूलर्स को कॉन्फ़िगर करने लगते हैं ताकि एसएमटी प्रवाह उपयोगकर्ताओं के माध्यम से न गुजरें। यह हाइपर थ्रेडिंग को अक्षम करने की स्पष्ट विशाल लागत से बचा जाता है। इसलिए अब हम केवल स्टॉक / डिफॉल्ट कर्नेल की सुरक्षा की तुलना कर रहे हैं।

एएमडी ईपीवाईसी, डिफ़ॉल्ट रूप से, केवल उन्हीं कमजोरियों के लिए सुरक्षा प्रदान करता है जो उनकी चिंता करते हैं: यह स्पेक्टर V1 के लिए __user पॉइंटर को साफ कर रहा है, स्पेक्टर V2 के लिए AMD Retpoline IBPB और स्पेक्ट्रा V4 के लिए सट्टा स्टोर बायपास (SSBD) को अक्षम कर रहा है।

लिनक्स 4.19-आरसी 1 स्टॉक कर्नेल पर सभी कॉन्फ़िगरेशन का परीक्षण करने के बाद, परीक्षण
रनटाइम में विभिन्न सुरक्षा स्विच का उपयोग करके दोहराया गया था। सभी प्रणालियों को Ubuntu 18.04.1 LTS x86_64 के साथ लिनक्स कर्नेल 4.19-rc1 के साथ Ubuntu मेनलाइन कर्नेल पीपीए, नवीनतम माइक्रोकोड / BIOS, जीसीसी 7.3 और EXT4 फ़ाइल सिस्टम के साथ परीक्षण किया गया था।

परीक्षण में सिस्टम कॉन्फ़िगरेशन:
- MSI Z170A SLI PLUS मदरबोर्ड पर Intel Xeon E3-1280 v5 Skylake, 16 GB DDR4 और 256 GB Toshiba RD400 NVMe SSD।
- MSI X299 SLI PLUS मदरबोर्ड पर Intel Xeon E5-2687W v3 Haswell, 32 GB DDR4 और 80 GB Intel 530 SATA 3.0 SSD।
- 96 जीबी रैम और सैमसंग 970 ईवीओ एनवीएम एसएसडी 256 जीबी के साथ दो इंटेल ज़ेओन गोल्ड 6138 त्यान 1U रैक।
- KVM आभासी मशीन पूर्वोक्त दोहरे प्रोसेसर Xeon गोल्ड सर्वर पर। यह वीएम मशीन पर एकमात्र सक्रिय प्रक्रिया थी और 80% कोरस / थ्रेड्स ऑफ सीपीयू (64 थ्रेड्स), 48 जीबी रैम और 118 जीबी वर्चुअल डिस्क तक पहुंचने के लिए कॉन्फ़िगर किया गया था। परीक्षण के दौरान, भेद्यता संरक्षण मेजबान और वीएम दोनों पर अक्षम था।
- 128 GB RAM और 280 GB Intel Optane 900p NVMe SSD के साथ Tyan 2U सर्वर पर AMD EPYC 7601।
- KVM वर्चुअल मशीन उपरोक्त AMD EPYC 7601 सर्वर पर है। इसमें 80% CPU कोर / थ्रेड्स (52 थ्रेड्स), 48 GB RAM और एक 120 GB वर्चुअल डिस्क है।
- 32 GB रैम और Samsung 960 EVO 256GB NVMe SSD के साथ एक गीगाबाइट MZ31-AR0 मदरबोर्ड पर AMD EPYC 7551 सर्वर।
जाहिर है, मशीनों के विन्यास अलग-अलग होते हैं और वे लिनक्स 4.19 कर्नेल पर प्रोसेसर की कमजोरियों के खिलाफ ऑन / ऑफ सुरक्षा की जांच करने के लिए एक दूसरे के साथ तुलना करने के लिए अभिप्रेत नहीं हैं। इसलिए, स्पष्टता के लिए, सभी डेटा प्रत्येक सिस्टम के प्रदर्शन के लिए सामान्यीकृत हैं। सभी परीक्षण
Phoronix टेस्ट सूट से ।
लेख के लिए, परीक्षण जो स्पेक्टर / मेल्टडाउन से संबंधित हैं, अर्थात्, गहन इनपुट-आउटपुट या कर्नेल इंटरैक्शन के साथ चुने गए थे। लोड सिर्फ सीपीयू पर है और प्रोसेसर कैश पर ज्यादा निर्भर नहीं करता है।

CompileBench प्रोफ़ाइल संभवतः स्पेक्टर / मेल्टडाउन के प्रभाव को दिखाने का सबसे आसान तरीका है। लिनक्स 4.19 कर्नेल पर, जब सुरक्षा सक्रिय होती है, तो इंटेल प्रोसेसर प्रदर्शन में 7-16% की कमी दिखाते हैं, जबकि AMD प्रोसेसर 3–4% की कमी दिखाते हैं।

संकलित पेड़ को पढ़ने के साथ उपप्रकारों में एक समान स्थिति। इंटेल प्रोसेसर के प्रदर्शन में 14-15% की गिरावट है, एएमडी प्रोसेसर में 4-5% की कमी है।

लिनक्स कर्नेल को संकलित करने जैसे वास्तविक कार्यों में, प्रदर्शन अंतर लगभग 2% होगा।

Hackbench कर्नेल शेड्यूलर बेंचमार्क भी सुरक्षा सक्रियण से ग्रस्त है। इंटेल प्रोसेसर में, एक्सोन गोल्ड को छोड़कर, प्रदर्शन लगभग 20% कम हो जाता है। एएमडी ईपीवाईसी सिस्टम में ज्यादा अंतर नहीं है।

PostgreSQL डेटाबेस सर्वर वास्तविक अनुप्रयोगों में से एक है जो प्रोसेसर पर सुरक्षा स्थापित करने के बाद प्रदर्शन में गिरावट से ग्रस्त है। इस विशेष परीक्षण में, इंटेल प्रोसेसर के लिए अंतर 5-8% था, और ईपीवाईसी के लिए - 1%।



स्पेक्टर / मेल्टडाउन के कारण प्रदर्शन में गिरावट के साथ एक और वास्तविक कार्यक्रम जीआईएमपी ग्राफिकल एडिटर है। AMD के लिए Intel का अंतर 5-10% है - 0 %2%।

Intel Skylake E3 v5 सिस्टम पर Redis DBMS 11% और अन्य इंटेल प्रोसेसर पर 5-7% तक धीमा हो जाता है, AMD EPYC सिस्टम के बीच का अंतर 1-5% है।

Linux 4.19 कर्नेल पर Xeon सिस्टम पर परीक्षण किए गए Nginx वेब सर्वर ने 20% तक, और AMD EPYC - 1-2% से 6% तक के प्रदर्शन में अंतर दिखाया।

इसी तरह, डिफ़ॉल्ट इंस्टॉलेशन के दौरान अपाचे वेब सर्वर इंटेल प्रोसेसर पर सुरक्षा को सक्रिय करने और एएमडी प्रोसेसर पर बदलाव के बिना व्यावहारिक रूप से बहुत धीमा चलता है।

OSBench फाइल बनाने की गति के लिए परीक्षण में, Intel Xeon पर सिस्टम 13-16% और EPYC सिस्टम 6-9% तक धीमा हो जाता है।

थ्रेड बनाने के लिए परीक्षण इंटेल और एएमडी प्रोसेसर के बीच एक ध्यान देने योग्य अंतर भी दिखाता है।


प्रोग्राम शुरू करने और प्रक्रियाएं बनाते समय, अक्षम सुरक्षा की तुलना में लिनक्स 4.19 कर्नेल के डिफ़ॉल्ट संचालन में एक छोटा लेकिन ध्यान देने योग्य अंतर है।
पैच स्थापित करने के बाद लिनक्स 4.19 कर्नेल पर प्रोसेसर के प्रदर्शन के साथ चीजें इस प्रकार हैं। ध्यान रखें कि यदि आपका सिस्टम अविश्वसनीय उपयोगकर्ताओं / कोड के लिए खुला है, विशेष रूप से वर्चुअल मशीनों में, तो सुरक्षा के लिए अतिरिक्त कार्यों की आवश्यकता हो सकती है, जैसे कि l1tf = full, अप करने के लिए SMT / HT को निष्क्रिय करना या L1 कैश की अनिवार्य फ्लशिंग, और क्या। सिस्टम प्रदर्शन को और अधिक कम कर देगा। L1TF / Foreshadow के खिलाफ इन सुरक्षा के प्रभाव को
पिछले लेख में अधिक विस्तार से वर्णित किया गया है।
शायद भविष्य में हम डेस्कटॉप प्रोसेसर और संबंधित वर्कलोड के साथ लिनक्स 4.19 पर इसी तरह के परीक्षण चलाएंगे।