2011-11-17 33 views
4

我的問題是類似Cygwin在XP上非常緩慢地執行命令。會是什麼呢?

我想我的問題是由一個不同的問題,雖然造成的。

這是極其緩慢的命令在Cygwin的一個例子:

time for i in {1..10} ; do bash -c "echo Hello" ; done 

Hello 
... 

real 0m21.588s 
user 0m0.458s 
sys  0m0.989s 

東西是導致此...但會是什麼?

的事情,我曾嘗試:

  • 禁用Windows防火牆和Windows安全要領。
  • 我沒有任何其他防病毒產品。
  • 我試圖殺死不同的用戶進程,看看他們中的任何一個是否會干擾 - 沒有運氣。
  • 我沒有連接到任何網絡。
  • 如果我通過窗口CMD運行C:\cygwin\bin中的命令,例如,他們是,還是慢。

然後我試圖運行這個命令來獲取正在發生的事情的一個更好的主意:

strace -o bash.strace bash -c "echo hello" 

從我可以看到有一行是正在採取的90%的時間:

(如果現在還不清楚它是先從1028210行 - 我包括上下文其他行)

5  5 [main] bash 1088 open_shared: name shared.5, n 5, shared 0x60FB0000 (wanted 0x60FB0000), h 0x74C 
208  213 [main] bash 1088 heap_init: heap base 0x530000, heap top 0x530000 
118  331 [main] bash 1088 open_shared: name S-1-5-21-2025429265-1957994488-1801674531-1003.1, n 1, shared 0x60FC0000 (wanted 0x60FC0000), h 0x748 
85  416 [main] bash 1088 user_info::create: opening user shared for 'S-1-5-21-2025429265-1957994488-1801674531-1003' at 0x60FC0000 
83  499 [main] bash 1088 user_info::create: user shared version 6112AFB3 
344  843 [main] bash 1088 dll_crt0_0: finished dll_crt0_0 initialization 
283 1126 [main] bash 1088 _cygtls::remove: wait 0xFFFFFFFF 
87 1213 [main] bash 1088 _cygtls::remove: removed 0x23CE64 element 0 
104 1317 [main] bash 1088 _cygtls::remove: wait 0xFFFFFFFF 
70 1387 [main] bash 1088 _cygtls::remove: removed 0x23CE64 element 0 
102 1489 [main] bash 1088 _cygtls::remove: wait 0xFFFFFFFF 
70 1559 [main] bash 1088 _cygtls::remove: removed 0x23CE64 element 0 
110 1669 [main] bash 1088 _cygtls::remove: wait 0xFFFFFFFF 
70 1739 [main] bash 1088 _cygtls::remove: removed 0x23CE64 element 0 
781 2520 [main] bash 1088 _cygtls::remove: wait 0xFFFFFFFF 
76 2596 [main] bash 1088 _cygtls::remove: removed 0x23CE64 element 0 
278 2874 [sig] bash 1088 wait_sig: entering ReadFile loop, my_readsig 0x72C, my_sendsig 0x728 
1028210 1031084 [main] bash 1088 mount_info::conv_to_posix_path: conv_to_posix_path (C:\cygwin\home\Adam, no-keep-rel, no-add-slash) 
107 1031191 [main] bash 1088 normalize_win32_path: C:\cygwin\home\Adam = normalize_win32_path (C:\cygwin\home\Adam) 
59 1031250 [main] bash 1088 mount_info::conv_to_posix_path: /home/Adam = conv_to_posix_path (C:\cygwin\home\Adam) 
11535 1042785 [main] bash 1088 _cygwin_istext_for_stdio: fd 0: not open 
69 1042854 [main] bash 1088 _cygwin_istext_for_stdio: fd 1: not open 
62 1042916 [main] bash 1088 _cygwin_istext_for_stdio: fd 2: not open 
360 1043276 [main] bash (1088) open_shared: name cygpid.1088, n 1088, shared 0x60FE0000 (wanted 0x60FE0000), h 0x678 
65 1043341 [main] bash 1088 ********************************************** 
46 1043387 [main] bash 1088 Program name: C:\cygwin\bin\bash.exe (pid 1088, ppid 1) 
46 1043433 [main] bash 1088 App version: 1007.7, api: 0.230 
45 1043478 [main] bash 1088 DLL version: 1007.9, api: 0.237 
46 1043524 [main] bash 1088 DLL build: 2011-03-29 10:10 
51 1043575 [main] bash 1088 OS version: Windows NT-5.1 
45 1043620 [main] bash 1088 Heap size: 402653184 
45 1043665 [main] bash 1088 ********************************************** 
45 1043710 [main] bash 1088 pinfo::thisproc: myself->dwProcessId 1088 
50 1043760 [main] bash 1088 time: 1321506515 = time (0) 
862 1044622 [main] bash 1088 parse_options: glob (called func) 
78 1044700 [main] bash 1088 parse_options: returning 
45 1044745 [main] bash 1088 environ_init: GetEnvironmentStrings returned 0x10000 
... 

我真的不明白的概率lem的侵犯行可能暗指:

mount_info::conv_to_posix_path: conv_to_posix_path (C:\cygwin\home\Adam, no-keep-rel, no-add-slash) 

我該如何調試這個問題呢?有沒有人有任何想法?

回答

2

由於更新到最新的Cygwin(v2.769),這是一個問題少得多。 (以前我是用v2.738我認爲)

在2.769,同樣的命令提供了更好的結果:

$ time for i in {1..10} ; do bash -c "echo Hello" ; done 
Hello 
... 

real 0m0.641s 
user 0m0.379s 
sys  0m0.506s 

Cygwin的還是慢的,比我想 - 我主要是使用它的Git和VIM ,而且這兩者都比本國同行慢得多。

但現在它至少可用得多。

+0

對於簡單的命令我可以使用基準我自己的升級! (0.67s - > 0.37s從DLL版本1.7.1 - > 1.7.18) –

+0

其中是版本:'v2.769'?我剛剛在官方網站上發現了'v1.7.27' – Freewind

1

這似乎是相同的情景:

http://cygwin.com/ml/cygwin/2011-08/msg00080.html

它不能傷害到您的文章添加到Cygwin的故障報告表。也許你也可以在Cygwin論壇發帖。

+0

另一種可能性是考慮在Linux PC上運行Linux作爲虛擬機。例如,下載VMWare播放器(http://www.vmware.com)和Ubuntu設備(http://www.thoughtpolice.co.uk/vmware/) – paulsm4

+0

感謝隊友。我會看看我是否可以從Cygwin的人那裏得到任何信息。我想使用虛擬機。雖然我不確定我可以在我的工作場所。在過去,我確實有一個Ubuntu設備,但是由於管理層聲稱它不安全,必須將其刪除。 – asgeo1

相關問題