我可以加速cygwin的叉子吗?


15

我碰到过一篇讨论Cygwin的分叉速度的帖子,给出了Windows XP中大约30-50每秒的预期“分叉速率”(link

我有一个Core 2 duo(1.79GHz),我希望它能得到可比的结果,但它每秒只能处理大约8个fork(有时要少得多):

$ 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的慢了许多比别人之前,实际上我已经使用慢了很多。

更新资料

让我证明一下我的问题:我不认为拥有更快的fork会神奇地改善我的生活,但是我相信这个基准可以很好地替代由于正常使用外部可执行文件而在bash中看到的性能问题计算值。我发现通过浏览Shell的启动脚本和bash-completion并尝试将内部命令替换为内部命令,Cygwin的速度有了明显提高。在Linux上,这不是问题。但是,通常这是不可能的,并且我的PC当前花了大约14秒的时间来启动具有热缓存且没有负载的Shell。


1
Cygwin总是会变慢,变慢。甚至VirtualBox / VMWare也可以提供更快的性能,或者如果您需要开发环境,请使用msys。但这...不知道..从未真正发现cygwin有用。
Apache

+1获得漂亮,简单的fork基准!只需在每月5美元的Linux VPS上运行该软件即可与我的i7 Windows笔记本电脑进行比较,并且VPS得分高出30倍。
Mark K Cowan 2014年

Answers:


2

这与fork变慢无关。

当Windows“主”目录位于网络驱动器上时,我已经看到cygwin的运行速度很慢。每个命令都会在其中搜索二进制文件,从而极大地降低了运行速度。

看看

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

更快,如果是这样,那可能是您的问题

否则,请尝试通过strace / ltrace运行bash(如果它们甚至可以在cygwin上运行),并在执行日期需要1秒钟时查看其工作情况。


1
不幸的是,对路径进行硬编码没有明显的区别。strace在Cygwin中确实有效,但是当我查看跟踪时,没有发现任何问题。
Andrew Aylett

1

恐怕您对此无能为力。

Windows没有本地fork()系统调用,因此Cygwin必须对此进行模拟。但是,此仿真的实现效率很低。(请参见Cygwin常见问题解答

MSYS2基于Cygwin,经常用于那些希望在Windows上可能具有全功能的类似Linux的命令行环境的应用程序中,这也是为什么它也受此影响。

实际上非常糟糕,以至于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盒与脆弱的单核1GiB RAM VPS之间的区别


0

您没有看到货叉;您会看到fork,exec,系统调用来读取一天中的时钟,格式化并转换输出。更不用说并行共享时间了。

凭什么你说其他的机器“其实慢”?有很多因素会影响计算机的实际速度以及用户对计算机速度的感知。您正在执行什么样的工作,而fork / sec是衡量性能的好方法?什么是内存速度,架构和数量?磁盘I / O速度和缓冲?

您认为哪个会每秒执行更多任务:运行具有512MB RAM的Vista的Core i7或运行具有2 GB的最小Linux的Celeron?


@ mpez0:请参阅我更新的理由。要具体回答您的问题,我要说它们比较慢的依据是,它们是较旧的体系结构,时钟速度较慢,RAM较少(且较慢),而磁盘较旧但速度较慢,但​​仍为XP。Linux几乎总是会更快地派生,因为它在Windows不使用的内核中使用了派生模型。我有一个P3,在该基准上得分约为60 :)。
Andrew Aylett
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.