Cygwin de Windows est très lent / lent

22

Soudain, toutes les commandes Cygwin que je démarre à partir de la ligne de commande Windows ont un décalage 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 à partir d'une fenêtre de shell Bash fonctionne très bien (lors du démarrage de Bash, je vois le décalage). La suppression de toutes les entrées de ma variable PATH locale n'a aucune influence. J'utilise Windows 7 x64 et Cygwin x64 v 1.7.34 (0.285 / 5/3).

85fce
la source
Je ne sais pas, mais est-ce la même chose à partir de cmd.exe lorsque vous ne démarrez pas cygwin.bat? par exempleC:\cygwin\bin>.\ls.exe <ENTER>
barlop
Des mises à jour s'il vous plaît?
yO_

Réponses:

15

Parfois, je travaille dans un domaine Windows avec des milliers d'utilisateurs.

Je ne veux faire aucune meilleure approche. Je préférerais que Cygwin mette en cache les informations utilisateur selon les besoins. Il s'avère que c'est facile à faire.

Exécutez simplement cygserverlors de la connexion.

Pour configurer cela correctement, exécutez cygserver-configune seule fois. Cela sera configuré cygserverpour s'exécuter en tant que service Windows avec les informations d'identification correctes. Pour ce faire, à partir d'une fenêtre d' administrateur 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'est-ce que ça cygserverfait pour moi?

Jetez un œil à la documentation sur le site Cygwin . Fondamentalement, il fait la mise en cache de l'utilisateur, tout en garantissant que IPC fonctionne entre tous les processus Cygwin .

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

bobbogo
la source
C'est bien! merci pour le partage après si longtemps. L'utilisation de ce fichier via / cygdrive est également beaucoup plus rapide maintenant qu'auparavant
85fce
/usr/bin/cygserver-config: line 181: cygrunsrv: command not found, C:/cygwin64/binest sur le PATH, fonctionne en tant qu'administrateur ...
Troyseph
1
@Troyseph Existe-t- C:\cygwin64\bin\cygrunsrv.exeil? Avez-vous utilisé par erreur des barres obliques ( /) dans votre %PATH%? Le package cygrunsrv est- il installé?
bobbogo
Ah, C:\cygwin64\bin\cygrunsrv.exen'existe pas, installé le cygrunsrv: NT/W2K service initiatorpaquet et tout fonctionne.
Troyseph
lancez cygserver-config comme dans la réponse, arrêtez de travailler cygwin (le processus ne démarre pas)
user174962
12

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

  • Création d'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
    
  • A dit à Cygwin d'utiliser uniquement ces deux fichiers

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

J'ai tué tous les processus Cygwin et j'ai recommencé. Tout fonctionne maintenant bien et rapidement. Je supprimerai ce hack à chaque mise à jour du fichier DLL Cygwin et verrai comment j'y vais.

Ce n'est qu'un croquis - vous voudrez au moins conserver des sauvegardes!

ÉDITER

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

bobbogo
la source
travaillé pour moi ... et n'a pas eu à installer un service!
Droj
@bobbogo Votre réponse est en bas pour moi. À quelle réponse faites-vous référence dans votre montage à la fin? Merci!
jpaugh
bon à savoir à ce sujet, bien qu'il ne puisse pas expliquer pourquoi "Toutes les commandes cygwin ... ont un décalage de ~ 10-20 secondes avant de s'exécuter".
philwalk
@philwalk Je pense que oui. Le problème est qu'au démarrage Cygwin doit remplir sa base de données utilisateur. Cela prend beaucoup de temps lorsque vous êtes dans un grand domaine windoze. Toutes les commandes ne souffrent pas de ce délai, seulement la première de toute arborescence de processus.
bobbogo
2

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

Je souffre d'une version extrême de ce problème, bien qu'il soit intermittent. Lorsque le problème existe, toutes les commandes prennent 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 DRAM, de disques SSD, etc.

J'ai maintenant enfin une théorie candidate qui pourrait expliquer les choses. Je viens de mettre à jour Cygwin via setup-x86_64.exe (ce que je fais rarement) et ensuite les choses sont à nouveau extrêmement réactives (littéralement des milliers de fois plus rapides qu'auparavant). Je suppose que le rebaseall à la fin de la mise à jour 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 l'a pas résolu. Il s'avère que la désactivation de la protection en direct de Windows Defender a résolu instantanément le ralentissement.

philwalk
la source
2
la désactivation de la protection en direct de Windows Defender a résolu instantanément le ralentissement - problème connu
gavenkoa
1

En tant que note de bas de page, je viens de découvrir que je devais reconstruire les fichiers passwdet groupaprès une mise à jour Cygwin. Comme le comportement lent se reproduisait, la partie de base automatique de l'installation a pris plusieurs jours.

Je n'avais pas non plus besoin de modifier le nsswitch.conf par défaut sur mon système (Windows 10).

Soit dit en passant, le comportement lent s'est également montré avec l'invite de commande Windows et les applications portables. Certaines applications portables ont mis plusieurs heures à produire une fenêtre au démarrage.

jfdawson
la source
Que voulez-vous dire les reconstruire? Faites-en simplement de nouvelles versions vides?
user13743
1

C'est ainsi que ce problème s'est manifesté pour moi. Pour la première, disons 20, les commandes entrées à l'invite Cygwin étaient rapides, mais elles sont devenues brusquement lentes.

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

La FAQ Cygwin signale que Cygwin n'aime pas les espaces dans les noms d'utilisateur ou de groupe. Voir Mon nom de connexion Windows contient un espace, cela causera-t-il des problèmes? .

Mon nom de groupe avait un espace, donc je l'ai changé dans le /etc/groupfichier généré dans le correctif d'authentification en un trait de soulignement. Cela n'a pas fonctionné non plus.

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

J'espère que ça aide.

Desmond Campbell
la source
0

J'ai eu un problème avec la lenteur d'exécution des builds pendant un certain temps sur cygwin.

J'ai été obligé de mettre à jour hier et suis tombé sur le problème de rebaseall échouant simplement à exécuter. Cela m'a forcé à creuser d'autres choses et j'ai trouvé un rapport selon lequel Trusteer Rapport / End Point Protection est connu pour causer des problèmes avec rebaseall et des temps de réponse lents. Je l'ai donc supprimé, via la méthode normale de désinstallation de Windows via le Panneau de configuration.

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

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

/ usr / bin / rebaseall -v

Optez pour un café ... Il restera quelques secondes avant d'afficher la sortie, s'il reste assis et ne fait rien pendant plus de 5 minutes, vous avez un autre problème.

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

Rob
la source
Pouvez-vous décrire les étapes que vous avez suivies avec suffisamment de détails pour permettre à quelqu'un d'autre de les faire? … Veuillez ne pas répondre dans les commentaires; modifiez  votre réponse pour la rendre plus claire et plus complète.
Scott
Sous Windows 10, l'emplacement du tiret était c:\msys64\user\bin\dash.exe. Afin de l'exécuter en tant qu'administrateur, j'ai dû lui créer un raccourci sur mon bureau. Malheureusement, cela n'a pas résolu mon ralentissement cygwin: (
user13743