ฉันสามารถเพิ่มความเร็วของส้อมของ cygwin ได้หรือไม่?


15

ฉันเจอโพสต์ที่พูดถึงความเร็วของการฟอร์กใน Cygwin โดยให้ 'fork rate' ใน Windows XP ประมาณ 30-50 ต่อวินาที ( ลิงค์ )

ฉันมี Core 2 duo (1.79GHz) ซึ่งฉันคาดว่าจะได้ผลลัพธ์ที่เทียบเคียงได้ แต่จัดการได้เพียง 8 ส้อมต่อวินาที (และบางครั้งก็น้อยกว่ามาก):

$ while (true); do date --utc; done | uniq -c
      5 Wed Apr 21 12:38:10 UTC 2010
      6 Wed Apr 21 12:38:11 UTC 2010
      1 Wed Apr 21 12:38:12 UTC 2010
      1 Wed Apr 21 12:38:13 UTC 2010
      8 Wed Apr 21 12:38:14 UTC 2010
      8 Wed Apr 21 12:38:15 UTC 2010
      6 Wed Apr 21 12:38:16 UTC 2010
      1 Wed Apr 21 12:38:18 UTC 2010
      9 Wed Apr 21 12:38:19 UTC 2010

คุณช่วยแนะนำอะไรก็ได้ที่ฉันอาจทำเพื่อเร่งความเร็วได้หรือไม่? เครื่องนี้ทำหน้าที่ช้ามากใน Cygwin กว่าคนอื่น ๆ ที่ผมเคยใช้มาก่อนซึ่งอันที่จริงก็ช้ามาก

ปรับปรุง

ให้คำถามของฉันกับฉัน: ฉันไม่เชื่อว่าการมีทางแยกที่เร็วกว่าจะทำให้ชีวิตของฉันดีขึ้นอย่างน่าอัศจรรย์ แต่ฉันเชื่อว่าเกณฑ์มาตรฐานนี้เป็นพร็อกซีที่ดีสำหรับปัญหาด้านประสิทธิภาพที่ฉันเห็นในการทุบตีเนื่องจากการใช้งานภายนอกทั่วไป เพื่อคำนวณค่า ฉันพบว่าฉันได้รับความเร็วที่เห็นได้ชัดบน Cygwin โดยการเริ่มต้นเชลล์และสคริปต์ทุบตีและพยายามแทนที่คำสั่งภายนอกด้วยคำสั่งภายใน บน Linux นี่ไม่ใช่ปัญหา อย่างไรก็ตามบ่อยครั้งที่มันเป็นไปไม่ได้และพีซีของฉันใช้เวลาประมาณ 14 วินาทีเพื่อเริ่มเชลล์ด้วยแคชที่อบอุ่นและไม่โหลด


1
Cygwin จะช้าลงช้าลงเสมอ แม้ VirtualBox / VMWare จะให้ประสิทธิภาพที่เร็วขึ้นหรือหากคุณต้องการสภาพแวดล้อม dev ให้ไปกับ msys แต่สิ่งนี้ ... ไม่รู้ .. ไม่เคยพบ cygwin ที่สามารถใช้งานได้จริง ๆ
Apache

+1 สำหรับการวัดส้อมที่ดีและเรียบง่าย! เพียงแค่วิ่งบน Linux VPS 5 $ / เดือนเพื่อเปรียบเทียบกับแล็ปท็อป i7 Windows ของฉันและ VPS ได้คะแนนสูงกว่า 30x
Mark K Cowan

คำตอบ:


2

มันไม่เกี่ยวอะไรกับส้อมช้า

ฉันเคยเห็น cygwin สุนัขรันช้าเมื่อไดเรกทอรี "บ้าน" ของ windows อยู่ในไดรฟ์เครือข่าย ทุกคำสั่งเดียวจะค้นหาไบนารีเพื่อทำให้สิ่งต่าง ๆ ชะลอตัวลงอย่างมาก

ดูว่า

while (true); do /bin/date --utc; done | uniq -c

เร็วกว่านี้ถ้านั่นเป็นปัญหาของคุณ

มิฉะนั้นให้ลองใช้ bash ผ่าน strace / ltrace (หากใช้กับ cygwin) และดูว่ามันทำอะไรเมื่อใช้เวลา 1 วินาทีในการเรียกใช้งานวันที่


1
น่าเสียดายที่การเข้ารหัสแบบฮาร์ดไดรฟ์ทำให้ไม่เห็นความแตกต่าง Strace ใช้งานได้ใน Cygwin แต่ไม่มีอะไรโดดออกมาที่ฉันเมื่อฉันดูร่องรอย
Andrew Aylett

1

ฉันเกรงว่าคุณจะทำสิ่งนี้ได้ไม่มากนัก

Windows ไม่มีfork()syscall ดั้งเดิมดังนั้น Cygwin จึงต้องเลียนแบบสิ่งนี้ การใช้งานการจำลองนี้ไม่มีประสิทธิภาพมาก (ดูCygwin คำถามที่พบบ่อย )

MSYS2 ซึ่งมักใช้ในแอปพลิเคชั่นที่ต้องการสภาพแวดล้อมบรรทัดคำสั่งคล้ายกับ Linux บนวินโดว์นั้นขึ้นอยู่กับ Cygwin ซึ่งเป็นสาเหตุว่าทำไมมันจึงได้รับผลกระทบด้วยเช่นกัน

จริงๆแล้วมันแย่มากที่fork()บน Windows นั้นมีขนาดอย่างน้อยหนึ่งลำดับที่ช้ากว่าบน Linux

msys2bash-windows-box$ time { date; }
Sa, 24. Feb 2018 16:51:44

real    0m0,046s
user    0m0,000s
sys     0m0,000s

msys2bash-windows-box$ while (true); do /bin/date --utc; done | uniq -c
     13 Sa, 24. Feb 2018 15:57:18
     17 Sa, 24. Feb 2018 15:57:19
     16 Sa, 24. Feb 2018 15:57:20


bash-linux-box$ time { date; }
Sat Feb 24 15:51:54 UTC 2018

real    0m0.002s
user    0m0.000s
sys     0m0.000s

bash-linux-box$ while (true); do date --utc; done | uniq -c
    211 Sat Feb 24 15:56:35 UTC 2018
    286 Sat Feb 24 15:56:36 UTC 2018
    260 Sat Feb 24 15:56:37 UTC 2018

ตัวอย่างข้างต้นแสดงให้เห็นถึงความแตกต่างระหว่างกล่อง i5-2500k @ 4GHz, 32GiB RAM Windows 10 Pro เทียบกับ VPS 1GiB RAM VPS ที่อ่อนแรง


0

คุณไม่เห็นส้อม คุณเห็น fork, exec, การเรียกระบบเพื่ออ่านเวลาของนาฬิการูปแบบและแปลงเอาท์พุท ไม่ต้องพูดถึงสิ่งอื่นคือการแบ่งปันเวลาแบบขนาน

พื้นฐานเกี่ยวกับสิ่งที่คุณพูดเครื่องอื่น ๆ "ที่จริงก็ช้าลง"? มีหลายสิ่งหลายอย่างที่นำไปสู่ความเร็วที่แท้จริงของคอมพิวเตอร์และการรับรู้ของผู้ใช้เกี่ยวกับความเร็วของคอมพิวเตอร์ คุณกำลังทำอะไรอยู่ประเภทหนึ่งที่ใช้ส้อม / วินาทีเป็นเครื่องวัดประสิทธิภาพที่ดี? ความเร็วหน่วยความจำสถาปัตยกรรมและจำนวนคืออะไร? ความเร็วดิสก์ I / O และบัฟเฟอร์?

คุณคิดว่าจะทำอะไรได้มากกว่า forks / วินาที: Core i7 ที่รัน Vista ที่มี RAM 512MB หรือ Celeron ที่ใช้ Linux ขนาดเล็กเพียง 2 GB


@ mpez0: โปรดดูเหตุผลที่อัปเดตของฉัน เพื่อตอบคำถามของคุณโดยเฉพาะพื้นฐานของฉันสำหรับการบอกว่าช้าลงก็คือพวกมันเป็นสถาปัตยกรรมที่เก่ากว่าที่มีความเร็วสัญญาณนาฬิกาที่ช้าลงแรมน้อยลงและช้าลงและดิสก์ที่เก่ากว่าช้ากว่า แต่ก็ยัง XP ลีนุกซ์จะทำการฟอร์กกิ้งเร็วกว่า, เพราะมันใช้ฟอร์กกิ้งโมเดลในเคอร์เนลที่ Windows ไม่ใช้. ฉันมี P3 ซึ่งมีคะแนน ~ 60 ตามเกณฑ์มาตรฐานนั้น :)
Andrew Aylett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.