Cygwin de Windows es muy lento / lento


25

De repente, todos los comandos de Cygwin que comienzo desde la línea de comandos de Windows tienen un retraso de ~ 10-20 segundos antes de ejecutarse, por lo que Cygwin queda totalmente inutilizable. Ya intenté reinstalar sin éxito.

Ejecutar los comandos desde una ventana de shell Bash, funciona bien (al iniciar Bash veo el retraso). Eliminar todas las entradas de mi variable PATH local no tiene influencia. Yo uso Windows 7 x64 y Cygwin x64 v 1.7.34 (0.285 / 5/3).


no sé, pero ¿es lo mismo desde cmd.exe cuando no inicia cygwin.bat? por ejemploC:\cygwin\bin>.\ls.exe <ENTER>
barlop

¿Alguna actualización por favor?
YO_

Respuestas:


18

Ocasionalmente trabajo en un dominio de Windows con miles de usuarios.

No quiero hacer ningún mejor enfoque. Preferiría que Cygwin almacenara en caché la información del usuario según sea necesario. Resulta que esto es fácil de hacer.

Simplemente ejecute cygserveral iniciar sesión.

Para configurar esto correctamente, ejecute cygserver-configsolo una vez. Esto se configurará cygserverpara ejecutarse como un servicio de Windows con las credenciales correctas. Haga esto desde una ventana de administrador Cygwin.

$ cygserver-config
Generating /etc/cygserver.conf file

Warning: The following function requires administrator privileges!

Do you want to install cygserver as service?
(Say "no" if it's already installed as service) (yes/no) yes

The service has been installed under LocalSystem account.
To start it, call `net start cygserver' or `cygrunsrv -S cygserver'.

Further configuration options are available by editing the configuration
file /etc/cygserver.conf. Please read the inline information in that
file carefully. The best option for the start is to just leave it alone.

Basic Cygserver configuration finished. Have fun!

¿Qué hace cygserverpor mi?

Eche un vistazo a la documentación en el sitio de Cygwin . Básicamente, hace el almacenamiento en caché del usuario, junto con garantizar que IPC funcione entre todos los procesos de Cygwin .

Su kilometraje puede variar, por supuesto, pero esta es ahora mi forma preferida de trabajar. Debería haberlo hecho hace años.


1
¡Esto es genial! gracias por compartir después de tanto tiempo. El uso de este acceso a archivos a través de / cygdrive también es mucho más rápido ahora en comparación con antes
85fce

/usr/bin/cygserver-config: line 181: cygrunsrv: command not found, se C:/cygwin64/binestá PATHejecutando como administrador ...
Troyseph

1
@Troyseph ¿Existe C:\cygwin64\bin\cygrunsrv.exe? ¿Ha utilizado erróneamente barras diagonales ( /) en su %PATH%? ¿ Está instalado el paquete cygrunsrv ?
bobbogo

Ah, C:\cygwin64\bin\cygrunsrv.exeno existe, instalé el cygrunsrv: NT/W2K service initiatorpaquete y todo está funcionando.
Troyseph

2
Acabo de intentar esto, pero me encontré con un problema: después de un reinicio, Cygwin Terminal no pudo ejecutarse. La solución para eso se explica aquí (resumen: ejecutar services.mscy establecer cygserveren Automatic (Delayed Start)).
Keith Thompson el

14

Parece estar relacionado con la autenticación. Para mí, 40 segundos para obtener algo para ejecutar. Después de eso, sin embargo, la creación de procesos en ese árbol de procesos parece bastante rápida.

https://www.cygwin.com/faq.html#faq.using.startup-slow

Asique

  • Hice un caché de mi autenticación local y mis propias credenciales de Active Directory (AD)

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • Le dije a Cygwin que solo usara estos dos archivos

    $ echo 'passwd: files' >/etc/nsswitch.conf
    $ echo 'group: files' >>/etc/nsswitch.conf
    

Maté todos los procesos de Cygwin y comencé de nuevo. Todo ahora funciona bien y rápido. Eliminaré este truco en cada actualización del archivo Cygwin DLL y veré cómo me va.

Esto es solo un boceto: ¡al menos querrás mantener copias de seguridad!

EDITAR

Obsoleto. Vea mi respuesta más reciente a esta pregunta para una mejor solución (en mi humilde opinión).


1
funcionó para mí ... ¡y no tuve que instalar un servicio!
Droj

@bobbogo Tu respuesta está en la parte inferior para mí. ¿A qué respuesta te refieres en tu edición al final? ¡Gracias!
jpaugh

Es bueno saber sobre esto, aunque no puede explicar por qué "Todos los comandos de cygwin ... tienen un retraso de ~ 10-20 segundos antes de ejecutarse".
philwalk

@philwalk Creo que sí. El problema es que al inicio Cygwin tiene que llenar su base de datos de usuarios. Esto lleva mucho tiempo cuando estás dentro de un gran dominio de ventanas. No todos los comandos sufren este retraso, solo el primero en cualquier árbol de procesos.
bobbogo

2

Lea la actualización a continuación, esto no resultó ser el problema.

He estado sufriendo una versión extrema de este problema, aunque es intermitente. Cuando existe el problema, todos los comandos tardan entre 20 segundos y, en los casos más extremos, varios minutos. Ocurrirá durante varios días y luego desaparecerá durante varios días. Por cierto, tengo un sistema extremadamente rápido con muchas unidades DRAM, SSD, etc.

Ahora finalmente tengo una teoría candidata que podría explicar las cosas. Acabo de actualizar Cygwin a través de setup-x86_64.exe (lo cual hago con poca frecuencia) y luego las cosas vuelven a responder extremadamente (literalmente 1000 veces más rápido que antes). Supongo que el rebase al final de la actualización es lo que marcó la diferencia.

Actualización: la aceleración que vi antes fue aparentemente una coincidencia; cuando el problema reapareció un mes después, esto no lo solucionó. Resulta que deshabilitar la protección en vivo de Windows Defender resolvió instantáneamente la desaceleración.


3
deshabilitar la protección en vivo de Windows Defender resolvió instantáneamente la desaceleración - problema conocido
gavenkoa

2

Como nota al pie, descubrí que tenía que reconstruir los archivos passwdy groupdespués de una actualización de Cygwin. Como el comportamiento lento volvía a suceder, la parte de la instalación de la base automática tardó varios días en completarse.

Tampoco necesitaba modificar el nsswitch.conf predeterminado en mi sistema (Windows 10).

Por cierto, el comportamiento lento también se mostró con el símbolo del sistema de Windows y las aplicaciones portátiles. Algunas aplicaciones portátiles tardaron varias horas en producir una ventana cuando se iniciaron.


¿Qué quieres decir con reconstruirlos? ¿Solo hacer nuevas versiones vacías de ellos?
usuario13743

1

Así es como este problema se manifestó para mí. Para los primeros, digamos 20, los comandos ingresados ​​en el indicador de Cygwin fueron rápidos, pero luego se volvieron abruptamente lentos.

Intenté la corrección de autenticación anterior. No me funcionó.

Las preguntas frecuentes de Cygwin informan que a Cygwin no le gustan los espacios en los nombres de usuarios o grupos. Ver Mi nombre de inicio de sesión de Windows tiene un espacio, ¿esto causará problemas? .

El nombre de mi grupo tenía un espacio, así que lo cambié en el /etc/grouparchivo generado en la corrección de autenticación a un guión bajo. Eso tampoco funcionó.

Otras publicaciones para el mismo problema han informado que resulta para el escáner de virus. Reemplacé mi antivirus existente (System Center Endpoint Protection) con Sophos. Eso solucionó el problema para mí.

Espero que esto ayude.


0

He tenido un problema con la ejecución lenta de compilaciones por un tiempo en Cygwin.

Me vi obligado a actualizar ayer y me encontré con el problema de rebaseall simplemente no se pudo ejecutar. Esto me obligó a profundizar en otras cosas y encontré un informe de que se sabe que Trusteer Rapport / End Point Protection causa problemas con rebaseall y tiempos de respuesta lentos. Así que lo eliminé, a través del método normal de desinstalación de programas de Windows a través del Panel de control.

Luego realicé un rebaseall desde la interfaz del tablero como administrador.

Esto significa que (win7) desde el menú de inicio escribe guión. Aparecerá el acceso directo del guión. Haga clic derecho para ejecutarlo como administrador. Luego, cuando esté listo, ejecute:

/ usr / bin / rebaseall -v

Ir a tomar un café ... Se sentará durante unos segundos antes de que muestre la salida, si se sienta y no hace nada durante más de 5 minutos, tiene otro problema.

Esto solucionó el rebaseall, pero también aumentó enormemente la velocidad de mi construcción. Vale la pena verificar si lo tiene instalado, intente eliminarlo.


¿Puedes describir los pasos que tomaste con suficiente detalle para permitir que alguien más los haga? ... Por favor no responda en los comentarios; edite  su respuesta para que sea más clara y completa.
Scott

En Windows 10, la ubicación del guión era c:\msys64\user\bin\dash.exe. Para ejecutarlo como administrador, tuve que crear un acceso directo en mi escritorio. Desafortunadamente, esto no solucionó mi cygwin lento: (
user13743
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.