Cygwin'in çatalını hızlandırabilir miyim?


15

Cygwin'de çatallanma hızını tartışan bir yazı ile karşılaştım, Windows XP'de saniyede yaklaşık 30-50 beklenen bir 'çatal oranı' verdim ( bağlantı )

Karşılaştırılabilir sonuçlar elde etmeyi bekleyebileceğim bir Core 2 ikilisi (1.79GHz) var, ancak sadece saniyede 8 çatal yönetiyor (ve bazen çok daha az):

$ 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

İşleri hızlandırmak için yapabileceğim herhangi bir şey önerebilir misin? Bu makine aslında kendisinden önce ben kullandım diğerlerinden daha Cygwin çok yavaş hareket vardı çok yavaş.

Güncelleme

Sorumu haklı çıkaralım: Daha hızlı bir çatala sahip olmanın sihirli bir şekilde hayatımı daha iyi hale getireceğine inanmıyorum, ancak bu karşılaştırmanın dış yürütülebilir dosyaların normal kullanımı nedeniyle bash'da gördüğüm performans sorunları için iyi bir proxy olduğuna inanıyorum. değerleri hesaplamak. Kabuk başlatma komut dosyalarımdan ve bash tamamlamadan geçerek ve harici komutları dahili komutlarla değiştirmeye çalışarak Cygwin'de fark edilir bir hız elde ediyorum; Linux'ta bu bir sorun değil. Yine de, bu mümkün değildir ve bilgisayarım şu anda sıcak bir önbellek ve yüksüz bir kabuk başlatmak için ~ 14s alıyor.


1
Cygwin her zaman yavaş, daha yavaş olacaktır. VirtualBox / VMWare bile daha hızlı performans verir veya dev bir ortama ihtiyacınız varsa msys ile gidin. Ama bu ... bilmiyorum .. cygwin'i asla kullanışlı bulamadı.
Apache

Güzel, basit çatal karşılaştırması için +1! Bunu i7 Windows dizüstü bilgisayarımla karşılaştırmak için ayda 5 $ Linux VPS'de çalıştırdım ve VPS 30 kat daha yüksek puan aldı.
Mark K Cowan

Yanıtlar:


2

Bunun çatalın yavaş olmasıyla bir ilgisi yoktur.

Windows "ev" dizini bir ağ sürücüsü üzerindeyken cygwin run dog yavaş gördüm. Her komut orada işleri yavaşlatan ikili dosyaları arar.

Eğer görürsen

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

daha hızlı, öyleyse, muhtemelen sizin probleminiz

Aksi halde bash strace / ltrace üzerinden çalışmayı deneyin (cygwin üzerinde çalışıyorlarsa bile) ve tarihin yürütülmesi 1 saniye sürdüğünde ne yaptığını görün.


1
Ne yazık ki, yolları zor kodlamak kayda değer bir fark yaratmaz. strace Cygwin'de işe yarıyor, ama izlere baktığımda hiçbir şey bana atlamıyor.
Andrew Aylett

1

Korkarım bu konuda yapabileceğiniz çok şey yok.

Windows'un yerel bir fork()sistem çağrısı yoktur, bu nedenle Cygwin'in bunu taklit etmesi gerekir. Bu öykünmenin uygulanması yine de çok verimsizdir. (Bkz. Cygwin SSS )

Windows'da muhtemelen tam özellikli bir Linux benzeri komut satırı ortamı isteyen uygulamalarda kullanılan MSYS2, Cygwin'e dayanır, bu yüzden bundan da etkilenir.

Aslında o kadar kötü ki fork(), Windows'ta a , Linux'tan en az bir büyüklük sırasıdır

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

Yukarıdaki örnek, i5-2500k @ 4GHz, 32GiB RAM Windows 10 Pro kutusu ile zayıf tek çekirdekli, 1GiB RAM VPS arasındaki farkı gösterir


0

Çatalları görmüyorsun; çatal, exec, sistem çağrısı saat saatini okumak, biçimlendirmek ve çıkışı dönüştürmek görüyorsunuz. Paralel olarak zaman paylaşımının başka ne olduğundan bahsetmiyoruz bile.

Hangi temelde diğer makinelerin "aslında daha yavaş" olduğunu söylüyorsunuz ? Bir bilgisayarın gerçek hızına ve kullanıcının bilgisayar hızını algılamasına katkıda bulunan birçok şey vardır. Çatalların / sn'nin iyi bir performans ölçüsü olduğu yerlerde ne tür şeyler yapıyorsunuz? Bellek hızı, mimarisi ve miktarı nedir? Disk G / Ç hızı ve arabelleğe alma?

Hangisinin daha fazla çatal / saniye yapacağını düşünüyorsunuz: 512MB RAM ile Vista çalıştıran bir Core i7 veya 2 GB ile en az Linux çalıştıran bir Celeron?


@ mpez0: Lütfen güncellenmiş gerekçemi görün. Sorularınızı özel olarak cevaplamak için, daha yavaş olduklarını söylemem temel, daha düşük saat hızına, daha az (ve daha yavaş) RAM'e ve daha eski, daha yavaş bir diske ancak hala XP'ye sahip eski bir mimariye sahip olmalarıdır. Linux neredeyse her zaman çatallanmada daha hızlı olacaktır, çünkü çekirdeğinde Windows'un kullanmadığı çatal modelini kullanır. Ben bu kriterde ~ 60 puan P3 var :).
Andrew Aylett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.