ฉันต้องการถามคำถามเกี่ยวกับการทดสอบการจำลองCAEขนาดใหญ่บนคอมพิวเตอร์เครื่องเดียวกันในสองสถานการณ์ต่อไปนี้
- ระบบ Ubuntu บริสุทธิ์
- ระบบ Ubuntu ใน Windows 10 (WSL)
ความเร็วในการคำนวณในทั้งสองกรณีเกือบเท่ากันหรือแตกต่างกันหรือไม่?
ฉันต้องการถามคำถามเกี่ยวกับการทดสอบการจำลองCAEขนาดใหญ่บนคอมพิวเตอร์เครื่องเดียวกันในสองสถานการณ์ต่อไปนี้
ความเร็วในการคำนวณในทั้งสองกรณีเกือบเท่ากันหรือแตกต่างกันหรือไม่?
คำตอบ:
ซอฟต์แวร์การจำลองของคุณมีแนวโน้มมากที่สุดทั้งCPU ผูกพันหรือหน่วยความจำที่ถูกผูกไว้ สำหรับเวิร์กโหลดดังกล่าวเราจะไม่ยกเว้นที่จะเห็นความแตกต่างอย่างมีนัยสำคัญระหว่างการรันโค้ดบน "เปลือยโลหะ" หรือภายใน WSL (หรือเลเยอร์ความเข้ากันได้อื่นหรือ VM ที่ใช้การประมวลผลดั้งเดิม) เนื่องจากในกรณีใดกรณีหนึ่ง ในขณะที่รหัสการจำลองทำงานโดยตรงบน CPU
อย่างไรก็ตามอาจเป็นไปได้ว่าการจำลองของคุณอย่างน้อยบางส่วนของ I / O และนั่นคือสิ่งที่ความแตกต่างอาจเกิดขึ้น เห็นได้ชัดว่า WSL (ปัจจุบัน) มีชั้นอินเตอร์เฟซระบบไฟล์ที่ค่อนข้างช้าซึ่งสามารถชะลอดิสก์ I / O ได้อย่างมีนัยสำคัญ * กล่าวว่าในขณะที่ดิสก์ I / O สามารถเป็นคอขวดที่สำคัญสำหรับงานการประมวลผลข้อมูลจำนวนมาก มักจะไม่ควรใช้เวลาส่วนใหญ่ในการอ่านและเขียนไฟล์ หากเป็นของคุณคุณอาจต้องการพิจารณาเรียกใช้จากดิสก์ RAM (เช่น tmpfs บน native ** Linux) เพื่อหลีกเลี่ยงการเข้าถึงดิสก์ที่ไม่มีความจำเป็น
ไม่ว่าในกรณีใดวิธีเดียวที่จะมั่นใจได้คือการทดสอบแบบจำลองของคุณในสภาพแวดล้อมและเวลาที่ใช้ในการรัน อย่างไรก็ตามก่อนที่คุณจะทำเช่นนั้นคุณอาจต้องการดูมาตรฐานที่มีอยู่เช่นWSL เทียบกับ Docker กับ VirtualBox เปรียบเทียบกับมาตรฐานประสิทธิภาพของ Linux พื้นเมืองโดย Phoronix ตั้งแต่เดือนกุมภาพันธ์ 2018และตรวจสอบผลลัพธ์สำหรับการทดสอบใด ๆ ที่เน้นองค์ประกอบเดียวกัน ของระบบตามการจำลองของคุณ
(FWIW ผล Phoronix ดูเหมือนจะตรงกับหลักการทั่วไปส่วนใหญ่ที่ฉันระบุไว้ข้างต้นแม้ว่าจะมีแปลกประหลาดบางอย่างเช่น VirtualBox เด่นชัดกว่าลินุกซ์พื้นเมืองในมาตรฐาน I / O ผูกพันไม่กี่เห็นได้ชัดเนื่องจากดิสก์เสมือนไม่ทันทีซิงค์ข้อมูลทันที ไปยังดิสก์ทางกายภาพ. ปัญหาหนึ่งที่เกี่ยวข้องที่อาจเกิดขึ้นที่ฉันล้มเหลวที่จะต้องทราบดังกล่าวข้างต้นคือมาตรฐานแสดงความแตกต่างอย่างมีนัยสำคัญในการทำงานแบบมัลติเธรด OpenMP ทั้งระหว่างสภาพแวดล้อมโฮสต์ที่แตกต่างกันและระหว่าง distros ลินุกซ์ที่แตกต่างกันแม้ในขณะที่ทำงานบนฮาร์ดแวร์เปลือย. ย้อนหลัง ไม่น่าแปลกใจนักเนื่องจากเธรดและ IPC ถูกจัดการโดยเคอร์เนลฉันเดาว่าความแตกต่างส่วนใหญ่ระหว่าง distros นั้นอาจเกิดขึ้นกับรันไทม์ที่แตกต่างกันและ / หรือพารามิเตอร์การปรับแต่งเคอร์เนลเวลาคอมไพล์)
*) จากการโพสต์บล็อกของ MSDN ในปี 2559 มีองค์ประกอบของระบบไฟล์สองส่วนใน WSL: VolFs ซึ่งเลียนแบบความหมายของระบบไฟล์ Linux ดั้งเดิมผ่าน NTFS อย่างใกล้ชิดและใช้เพื่อติดตั้งเช่น/
และ/home
และ DrvFs ซึ่งให้ความหมายเหมือน Windows และใช้สำหรับการเข้าถึงไดรฟ์ Windows โฮสต์ผ่าน/mnt/c
ฯลฯ หากซอฟต์แวร์ของคุณไม่ต้องการคุณสมบัติระบบไฟล์ Linux ดั้งเดิมเช่นการเชื่อมโยงอย่างหนักหลายไฟล์ไปยังไฟล์เดียวกันการกำหนดค่าเพื่อจัดเก็บไฟล์ข้อมูลในโฟลเดอร์ DrvFs อาจปรับปรุงประสิทธิภาพการเข้าถึงไฟล์ WSL
**) ตามReddit เธรดนี้ตั้งแต่เดือนพฤษภาคม 2017, "tmpfs ปัจจุบันถูกจำลองโดยใช้ดิสก์" บน WSL หากไม่มีการเปลี่ยนแปลงบางอย่างในปีที่ผ่านมาสิ่งนี้น่าจะหมายความว่าการใช้ tmpfs บน WSL ไม่ได้ให้ประโยชน์ด้านประสิทธิภาพมากกว่าการใช้ระบบไฟล์บนดิสก์ปกติ
-O3 -march=haswell
หรือบางอย่างฉันไม่รู้ว่า Clear Linux ใช้สร้างเมล็ดของพวกเขาได้จริง แต่บางที BMI2 / popcnt
/ อะไรก็ตามที่สามารถสร้างความแตกต่างที่วัดได้ใน glibc และเคอร์เนล แม้ว่าจะไม่ได้ประโยชน์จาก AVX เนื่องจากเคอร์เนลหลีกเลี่ยงการสัมผัสกับการลงทะเบียน FPU ยกเว้นในรหัสเฉพาะเช่นข้อมูลการแก้ไขข้อผิดพลาดซอฟต์แวร์-RAID5 / 6)
Ubuntu ใน Windows (WSL - 2017 Fall Builders Update) นั้นช้ากว่า Ubuntu "Pure" ในระบบ Linux
ตัวอย่างเช่นการวาดภาพบนหน้าจอใช้เวลานานขึ้นหลายเท่าใน Windows 10 เทียบกับ Ubuntu 16.04 นั่นคือคุณสามารถเห็นการเลื่อนเคอร์เซอร์ใน Windows 10:
ใช้เวลาประมาณ 5 วินาทีในการทาสีหน้าจอ WSL Bash โดยการเปรียบเทียบมันเป็นประมาณ 1 1/2 วินาทีสำหรับหน้าจอเดียวกันใน Ubuntu 16.04:
ส่วนแรกแสดงให้เห็นว่า I / O หน้าจอช้าแค่ไหน แต่เกี่ยวกับการเปรียบเทียบ CPU?
จากนี้ถามคำถามเกี่ยวกับ Ubuntu: ยูทิลิตี้การเปรียบเทียบ CPU สำหรับ Linuxฉันรันการทดสอบบน Ubuntu 16.04 บน Linux และ Windows บน Linux ประมาณ 24 วินาทีบน Windows 10 เวอร์ชั่น 1709 ประมาณ 31 วินาที Linux เร็วขึ้น 6 วินาทีหรือเร็วขึ้นประมาณ 25% อย่างไรก็ตามฉันเพิ่งอัพเกรด Windows 10 เป็นเวอร์ชัน 1803 (อัปเดต Redstone 4 หรือที่เรียกว่า Spring Builders เมษายน 2018) และใช้เวลา 24 วินาทีซึ่งเหมือนกับ Linux
$ 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
หมายเหตุ: การอัปเดต Windows 10 spring สำหรับปี 2018 (ขนานนามRedstone 4 ) ออกมาในวันที่ 9 พฤษภาคม (4 วันที่ผ่านมา) และฉันจะติดตั้งในไม่ช้าเพื่อตรวจสอบการปรับปรุง ไม่ต้องสงสัยเลยว่ามีอยู่มากมาย หนึ่งที่ฉันรู้ว่าสิ่งที่ฉันสนใจคือความสามารถในการทำงานcron
เมื่อเริ่มต้น ฉันต้องการข้อมูลสำรองอัตโนมัติทุกวันไปที่ gmail.com
หมายเหตุ 2:ฉันเพิ่งติดตั้ง Windows 10 Build 1803 (เมษายน 2018 Spring Updates Update AKA Redstone 4) และการวาดภาพบนหน้าจอนั้นเร็วกว่ามาก ตอนนี้เป็นเพียง 3 วินาทีแทนที่จะเป็น 5 วินาทีเพื่อแสดงหน้าจอ Bash splash มาตรฐานของ CPU อยู่ในระดับเดียวกับ Linux แล้ว
ลองคิดดู - ใน WSL คอมพิวเตอร์ของคุณใช้ระบบ Windows แบบกราฟิกเต็มรูปแบบ (ซึ่งเป็นหมูทรัพยากรที่น่ากลัวตั้งแต่แรก) บวกกับระบบย่อยของ Ubuntu ใน Ubuntu ดั้งเดิมมันใช้งาน Ubuntu เท่านั้น
pstree
หรือps auxw
เห็นได้ชัดว่ากระบวนการทั้งหมดยังมีชีวิตอยู่ (หรือtop
กด M เพื่อจัดเรียงตามปริมาณการใช้หน่วยความจำ)
systemd
ไม่ทำงานเหมือน SysV init
ส่วนก่อนหน้าของความคิดเห็นนี้แกล้งทำเป็นว่าคุณกำลังใช้ Linux distro อายุ 5 หรือ 10 ปีพร้อมการinit
ตั้งค่าแบบโรงเรียนเก่า) แต่ใช่ การออกจากระบบเซสชัน X ของคุณและการหยุด X11 / GDM จะทำให้ทรัพยากรเพิ่มขึ้นโดยเฉพาะถ้าคุณไม่มีพื้นที่สว็อปหรือเดสก์ท็อปของคุณมีอึที่ตื่นขึ้นมาบ่อยๆแม้เมื่อ "ว่าง"
ฉันไม่รู้ว่าสิ่งนี้จะส่งผลกระทบต่อการจำลองของคุณโดยเฉพาะหรือไม่ แต่อาจ:
ซึ่งหมายความว่าหากการจำลองของคุณใช้หน่วยความจำที่แชร์ (คิดว่า/dev/shm
) อาจจะช้าและ / หรือทำให้อุปกรณ์เก็บข้อมูลของคุณเสื่อมสภาพ! และประสิทธิภาพการลงโทษมาจากหลายชั้น:
ไดรเวอร์ระบบไฟล์
ไดรเวอร์เก็บข้อมูล
สื่อจัดเก็บข้อมูล
แต่ถ้ามันไม่ทำเช่นนั้นประสิทธิภาพควรจะคล้ายกับที่อยู่บน Ubuntu โลหะเปลือย (สมมติว่าไม่มี I / O อื่น ๆ ตามที่คนอื่นพูดถึง)