Cygwin von Windows ist sehr langsam / träge

22

Plötzlich haben alle Cygwin-Befehle, die ich von der Windows-Befehlszeile aus starte, eine Verzögerung von ~ 10-20 Sekunden, bevor sie ausgeführt werden, sodass Cygwin völlig unbrauchbar wird. Ich habe bereits versucht, ohne Erfolg neu zu installieren.

Das Ausführen der Befehle aus einem Bash-Shell-Fenster heraus funktioniert einwandfrei (beim Starten von Bash sehe ich die Verzögerung). Das Entfernen aller Einträge aus meiner lokalen PATH-Variablen hat keinen Einfluss. Ich verwende Windows 7 x64 und Cygwin x64 v 1.7.34 (0.285 / 5/3).

85fce
quelle
weiß nicht, aber ist es dasselbe von cmd.exe, wenn Sie cygwin.bat nicht starten? zBC:\cygwin\bin>.\ls.exe <ENTER>
Barlop
Irgendwelche Updates bitte?
yO_

Antworten:

15

Gelegentlich arbeite ich in einer Windows-Domäne mit Tausenden von Benutzern.

Ich möchte keinen Best-Rate-Ansatz machen. Ich würde es vorziehen, wenn Cygwin Benutzerinformationen nach Bedarf zwischenspeichert. Es stellt sich heraus, dass dies einfach zu tun ist.

Einfach cygserverbeim einloggen ausführen .

Führen Sie das cygserver-configProgramm nur einmal aus , um es richtig einzurichten . Dies wird so eingerichtet cygserver, dass es als Windows-Dienst mit den richtigen Anmeldeinformationen ausgeführt wird. Führen Sie dies in einem Administrator- Cygwin-Fenster aus.

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

Was macht cygserverfür mich

Schauen Sie sich die Dokumentation auf der Cygwin-Website an . Grundsätzlich werden die Daten vom Benutzer zwischengespeichert und sichergestellt, dass IPC zwischen allen Cygwin- Prozessen funktioniert .

Ihre Laufleistung kann natürlich variieren, aber dies ist jetzt meine bevorzugte Arbeitsweise. Ich hätte es vor Jahren tun sollen.

Bobbogo
quelle
Das ist toll! danke fürs teilen nach so langer zeit. mit dieser datei ist der zugriff über / cygdrive jetzt auch viel schneller als vorher
85fce
/usr/bin/cygserver-config: line 181: cygrunsrv: command not found, C:/cygwin64/binIst auf der PATHals Administrator angemeldet ...
Troyseph
1
@Troyseph Existiert C:\cygwin64\bin\cygrunsrv.exe? Haben Sie fälschlicherweise Schrägstriche ( /) in Ihrem verwendet %PATH%? Ist das cygrunsrv- Paket installiert?
Bobbogo
Ah, C:\cygwin64\bin\cygrunsrv.exeexistiert nicht, hat das cygrunsrv: NT/W2K service initiatorPaket installiert und alles funktioniert.
Troyseph
starte cygserver-config wie in der antwort angegeben, funktioniere cygwin überhaupt nicht mehr (prozess startet nicht)
user174962
12

Es scheint mit Authentifizierung zu tun zu haben. Für mich 40 Sekunden, um etwas auszuführen. Danach scheint die Prozesserstellung in diesem Prozessbaum ziemlich schnell zu sein.

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

Also ich

  • Ich habe meine lokale Authentifizierung und meine eigenen Active Directory-Anmeldeinformationen zwischengespeichert

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • Ich habe Cygwin nur gesagt, dass ich diese beiden Dateien verwenden soll

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

Ich habe alle Cygwin-Prozesse abgebrochen und erneut gestartet. Alles läuft jetzt schön und schnell. Ich werde diesen Hack bei jedem Cygwin DLL-Datei-Update entfernen und sehen, wie es mir geht.

Dies ist nur eine Skizze - Sie werden zumindest Backups aufbewahren wollen!

BEARBEITEN

Veraltet Siehe meine neuere Antwort auf diese Frage für eine bessere (IMHO) Lösung.

Bobbogo
quelle
arbeitete für mich ... und musste keinen Dienst installieren!
Droj
@ Bobbogo Ihre Antwort ist am Ende für mich. Auf welche Antwort beziehen Sie sich in Ihrer Bearbeitung am Ende? Vielen Dank!
Jpaugh
Gut zu wissen, obwohl es nicht erklären kann, warum "Alle Cygwin-Befehle ... eine Verzögerung von ~ 10-20 Sekunden haben, bevor sie ausgeführt werden".
Philwalk
@philwalk Ich denke es tut. Das Problem ist, dass Cygwin beim Start seine Benutzerdatenbank füllen muss. Dies dauert sehr lange, wenn Sie sich in einer großen Windoze-Domäne befinden. Nicht jeder Befehl erleidet diese Verzögerung, nur der erste in einem Prozessbaum.
Bobbogo
2

Lesen Sie das Update weiter unten, es stellte sich heraus, dass dies nicht das Problem ist.

Ich habe unter einer extremen Version dieses Problems gelitten, obwohl es zeitweise auftritt. Wenn das Problem besteht, dauern alle Befehle zwischen 20 Sekunden und im Extremfall mehrere Minuten. Es wird für einige Tage auftreten und dann für einige Tage verschwinden. Übrigens, ich habe ein extrem schnelles System mit vielen DRAM-, SSD-Laufwerken usw.

Ich habe jetzt endlich eine Kandidatentheorie, die Dinge erklären könnte. Ich habe Cygwin gerade über setup-x86_64.exe aktualisiert (was ich selten mache) und danach sind die Dinge wieder extrem reaktionsschnell (buchstäblich 1000-mal schneller als zuvor). Ich vermute, das Rebaseall am Ende des Updates hat den Unterschied ausgemacht.

Update: Die Beschleunigung, die ich zuvor gesehen habe, war anscheinend ein Zufall. Als das Problem einen Monat später erneut auftrat, konnte es nicht behoben werden. Es stellte sich heraus, dass das Deaktivieren des Windows Defender-Live-Schutzes die Verlangsamung sofort behebt.

Philwalk
quelle
2
Durch Deaktivieren des Live-Schutzes von Windows Defender wurde das bekannte Problem der Verlangsamung sofort behoben
gavenkoa
1

Als Fußnote stellte ich fest, dass ich die passwdund group-Dateien nach einem Cygwin-Update neu erstellen musste. Da das langsame Verhalten erneut auftrat, dauerte der Autorebaseteil der Installation mehrere Tage.

Ich musste auch die Standarddatei nsswitch.conf auf meinem (Windows 10) System nicht ändern.

Das langsame Verhalten zeigte sich übrigens auch in der Windows-Eingabeaufforderung und in portablen Anwendungen. Bei einigen tragbaren Anwendungen dauerte es mehrere Stunden, bis beim Start ein Fenster angezeigt wurde.

jfdawson
quelle
Was meinst du damit, sie wieder aufzubauen? Machen Sie einfach neue, leere Versionen von ihnen?
user13743
1

So manifestierte sich dieses Problem für mich. Bei den ersten, sagen wir 20, Befehlen, die an der Eingabeaufforderung von Cygwin eingegeben wurden, war es schnell, aber dann wurde es plötzlich schmerzhaft langsam.

Ich habe versucht, die oben genannte Authentifizierung zu beheben. Es hat bei mir nicht funktioniert.

In den Cygwin-FAQ wird berichtet, dass Cygwin keine Leerzeichen in Benutzer- oder Gruppennamen mag. Siehe Mein Windows-Anmeldename enthält ein Leerzeichen. Wird dies zu Problemen führen? .

Mein Gruppenname enthielt ein Leerzeichen, daher habe ich es in der /etc/groupim Authentifizierungsfix generierten Datei in einen Unterstrich geändert . Das hat auch nicht funktioniert.

Andere Postings für das gleiche Problem haben gemeldet, dass es für den Virenscanner resultiert. Ich habe meinen vorhandenen Virenscanner (System Center Endpoint Protection) durch Sophos ersetzt. Das hat das Problem für mich behoben.

Ich hoffe das hilft.

Desmond Campbell
quelle
0

Ich hatte eine Weile ein Problem mit der langsamen Ausführung von Builds auf Cygwin.

Ich war gestern gezwungen zu aktualisieren und bin auf das Problem gestoßen, dass rebaseall einfach nicht ausgeführt werden konnte. Dies zwang mich, mich mit anderen Dingen zu befassen, und ich fand einen Bericht, von dem bekannt war, dass Trusteer Rapport / Endpoint Protection Probleme mit der Wiederherstellung und langsame Reaktionszeiten verursacht. Also entfernte ich es über die normale Windows-Deinstallationsmethode in der Systemsteuerung.

Ich habe dann ein Rebaseall von der Dash-Oberfläche als Admin ausgeführt.

Das heißt also, (win7) aus dem Startmenü geben Strich. Die Bindestrich-Verknüpfung wird angezeigt. Klicken Sie mit der rechten Maustaste, um als Administrator ausgeführt zu werden. Führen Sie anschließend Folgendes aus:

/ usr / bin / rebaseall -v

Kaffee trinken gehen ... Es dauert einige Sekunden, bis die Ausgabe angezeigt wird. Wenn es länger als 5 Minuten nicht funktioniert, liegt ein anderes Problem vor.

Dies hat das Rebaseall behoben, aber auch die Geschwindigkeit meines Builds massiv erhöht. Versuchen Sie, es zu entfernen, um festzustellen, ob es installiert ist.

rauben
quelle
Können Sie die Schritte, die Sie unternommen haben, so detailliert beschreiben, dass sie von anderen ausgeführt werden können? Bitte antworten Sie nicht in Kommentaren; Bearbeiten Sie  Ihre Antwort, um sie klarer und vollständiger zu gestalten.
Scott
Auf Windows 10 war der Speicherort für Bindestrich c:\msys64\user\bin\dash.exe. Um es als Administrator ausführen zu können, musste ich auf meinem Desktop eine Verknüpfung dazu erstellen. Leider hat dies mein langsames Cygwin nicht repariert: (
user13743