2011-09-23 13 views
10

Me doy cuenta de que hay algunas otras preguntas sobre por qué aparentemente Cygwin es lento, pero este caso parece ser único.El bash de Cygwin se volvió extremadamente lento después de los errores

Tuve algunos problemas donde las cosas reportaban muchos errores, y luego de un reinicio, cualquier proceso lanzado desde bash es extremadamente lento. Honestamente, no tengo idea de qué podría estar causando esto (verifiqué la prioridad del proceso en taskmgr, sigue siendo normal).

Detalles:

que estaba ejecutando un periodo de prueba de un cierto código toma durante la noche y regresaron en la mañana para encontrar mi pantalla inundado de errores (cajas de diálogo - en su mayoría intentaron acceder punteros NULL), así como bastante algunas cosas enviadas a la línea de comando. Había bastante texto que no pude capturar (la mayoría de las veces la computadora no respondía, tuve que reiniciarlo manualmente). Recuerdo algo del texto al que se hace referencia "Win32 error 6" (que supongo que significa INVALID HANDLE).

Después del reinicio, la mayoría de las cosas están bien, pero Cygwin/bash sigue siendo bastante insensible. Me encontré con la siguiente, como se sugiere en otra pregunta:

$ time for i in {1..10} ; do bash -c "echo Hello" ; done 
... 
real 1m12.244s 
user 0m3.522s 
sys  0m34.460s 

La invocación de otra instancia de bash no es necesario que la terrible velocidad:

$ time for i in {1..10}; do ls ; done  
# nb there are about 6 entries in pwd 
.... 
real 0m47.718s 
user 0m2.568s 
sys  0m23.411s 

A pesar de las órdenes internas no parecen ir lo suficientemente rápido:

$ time for i in {1..10} ; do echo Hello ; done 
.... 
real 0m0.001s 
user 0m0.000s 
sys  0m0.000s 

Actualización: Acabo de darme cuenta de una actualización de Windows instalada entre entonces y ahora también. Me alegra que esto no se esté complicando ni nada. (Aunque, creo que otros compañeros de trabajo han instalado la actualización y no están viendo problemas).

Actualización 2:

Para responder un comentario a continuación, los archivos en/bin ejecutar sin ningún problema de CMD. Además, eliminé completamente y volví a descargar mi directorio de instalación cygwin y el problema todavía está ocurriendo.

No estoy [todavía] completamente seguro de cómo usar Cygwin's strace, pero creo que la primera columna puede ser delta de tiempo. Con esto en mente, aquí hay unas líneas que parecen problemáticos (la 0xDEADBEEF ciertamente no es alentador):

4100175 4101564 [main] bash 5664 _cygtls::remove: wait 0xFFFFFFFF 
4278898 4279724 [main] bash 5612 child_copy: dll bss - hp 0x628 low 0x611DC000, high 0x612108D0, res 1 
2210923 25635973 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5400, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
3595425 16085618 [proc_waiter] bash 5612 pinfo::maybe_set_exit_code_from_windows: pid 5376, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
3057452 19149209 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5612, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
2631997 38835042 [proc_waiter] bash 5716 pinfo::maybe_set_exit_code_from_windows: pid 5720, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
2610852 38836658 [main] bash 4624 _cygtls::remove: wait 0xFFFFFFFF 
3708283 42556365 [proc_waiter] bash 5716 pinfo::maybe_set_exit_code_from_windows: pid 4624, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
3666884 42562053 [main] bash 5664 fhandler_base_overlapped::wait_overlapped: GetOverLappedResult failed, bytes 0 
2742397 45305871 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5716, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
45322195 45322997 [main] bash 3996 child_copy: dll bss - hp 0x62C low 0x611DC000, high 0x612108D0, res 1 
4247577 49581019 [main] bash 3996 _cygtls::remove: wait 0xFFFFFFFF 
4266690 49581325 [main] bash 5664 child_info::sync: pid 3996, WFMO returned 0, res 1 
49622099 49623318 [main] bash 4840 child_copy: dll bss - hp 0x690 low 0x611DC000, high 0x612108D0, res 1 
4225718 53860809 [main] bash 4840 _cygtls::remove: wait 0xFFFFFFFF 
4248491 53861119 [main] bash 3996 child_info::sync: pid 4840, WFMO returned 0, res 1 
2167422 2169463 [main] bash 1412 _cygtls::remove: wait 0xFFFFFFFF 
10369 2205831 [main] bash 1412 pwdgrp::load: \etc\passwd curr_lines 4082 
10313 2237148 [main] bash 1412 cygwin_gethostname: name A119894 
14720 2251868 [main] bash 1412 stat64: entering 
+0

¿Tiene que ser de 'bash'? ¿Qué sucede si ejecuta 'ls.exe' desde Explorer? (No sé si eso es posible ...) – Thomas

+0

También podría intentar usar 'strace' para averiguar si es una llamada al sistema lenta. – Thomas

+0

@Thomas - No estoy familiarizado con 'strace' y la salida es un poco prolijo. ¿Qué estoy buscando aquí? –

Respuesta

0

Así que en realidad nunca resolvieron este. Tengo una nueva computadora en su lugar.

Problema similar surgió allí con el tiempo, y el problema fue el controlador de NVIDIA software --no los controladores reales.

Por lo tanto, el camino era:

  • Instalar Drivers NDIVIA
  • Quitar software NVIDIA desde appwiz.cpl
  • Utilice el Administrador de hardware para encontrar los archivos .inf que quedaron alrededor
0

que tienen poca experiencia con esto, pero al menos puedo darle mi opinión sobre lo que parece.

Veo muchas líneas [proc_wiater], cada una a más de 5000 ... es más larga de lo que su actual directorio necesita:/Parece que el problema aquí es "ls es un programa". Apuesto a que si diriges el tiempo no notarías un momento tan ridículo.

-Alguien que no sabe nada de strace.

0

Crea un archivo de registro sucio, usa awk.

Cuestiones relacionadas