Cygwin from Windows is very slow/ laggy

23

10

Suddenly all Cygwin commands I start from the Windows command line have a ~10-20 second lag before they execute, so that Cygwin becomes totally unusable. I already tried to reinstall without success.

Executing the commands from within a Bash shell window, works fine (while starting Bash I see the lag). Removing all entries from my local PATH variable doesn't have an influence. I use Windows 7 x64 and Cygwin x64 v 1.7.34 (0.285/5/3).

85fce

Posted 2015-02-12T11:33:02.387

Reputation: 308

don't know but is it the same from cmd.exe when you don't start cygwin.bat? e.g. C:\cygwin\bin>.\ls.exe <ENTER> – barlop – 2015-02-13T02:23:50.163

Any updates please? – yO_ – 2018-09-07T11:39:30.347

1

Possibly related: Startup is really slow for all Cygwin applications

– Peter Mortensen – 2018-10-31T14:38:33.787

Answers

17

Occasionally I work in a Windows domain with thousands of users.

I don't want to do any best-guess approach. I would prefer Cygwin to cache user information on an as-needed basis. It turns out this is easy to do.

Simply run cygserver on login.

To set this up properly, run cygserver-config once only. This will set up cygserver to run as a Windows service with the correct credentials. Do this from an administrator Cygwin window.

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

What does cygserver do for me?

Have a look at the documentation over at the Cygwin site. Basically it does the user caching stuff, together with ensuring IPC works between all Cygwin processes.

Your mileage may vary of course, but this is now my preferred way of working. I should have done it years ago.

bobbogo

Posted 2015-02-12T11:33:02.387

Reputation: 1 002

1This is great! thanks for sharing after so long time.Using this file access through /cygdrive is also much faster now compared to before – 85fce – 2017-03-01T09:36:39.440

/usr/bin/cygserver-config: line 181: cygrunsrv: command not found, C:/cygwin64/bin is on the PATH, running as administrator... – Troyseph – 2017-10-16T10:31:53.247

1@Troyseph Does C:\cygwin64\bin\cygrunsrv.exe exist? Have you erroneously used forward slashes (/) in your %PATH%? Is the cygrunsrv package installed? – bobbogo – 2017-10-16T10:45:13.057

Ah, C:\cygwin64\bin\cygrunsrv.exe doesn't exist, installed the cygrunsrv: NT/W2K service initiator package and all is working. – Troyseph – 2017-10-16T12:03:59.217

run cygserver-config as in the answer, stopped working cygwin at all (process fail to start) – user174962 – 2019-03-08T07:25:48.120

Um, how about a clue about the failure? Did /etc/cygserver.conf get created? – bobbogo – 2019-03-08T15:52:55.603

2

I just tried this, but I ran into a problem: after a reboot, Cygwin Terminal failed to run. The solution for that is explained here (summary: run services.msc and set cygserver to Automatic (Delayed Start)).

– Keith Thompson – 2019-11-28T01:12:55.697

I also wanted to note that the solution started to work for me only after system reboot. – Mikhail Gerasimov – 2020-02-14T13:48:00.797

14

It seems to be to do with authentication. For me, 40 seconds to get something to execute. After that though, process creation in that process tree seems pretty quick.

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

So, I

  • Made a cache of my local authentication, and my own Active Directory (AD) credentials

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • Told Cygwin just to use these two files

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

I killed all Cygwin processes and started again. Everything now runs nice and fast. I will remove this hack on every Cygwin DLL file update and see how I get on.

This is just a sketch—you will at least want to keep backups!

EDIT

Deprecated. See my more recent answer to this question for a better (IMHO) solution.

bobbogo

Posted 2015-02-12T11:33:02.387

Reputation: 1 002

1worked for me... and didn't have to install a service! – Droj – 2017-06-16T16:33:18.100

@bobbogo Your answer is at the bottom for me. Which answer are you referring to in your edit at the end? Thanks! – jpaugh – 2018-03-16T17:59:23.223

good to know about this, although it can't explain why "All cygwin commands ... have a ~10-20 second lag before they execute". – philwalk – 2018-03-20T17:08:11.297

@philwalk I think it does. The problem is that at start-up Cygwin has to populate its user database. This takes a long time when you are inside a big windoze domain. Not every command suffers this delay, only the first in any process tree. – bobbogo – 2018-03-21T11:28:06.900

2

As a footnote, I just found that I had to rebuild the passwd and group files after a Cygwin update. As the slow behaviour was happening again, the autorebase part of the install took several days to complete.

I also did not need to modify the default nsswitch.conf on my (Windows 10) system.

By the way, the slow behaviour also showed itself with the Windows command prompt and portable applications. Some portable applications took several hours to produce a window when started.

jfdawson

Posted 2015-02-12T11:33:02.387

Reputation: 21

What do you mean rebuild them? Just make new, empty versions of them? – user13743 – 2019-06-17T23:51:22.777

2

Read the update below, this turned out not to be the issue.

I've been suffering from an extreme version of this problem, although it's intermittent. When the problem exists, all commands take between 20 seconds and in the most extreme cases several minutes. It will occur for several days, and then it will go away for several days. BTW, I have an extremely fast system with lots of DRAM, SSD drives, etc.

I now finally have a candidate theory that might explain things. I just updated Cygwin via setup-x86_64.exe (which I do infrequently) and afterwards things are extremely responsive again (literally 1000s of times faster than before). I'm guessing the rebaseall at the end of the update is what made the difference.

Update: the speedup I saw before was apparently a coincidence; when the problem reappeared a month later, this didn't fix it. It turns out that disabling Windows Defender live protection instantly resolved the slowdown.

philwalk

Posted 2015-02-12T11:33:02.387

Reputation: 374

3disabling Windows Defender live protection instantly resolved the slowdown - known issue – gavenkoa – 2019-01-07T22:47:06.767

1

This is how this problem manifested for me. For the first, say 20, commands entered at the Cygwin prompt it was fast, but then it abruptly became painfully slow.

I tried the above authentication fix. It didn't work for me.

The Cygwin FAQ reports that Cygwin doesn't like spaces in user or group names. See My Windows logon name has a space in it, will this cause problems?.

My group name had a space in it, so I changed it in the /etc/group file generated in the authentication fix to an underscore. That didn't work either.

Other postings for the same problem have reported it to result for the virus scanner. I replaced my existing virus scanner (System Center Endpoint Protection) with Sophos. That fixed the problem for me.

I hope this helps.

Desmond Campbell

Posted 2015-02-12T11:33:02.387

Reputation: 11

0

I've had an issue with slow execution of builds for a while on cygwin.

I was forced to update yesterday and ran into the issue of rebaseall simply failing to execute. This forced me to dig into other things and I found a report that Trusteer Rapport/End Point Protection has been known to cause issues with rebaseall, and slow response times. So I removed it, via the normal Windows Uninstall Programs method via Control Panel.

I then did a rebaseall from the dash interface run as admin.

So this means, (win7) from the start menu type dash. The dash shortcut will appear, Right click to run as administrator. Then when it's up, execute :

/usr/bin/rebaseall -v

Go for a coffee... It will sit for a few seconds before it should display output, if it sits and does nothing for more than 5 minutes, you have another issue.

This fixed the rebaseall, but has also massively increased the speed of my build. Worth checking to see if you have it installed, try removing it.

Rob

Posted 2015-02-12T11:33:02.387

Reputation: 1

Can you describe the step(s) that you took in sufficient detail to allow somebody else to do them? … Please do not respond in comments; [edit] your answer to make it clearer and more complete. – Scott – 2019-05-17T06:02:51.660

On windows 10, the location for dash was c:\msys64\user\bin\dash.exe. In order to run it as administrator, I had to create a shortcut on my desktop to it. Unfortunately, this did not fix my slow cygwin : ( – user13743 – 2019-06-17T23:50:53.580