विंडोज (WSL) में उबंटू बनाम शुद्ध उबंटू पर एक सिमुलेशन चल रहा है


15

मैं निम्नलिखित दो स्थितियों में एक ही कंप्यूटर पर एक बड़े सीएई सिमुलेशन के परीक्षण के बारे में एक प्रश्न पूछना चाहता हूं ।

  1. शुद्ध उबंटू प्रणाली
  2. विंडोज 10 (WSL) में उबंटू सिस्टम

क्या दोनों मामलों में गणना की गति लगभग समान है या क्या वे अलग-अलग हैं?


4
अनुकरण की प्रकृति को जाने बिना, इसका उत्तर देना असंभव है।
मूरू

1
@ ममरू: यह वह अस्पष्ट बात नहीं है । एक "सिमुलेशन" संभवतः एक कम्प्यूटेशनल रूप से गहन पृष्ठभूमि की नौकरी है, जो इसे सीपीयू या मेमोरी बाउंड करता है। (डिस्क या नेटवर्क I / O भी एक अड़चन हो सकती है, लेकिन कुछ ऐसे लोग हैं जो ऐसे प्रोग्राम लिखते हैं जिससे बचने के लिए करते हैं, और कुछ आधुनिक सिमुलेशन कोड भी समानांतर गणना के लिए GPU का उपयोग कर सकते हैं।) एक बेंचमार्क को आसानी से लिख (या डाउनलोड) सकता है। जो इन सभी 2 से 5 संभावित अड़चनों का परीक्षण करता है, और जांचें कि क्या उनमें से किसी के लिए WSL और देशी उबंटू में कोई महत्वपूर्ण अंतर है। मैं यह करूँगा, लेकिन मेरे पास WSL (या विंडोज 10) उपलब्ध नहीं है।
इल्मरी करोनें

3
@ इल्मारिकारोनन "संभवतः"। क्रंच किए गए डेटा के आधार पर, यह सीपीयू बाउंड होने पर भी केवल IO गहन हो सकता है। और आपकी टिप्पणी के बाकी हिस्सों को इसे बंद करने का एक बहुत अच्छा कारण है - हमें इस बात का कोई पता नहीं है कि यहां बाधाओं के संभावित संयोजन क्या हैं।
मूरू

1
खैर, मैंने एक उत्तर पोस्ट किया, क्योंकि यह पता चला है कि उपयुक्त बेंचमार्क पहले से ही ऑनलाइन हैं । जाहिर है, मैं यह सुनिश्चित करने के लिए नहीं कह सकता कि क्या ओपी का विशिष्ट सिमुलेशन कोड WSL पर धीमी गति से चलेगा या नहीं; लेकिन किसी भी मामले में, उस प्रश्न का उत्तर किसी और के लिए नहीं बल्कि ओपी के लिए वैसे भी किसी काम का नहीं है। बेंचमार्क के आधार पर मैं क्या जवाब दे सकता हूं, यह है कि किस प्रकार के सिमुलेशन कोड से डब्ल्यूएसएल और देशी लिनक्स के बीच प्रदर्शन के अंतर की उम्मीद की जा सकती है।
इल्मरी करोनें

@ मुरू, यह एक सीएई सिमुलेशन (अबैकस सीएई) है।
एबीसीडीईएमएम

जवाबों:


18

आपके सिमुलेशन सॉफ़्टवेयर में सीपीयू बाउंड या मेमोरी बाउंड होने की संभावना है । ऐसे कार्यभार के लिए, किसी को "नंगे धातु" पर कोड चलाने के बीच या 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 रजिस्टरों को छूने से बचता है।)
पीटर कॉर्ड

12

विंडोज में उबंटू (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 सेकंड का समय लगा जो कि लिनक्स जैसा ही है।

लिनक्स पर Ubuntu 16.04

$ 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

विंडोज 10 पर Ubuntu 16.04 1709 का निर्माण करता है

$ 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

विंडोज 10 पर Ubuntu 16.04 1803 का निर्माण करते हैं

$ 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 सेकंड है। सीपीयू बेंचमार्क अब लिनक्स पर बराबरी पर है।


8
ध्यान दें कि यह भ्रामक है - यह I / O प्रदर्शन और अन्य कम्प्यूटेशनल प्रदर्शन को अलग नहीं करता है। WSL I / O के लिए धीमा जाना जाता है (उदाहरण के लिए, Phoronix मानदंड देखें)। यह इस बारे में कुछ नहीं कहता है कि क्या ओपी की गणना डब्ल्यूएसएल में उतनी ही तेजी से की जा सकती है।
मुरु

6
मुझे ईमानदारी से आश्चर्य हुआ कि स्प्लैश स्क्रीन को आकर्षित करना दोनों मामलों में प्रभावी नहीं है। आपका कंप्यूटर (संभवत:) कुछ मिलीसेकंड में और अधिक जटिल स्क्रीन अपडेट करने के लिए खुश है जैसे वीडियो खेलते समय। और आखिरी बार जब मैंने आपकी पहली रिकॉर्डिंग में एक टर्मिनल धीमा देखा था, जो 90 के दशक की शुरुआत में था, जब मेरे 2400 बीपीएस मॉडेम पर बीबीएस डायल किया गया था।
इल्मरी करोनें

"लिनक्स में उबंटू" से आपका क्या मतलब है?
जॉन बेंटले

3
ईमानदारी से, किसी भी तरह के यथार्थवादी कार्यक्रम के लिए इस तरह का बेंचमार्क पूरी तरह से बेकार है, क्योंकि कोई भी बेंचमार्क जो अनिवार्य रूप से कंसोल पेंटिंग की गति को मापता है। या तो आपका प्रोग्राम अड़चन कंसोल I / O है (जो कि ज्यादातर टर्मिनल एमुलेटर के साथ लिनक्स पर भी बहुत धीरे-धीरे धीमा है), या यह कुछ भी उपयोगी का विश्वसनीय उपाय नहीं है।
मट्टियो इटालिया

2
@ WinEunuuchs2Unix मैं जो देख सकता हूं, उससे थोड़ा कम है। लेकिन बहुत सारे I / O: कहीं से मौसम लाना, तारीख और समय पढ़ना, और इसे एक प्रारूप में प्रिंट करना, सिस्टम की जानकारी पढ़ना, आदि। वैसे भी, क्या आपने कभी अबैकस का उपयोग किया है? सिमुलेशन सॉफ्टवेयर इसे पसंद करते हैं या Ansys या Simulink वास्तविक I सिमुलेशन चलाते समय स्क्रीन I / O बाध्य नहीं होते हैं जब तक कि आप सिमुलेशन को ऐसा करने के लिए मजबूर न करें। यह पूरी तरह से संभव है कि किए गए सिमुलेशन के आधार पर सिर्फ अंतिम परिणाम दिखाए।
मुरु

7

इसके बारे में सोचें - डब्ल्यूएसएल में आपका कंप्यूटर पूर्ण ग्राफिकल विंडोज सिस्टम चला रहा है (जो कि पहले स्थान पर एक भयावह संसाधन है) और इसके अलावा उबंटू सबसिस्टम है। देशी उबंटू में यह केवल उबंटू चल रहा है।


1
@JimDeadlock मुझे वास्तव में नहीं लगता कि यह डेस्कटॉप को मारता है, यह सिर्फ इसे प्रदर्शित नहीं करता है। हर गिनी ऐप अभी भी पृष्ठभूमि में चल रहा है, वे नहीं हैं?
एरिक डुमिनील

2
विंडोज़ जीयूआई कुछ मेमोरी का उपभोग करता है, लेकिन कुछ भी नहीं करने पर बहुत अधिक सीपीयू का उपयोग नहीं करता है। मैं नहीं देखता कि कोई महत्वपूर्ण प्रभाव क्यों पड़ेगा?
विदरालो

1
कंसोल को एक अलग वीटी पर स्विच करना किसी भी प्रक्रिया को नहीं मारता है; @EricDuminil सही है। यह उन चीज़ों को रोक सकता है जो ग्राफिक्स अपडेट करने के लिए सीपीयू समय का उपयोग कर रहे थे, क्योंकि एक्स सर्वर जानता है कि यह अब प्रदर्शित नहीं किया जा रहा है (और इस तरह ओपनजीएल प्रसंस्करण या जो भी हो) पर किसी भी समय बर्बाद नहीं हो सकता है। लेकिन अगर आप दौड़ते हैं pstreeया ps auxw, यह स्पष्ट है कि सभी प्रक्रियाएं अभी भी जीवित हैं। (या topस्मृति खपत द्वारा सॉर्ट करने के लिए एम मारा)।
पीटर कॉर्डेस

2
@MichaelEricOberlin: दूसरे वीटी में बदलने से रनवे पर कोई असर नहीं पड़ता है! यह सिर्फ इतना है कि टेक्स्ट कंसोल अभी भी एक रनलेवल में उपलब्ध है जो जीडीएम शुरू करता है। (और BTW, रनलेवल्स मूल रूप से अतीत की बात है; systemdSysV की तरह काम नहीं करता है init। इस टिप्पणी का पहले वाला भाग यह दिखावा कर रहा है कि आप एक पुराने स्कूल initसेटअप के साथ 5 या 10 साल का लिनक्स डिस्ट्रो चला रहे थे ।) लेकिन हाँ , आपके X सत्र से बाहर निकलना और X11 / GDM को रोकना संसाधनों को मुक्त कर देगा, खासकर यदि आपके पास कोई स्वैप स्थान नहीं है, या आपके डेस्कटॉप में "निष्क्रिय" होने पर भी बार-बार जागता है।
पीटर कॉर्डेस

1
@MichaelEricOberlin: आपकी टिप्पणी काफी गलत है। क्या आप कृपया इसे हटाने पर विचार करेंगे?
एरिक ड्यूमिनिल

1

मुझे नहीं पता कि यह आपके सिमुलेशन को विशेष रूप से प्रभावित करेगा, लेकिन यह हो सकता है:

WSL साझा मेमोरी के लिए RAM का उपयोग नहीं करता है ! यह डिस्क का उपयोग करता है!

इसका मतलब है, यदि आपका सिमुलेशन साझा मेमोरी (सोच /dev/shm) का उपयोग करता है, तो यह धीमा हो सकता है और / या आपके स्टोरेज डिवाइस को पहन सकता है! और प्रदर्शन जुर्माना कई परतों से आता है :

  • फ़ाइल सिस्टम ड्राइवर

  • भंडारण चालक

  • भंडारण माध्यम

लेकिन अगर यह ऐसा नहीं करता है, तो प्रदर्शन नंगे-धातु उबंटू के समान होना चाहिए (अन्य कोई I / O मानकर, जैसा कि अन्य ने उल्लेख किया है)।


यह जानने के लिए वास्तव में अच्छा है!
ABCDEMMM
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.