web-dev-qa-db-fra.com

Cygwin de Windows est très lent / lent

Soudainement, toutes les commandes Cygwin que je lance à partir de la ligne de commande Windows ont un délai d'environ 10 à 20 secondes avant de s'exécuter, de sorte que Cygwin devient totalement inutilisable. J'ai déjà essayé de réinstaller sans succès.

L'exécution des commandes depuis une fenêtre de Bash Shell fonctionne correctement (au démarrage de Bash, je vois le décalage). Supprimer toutes les entrées de ma variable PATH locale n'a pas d'influence. J'utilise Windows 7 x64 et Cygwin x64 v 1.7.34 (0.285/5/3).

19
85fce

Je travaille parfois dans un domaine Windows avec des milliers d'utilisateurs.

Je ne veux pas faire de la meilleure estimation possible. Je préférerais Cygwin pour mettre en cache les informations des utilisateurs au besoin. Il s'avère que c'est facile à faire.

Il suffit de lancer cygserver lors de la connexion.

Pour configurer ceci correctement, exécutez cygserver-config une seule fois. Ceci configurera cygserver pour s'exécuter en tant que service Windows avec les informations d'identification correctes. Faites-le à partir d’une fenêtre Cygwin d’administrateur .

$ 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!

Que fait cygserver pour moi?

Consultez la documentation sur le site Cygwin . Fondamentalement, il met les choses en cache de l'utilisateur, en s'assurant que IPC fonctionne entre tous les processus Cygwin .

Votre kilométrage peut varier, bien sûr, mais c’est maintenant ma méthode de travail préférée. J'aurais dû le faire il y a des années.

12
bobbogo

Cela semble être lié à l'authentification. Pour moi, 40 secondes pour obtenir quelque chose à exécuter. Après cela, la création de processus dans cet arbre de processus semble assez rapide.

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

Donc je

  • Fait un cache de mon authentification locale et de mes propres informations d'identification Active Directory (AD)

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • Dit à Cygwin juste d'utiliser ces deux fichiers

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

J'ai tué tous les processus Cygwin et recommencé. Tout fonctionne maintenant bien et vite. Je vais supprimer ce piratage sur chaque mise à jour de fichier Cygwin DLL et voir comment je vais en venir.

Ceci est juste un croquis - vous voudrez au moins garder des sauvegardes!

MODIFIER

Obsolète Voir ma réponse plus récente à cette question pour une meilleure solution (à mon humble avis).

12
bobbogo

Lisez la mise à jour ci-dessous, cela s'est avéré ne pas être le problème.

Je souffre d'une version extrême de ce problème, même si c'est intermittent. Lorsque le problème existe, toutes les commandes durent entre 20 secondes et, dans les cas les plus extrêmes, plusieurs minutes. Cela se produira pendant plusieurs jours, puis disparaîtra pendant plusieurs jours. BTW, j'ai un système extrêmement rapide avec beaucoup de lecteurs DRAM, SSD, etc.

J'ai maintenant enfin une théorie de candidat qui pourrait expliquer les choses. Je viens de mettre à jour Cygwin via setup-x86_64.exe (ce que je fais rarement) et ensuite tout est extrêmement réactif (littéralement 1000 fois plus rapidement qu'avant). Je devine que le rebaseall à la fin de la mise à jour est ce qui a fait la différence.

Mise à jour: l'accélération que j'ai vue auparavant était apparemment une coïncidence; lorsque le problème est réapparu un mois plus tard, cela ne le réglait pas. Il s’avère que la désactivation de la protection Windows Defender Live a résolu instantanément le ralentissement.

2
philwalk

Voici comment ce problème s'est manifesté pour moi. Pour le premier, disons 20, les commandes entrées à l'invite de Cygwin étaient rapides, mais ensuite, elles sont devenues extrêmement lentes.

J'ai essayé le correctif d'authentification ci-dessus. Cela n'a pas fonctionné pour moi.

Cygwin FAQ indique que Cygwin n'aime pas les espaces dans les noms d'utilisateur ou de groupe. Voir Mon nom de connexion Windows comporte un espace. Cela posera-t-il des problèmes?.

Mon nom de groupe contient un espace. Je l'ai donc modifié dans le fichier /etc/group généré dans le correctif d'authentification par un trait de soulignement. Cela n'a pas fonctionné non plus.

D'autres publications pour le même problème l'ont signalé pour l'analyseur de virus. J'ai remplacé mon scanner antivirus existant (System Center Endpoint Protection) par Sophos. Cela a résolu le problème pour moi.

J'espère que ça aide.

1
Desmond Campbell

En note de bas de page, je viens de découvrir que je devais reconstruire les fichiers passwd et group après une mise à jour de Cygwin. Comme le comportement lent se reproduisait, la partie installation de la base de données basée sur la base automatique prenait plusieurs jours.

De plus, je n'ai pas eu besoin de modifier le fichier nsswitch.conf par défaut sur mon système (Windows 10).

À propos, le comportement lent s’est également révélé avec la commande Windows Invite et les applications portables. Certaines applications portables ont pris plusieurs heures pour produire une fenêtre au démarrage.

1
jfdawson

J'ai eu un problème avec l'exécution lente des builds pendant un certain temps sur Cygwin.

J'ai été obligé de mettre à jour hier et j'ai rencontré le problème de la non-exécution de rebaseall. Cela m’a obligé à creuser dans d’autres domaines et j’ai trouvé un rapport selon lequel on savait que Trusteer Rapport/End Point Protection causait des problèmes de rebasement et de temps de réponse lents. Je l’ai donc supprimée via la méthode normale de désinstallation des programmes Windows via le Panneau de configuration.

J'ai ensuite fait un rebaseall de l'interface du tableau de bord exécuté en tant qu'administrateur.

Cela signifie donc (win7) à partir du type de tableau de bord du menu Démarrer. Le raccourci du tiret apparaîtra. Cliquez avec le bouton droit de la souris pour exécuter en tant qu'administrateur. Puis, quand c'est terminé, exécutez:

/ usr/bin/rebaseall -v

Allez prendre un café ... Il restera assis pendant quelques secondes avant d'afficher la sortie, s'il reste assis sans rien faire pendant plus de 5 minutes, vous avez un autre problème.

Cela a corrigé le rebaseall, mais a aussi considérablement augmenté la vitesse de ma construction. La peine de vérifier pour voir si vous l'avez installé, essayez de le supprimer.

0
Rob