मैं निम्नलिखित दो स्थितियों में एक ही कंप्यूटर पर एक बड़े सीएई सिमुलेशन के परीक्षण के बारे में एक प्रश्न पूछना चाहता हूं ।
- शुद्ध उबंटू प्रणाली
- विंडोज 10 (WSL) में उबंटू सिस्टम
क्या दोनों मामलों में गणना की गति लगभग समान है या क्या वे अलग-अलग हैं?
मैं निम्नलिखित दो स्थितियों में एक ही कंप्यूटर पर एक बड़े सीएई सिमुलेशन के परीक्षण के बारे में एक प्रश्न पूछना चाहता हूं ।
क्या दोनों मामलों में गणना की गति लगभग समान है या क्या वे अलग-अलग हैं?
जवाबों:
आपके सिमुलेशन सॉफ़्टवेयर में सीपीयू बाउंड या मेमोरी बाउंड होने की संभावना है । ऐसे कार्यभार के लिए, किसी को "नंगे धातु" पर कोड चलाने के बीच या WSL (या किसी अन्य संगतता परत या वीएम जो देशी निष्पादन का उपयोग करता है) के बीच कोई महत्वपूर्ण अंतर देखने के अलावा नहीं होगा , क्योंकि किसी भी मामले में ओएस ज्यादातर बस द्वारा खड़ा होता है जबकि सिमुलेशन कोड सीधे सीपीयू पर चलता है।
हालाँकि, यह भी संभव है कि आपका अनुकरण कम से कम आंशिक रूप से I / O बाध्य हो, और जहाँ मतभेद उभर सकते हैं। जाहिरा तौर पर, WSL (वर्तमान में) में एक धीमी गति से फाइलसिस्टम इंटरफ़ेस परत होती है जो डिस्क I / O को काफी धीमा कर सकती है। * यही कहा गया है, जबकि डिस्क I / O कई प्रकार के बल्क डेटा प्रोसेसिंग कार्यों, "सिमुलेशन" के लिए प्रमुख अड़चन हो सकती है। आमतौर पर फाइलों को पढ़ने और लिखने में अपना अधिकांश समय खर्च नहीं करना चाहिए । यदि आपका है, तो आप अनावश्यक भौतिक डिस्क एक्सेस से बचने के लिए इसे रैम डिस्क (जैसे देशी ** लिनक्स पर tmpfs) से चलाने पर विचार कर सकते हैं।
किसी भी मामले में, यह सुनिश्चित करने का एकमात्र तरीका है कि आपके सिमुलेशन का वातावरण और समय दोनों में परीक्षण करना है कि इसे चलाने में कितना समय लगता है। हालांकि, ऐसा करने से पहले, आप मौजूदा बेंचमार्क पर एक नज़र रखना चाहते हैं, जैसे कि फरवरी 2018 से Phoronix द्वारा इस WSL बनाम Docker बनाम VirtualBox बनाम देशी लिनक्स प्रदर्शन बेंचमार्क , और उसी घटकों को तनाव देने वाले किसी भी परीक्षण के परिणामों की जांच करना। प्रणाली के रूप में अपने सिमुलेशन करता है।
(FWIW, Phoronix के परिणाम ज्यादातर उन सामान्य सिद्धांतों से मेल खाते हैं जो मैंने ऊपर उल्लिखित किए हैं, हालाँकि कुछ I / O बाध्य बेंचमार्क में VirtualBox जैसे कि मूल रूप से देशी लिनक्स को बेहतर बनाने के लिए कुछ उल्लेखनीय विषमताएँ हैं, जाहिरा तौर पर इसकी आभासी डिस्क के कारण हमेशा डेटा को सिंक्रनाइज़ नहीं किया जाता है भौतिक डिस्क पर। एक संभावित प्रासंगिक मुद्दा जिसे मैं ऊपर नोट करने में विफल रहा, वह यह है कि बेंचमार्क मल्टी-थ्रेडेड ओपनएमपी प्रदर्शन में विभिन्न मेजबान वातावरणों के बीच और नंगे हार्डवेयर पर चलने के दौरान भी अलग-अलग लिनक्स डिस्ट्रोस के बीच महत्वपूर्ण अंतर दिखाते हैं । यह बहुत आश्चर्य की बात नहीं है, क्योंकि थ्रेडिंग और आईपीसी कर्नेल द्वारा नियंत्रित किया जाता है। मुझे लगता है कि डिस्ट्रोस के बीच अंतर का बहुत अंतर अलग-अलग रनटाइम और / या समय कर्नेल ट्यूनिंग मापदंडों के नीचे आ सकता है।)
*) के अनुसार इस MSDN ब्लॉग पोस्ट VolFs, जो बारीकी से NTFS से अधिक देशी लिनक्स फाइल सिस्टम अर्थ विज्ञान emulates और माउंट करने के लिए जैसे प्रयोग किया जाता है: 2016 से, वहाँ वास्तव में कर रहे WSL में दो फाइल सिस्टम इंटरफ़ेस घटकों /
और /home
जो ज्यादातर अर्थ विज्ञान विंडोज की तरह प्रदान करता है, और DrvFs, और /mnt/c
आदि के माध्यम से होस्ट विंडोज ड्राइव तक पहुंचने के लिए उपयोग किया जाता है । यदि आपके सॉफ़्टवेयर को विशेष रूप से एक ही फ़ाइल के लिए कई हार्ड लिंक की तरह देशी लिनक्स फाइल सिस्टम की आवश्यकता नहीं है, तो इसे अपने डेटा फ़ाइलों को एक DrvFs फ़ोल्डर में संग्रहीत करने के लिए कॉन्फ़िगर करना फ़ाइल पहुंच प्रदर्शन में सुधार कर सकता है । WSL।
**) मई 2017 से इस Reddit थ्रेड के अनुसार , WSL पर "tmpfs का वर्तमान में डिस्क का उपयोग करके अनुकरण किया जाता है"। जब तक कि पिछले वर्ष में कुछ बदल नहीं गया है, तो इसका मतलब है कि WSL पर tmpfs का उपयोग करने से डिस्क-ऑन फ़ाइल सिस्टम का उपयोग करने पर कोई प्रदर्शन लाभ नहीं मिलता है।
-O3 -march=haswell
या कुछ और। मुझे नहीं पता कि स्पष्ट लिनक्स वास्तव में अपनी गुठली बनाने के लिए क्या उपयोग करता है, लेकिन शायद बीएमआई 2 / popcnt
/ जो भी ग्लिब और कर्नेल में एक औसत दर्जे का अंतर कर सकता है।) AVX से 't लाभ, हालांकि, क्योंकि कर्नेल विशिष्ट कोड जैसे कि सॉफ़्टवेयर-RAID5 / 6 त्रुटि-सुधार डेटा को छोड़कर FPU रजिस्टरों को छूने से बचता है।)
विंडोज में उबंटू (WSL - 2017 फॉल क्रिएटर्स अपडेट) निश्चित रूप से लिनक्स वातावरण में "प्योर" उबंटू की तुलना में धीमा है।
उदाहरण के लिए स्क्रीन पेंटिंग विंडोज 10 बनाम उबंटू 16.04 में कई बार अधिक समय लेती है, अर्थात आप वास्तव में विंडोज 10 में कर्सर को स्थानांतरित कर सकते हैं:
WSL बैश स्प्लैश स्क्रीन को पेंट करने में लगभग 5 सेकंड लगते हैं। तुलना करके यह उबंटू 16.04 में एक ही स्प्लैश स्क्रीन के लिए लगभग 1 1/2 सेकंड का है:
पहला खंड दिखाता है कि I / O कितनी धीमी स्क्रीन है लेकिन CPU बेंचमार्किंग के बारे में क्या है?
लिनक्स के लिए यह पूछें Ubuntu Q & A: CPU बेंचमार्किंग उपयोगिता से , मैंने लिनक्स और विंडोज पर Ubuntu 16.04 पर परीक्षण चलाए। लिनक्स पर विंडोज 10 पर 24 सेकंड में 1709 के बारे में 31 सेकंड में। लिनक्स 6 सेकंड तेज या लगभग 25% तेज है। हालाँकि मैंने अभी विंडोज 10 को संस्करण 1803 में अपग्रेड किया है (रेडस्टोन 4 उर्फ स्प्रिंग क्रिएटर्स अप्रैल 2018 अपडेट) और इसे 24 सेकंड का समय लगा जो कि लिनक्स जैसा ही है।
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 23.5065s
total number of events: 10000
total time taken by event execution: 23.5049
per-request statistics:
min: 2.13ms
avg: 2.35ms
max: 8.52ms
approx. 95 percentile: 2.76ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.5049/0.00
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 30.5350s
total number of events: 10000
total time taken by event execution: 30.5231
per-request statistics:
min: 2.37ms
avg: 3.05ms
max: 6.21ms
approx. 95 percentile: 4.01ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 30.5231/0.00
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 23.7223s
total number of events: 10000
total time taken by event execution: 23.7155
per-request statistics:
min: 2.21ms
avg: 2.37ms
max: 4.53ms
approx. 95 percentile: 2.73ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.7155/0.00
नोट: 2018 के लिए विंडोज 10 स्प्रिंग अपडेट (डब किए गए रेडस्टोन 4 ) 9 मई (4 दिन पहले) पर आया था और मैं जल्द ही इसे सुधारने के लिए स्थापित करूंगा। इसमें कोई शक नहीं है। एक मुझे पता है कि मेरे हितों में cron
स्टार्टअप पर रोजगार चलाने की क्षमता है । मुझे चाहिए कि gmail.com पर स्वचालित दैनिक बैकअप के लिए।
नोट 2: मैंने अभी विंडोज 10 बिल्ड 1803 (अप्रैल 2018 स्प्रिंग क्रिएटर्स अपडेट एकेए रेडस्टोन 4) स्थापित किया है और स्क्रीन पेंटिंग बहुत तेज है। बैश स्प्लैश स्क्रीन प्रदर्शित करने के लिए अब 5 सेकंड के बजाय यह केवल 3 सेकंड है। सीपीयू बेंचमार्क अब लिनक्स पर बराबरी पर है।
इसके बारे में सोचें - डब्ल्यूएसएल में आपका कंप्यूटर पूर्ण ग्राफिकल विंडोज सिस्टम चला रहा है (जो कि पहले स्थान पर एक भयावह संसाधन है) और इसके अलावा उबंटू सबसिस्टम है। देशी उबंटू में यह केवल उबंटू चल रहा है।
pstree
या ps auxw
, यह स्पष्ट है कि सभी प्रक्रियाएं अभी भी जीवित हैं। (या top
स्मृति खपत द्वारा सॉर्ट करने के लिए एम मारा)।
systemd
SysV की तरह काम नहीं करता है init
। इस टिप्पणी का पहले वाला भाग यह दिखावा कर रहा है कि आप एक पुराने स्कूल init
सेटअप के साथ 5 या 10 साल का लिनक्स डिस्ट्रो चला रहे थे ।) लेकिन हाँ , आपके X सत्र से बाहर निकलना और X11 / GDM को रोकना संसाधनों को मुक्त कर देगा, खासकर यदि आपके पास कोई स्वैप स्थान नहीं है, या आपके डेस्कटॉप में "निष्क्रिय" होने पर भी बार-बार जागता है।
मुझे नहीं पता कि यह आपके सिमुलेशन को विशेष रूप से प्रभावित करेगा, लेकिन यह हो सकता है:
इसका मतलब है, यदि आपका सिमुलेशन साझा मेमोरी (सोच /dev/shm
) का उपयोग करता है, तो यह धीमा हो सकता है और / या आपके स्टोरेज डिवाइस को पहन सकता है! और प्रदर्शन जुर्माना कई परतों से आता है :
फ़ाइल सिस्टम ड्राइवर
भंडारण चालक
भंडारण माध्यम
लेकिन अगर यह ऐसा नहीं करता है, तो प्रदर्शन नंगे-धातु उबंटू के समान होना चाहिए (अन्य कोई I / O मानकर, जैसा कि अन्य ने उल्लेख किया है)।