Cygwin do Windows é muito lento / lento


22

De repente, todos os comandos Cygwin iniciados na linha de comando do Windows têm um atraso de ~ 10 a 20 segundos antes de serem executados, para que o Cygwin se torne totalmente inutilizável. Eu já tentei reinstalar sem sucesso.

Executar os comandos de dentro de uma janela do shell Bash funciona bem (ao iniciar o Bash, vejo o atraso). A remoção de todas as entradas da minha variável PATH local não influencia. Eu uso o Windows 7 x64 e Cygwin x64 v 1.7.34 (0.285 / 5/3).


não sei, mas é o mesmo do cmd.exe quando você não inicia o cygwin.bat? por exemploC:\cygwin\bin>.\ls.exe <ENTER>
barlop

Alguma atualização, por favor?
yO_

Respostas:


15

Ocasionalmente, trabalho em um domínio do Windows com milhares de usuários.

Não quero fazer nenhuma abordagem de melhor palpite. Eu preferiria que o Cygwin armazenasse em cache as informações do usuário conforme necessário. Acontece que isso é fácil de fazer.

Basta executar cygserverno login.

Para configurar isso corretamente, execute cygserver-configapenas uma vez. Isso será configurado cygserverpara ser executado como um serviço do Windows com as credenciais corretas. Faça isso na janela do administrador do 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!

O que cygserverfaz por mim?

Veja a documentação no site da Cygwin . Basicamente, ele faz o cache do usuário, além de garantir que o IPC funcione entre todos os processos Cygwin .

Sua milhagem pode variar, é claro, mas agora é minha maneira preferida de trabalhar. Eu deveria ter feito isso anos atrás.


Isso é ótimo! obrigado por compartilhar depois de tanto tempo time.Using este acesso a arquivos através de / cygdrive também é muito mais rápido agora em comparação com antes
85fce

/usr/bin/cygserver-config: line 181: cygrunsrv: command not found, C:/cygwin64/binEstá no PATH, funcionando como administrador ...
Troyseph

1
@Troyseph Existe C:\cygwin64\bin\cygrunsrv.exe? Você usou erroneamente barras ( /) no seu %PATH%? O pacote cygrunsrv está instalado?
bobbogo

Ah, C:\cygwin64\bin\cygrunsrv.exenão existe, instalei o cygrunsrv: NT/W2K service initiatorpacote e tudo está funcionando.
Troyseph

executar cygserver-config como na resposta, parou de funcionar cygwin em tudo (processo falhar ao iniciar)
user174962

12

Parece ter a ver com autenticação. Para mim, 40 segundos para conseguir algo para executar. Depois disso, a criação do processo nessa árvore de processos parece bem rápida.

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

Então eu

  • Fiz um cache da minha autenticação local e minhas próprias credenciais do Active Directory (AD)

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • Disse Cygwin apenas para usar esses dois arquivos

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

Eu matei todos os processos Cygwin e comecei novamente. Tudo agora corre bem e rápido. Vou remover esse hack em todas as atualizações de arquivos DLL do Cygwin e ver como eu vou.

Este é apenas um esboço - você pelo menos desejará manter os backups!

EDITAR

Descontinuada. Veja minha resposta mais recente a esta pergunta para uma solução melhor (IMHO).


trabalhou para mim ... e não precisava instalar um serviço!
Droj

@bobbogo Sua resposta está na parte inferior para mim. A que resposta você se refere na sua edição no final? Obrigado!
jpaugh

É bom saber sobre isso, embora não possa explicar por que "Todos os comandos do cygwin ... têm um atraso de ~ 10 a 20 segundos antes de serem executados".
20918 philadelphia

@philwalk Eu acho que sim. O problema é que, na inicialização, o Cygwin precisa preencher seu banco de dados de usuários. Isso leva muito tempo quando você está dentro de um grande domínio pendente. Nem todo comando sofre esse atraso, apenas o primeiro em qualquer árvore de processos.
precisa saber é

2

Leia a atualização abaixo, isso acabou não sendo o problema.

Eu sofro de uma versão extrema desse problema, embora seja intermitente. Quando o problema existe, todos os comandos levam entre 20 segundos e, nos casos mais extremos, vários minutos. Isso ocorrerá por vários dias e depois desaparecerá por vários dias. BTW, eu tenho um sistema extremamente rápido com muitas unidades de DRAM, SSD, etc.

Agora, finalmente, tenho uma teoria candidata que pode explicar as coisas. Acabei de atualizar o Cygwin via setup-x86_64.exe (o que eu faço com pouca frequência) e depois as coisas são extremamente responsivas novamente (literalmente milhares de vezes mais rápido que antes). Acho que o rebaseall no final da atualização foi o que fez a diferença.

Atualização: a aceleração que vi antes foi aparentemente uma coincidência; quando o problema reapareceu um mês depois, isso não foi corrigido. Acontece que a desativação da proteção ao vivo do Windows Defender resolveu instantaneamente a desaceleração.


2
desativação do Windows Defender proteção ao vivo instantaneamente resolvidas a desaceleração - conhecido questão
gavenkoa

1

Como nota de rodapé, acabei de descobrir que precisava reconstruir os arquivos passwde groupapós uma atualização do Cygwin. Como o comportamento lento estava acontecendo novamente, a parte da base automática da instalação levou vários dias para ser concluída.

Também não precisei modificar o nsswitch.conf padrão no meu sistema (Windows 10).

A propósito, o comportamento lento também se mostrou com o prompt de comando do Windows e aplicativos portáteis. Alguns aplicativos portáteis levaram várias horas para produzir uma janela quando iniciados.


Como assim, reconstruí-los? Basta fazer versões novas e vazias deles?
user13743

1

Foi assim que esse problema se manifestou para mim. No primeiro, digamos 20, os comandos digitados no prompt do Cygwin, eram rápidos, mas depois abruptamente se tornaram dolorosamente lentos.

Eu tentei a correção de autenticação acima. Não funcionou para mim.

As Perguntas frequentes do Cygwin relatam que o Cygwin não gosta de espaços nos nomes de usuários ou grupos. Consulte Meu nome de logon do Windows possui um espaço, isso causará problemas? .

O nome do meu grupo tinha um espaço, então eu o alterei no /etc/grouparquivo gerado na correção de autenticação para um sublinhado. Isso também não funcionou.

Outras postagens para o mesmo problema relataram que resultou no antivírus. Substituí meu antivírus existente (System Center Endpoint Protection) pelo Sophos. Isso resolveu o problema para mim.

Eu espero que isso ajude.


0

Eu tive um problema com a execução lenta de compilações por um tempo no cygwin.

Fui forçado a atualizar ontem e me deparei com a questão do rebaseall simplesmente por não executar. Isso me forçou a investigar outras coisas e encontrei um relatório que sabia que o Trusteer Rapport / End Point Protection causava problemas com rebaseall e tempos de resposta lentos. Então, eu o removi, através do método normal de desinstalação de programas do Windows, no Painel de controle.

Em seguida, fiz um rebaseall a partir da interface do dash como administrador.

Então isso significa (win7) no tipo de menu Iniciar, traço. O atalho do traço aparecerá. Clique com o botão direito do mouse para executar como administrador. Então, quando terminar, execute:

/ usr / bin / rebaseall -v

Vá tomar um café ... Ele ficará parado por alguns segundos antes de exibir a saída; se ficar parado e não fizer nada por mais de 5 minutos, você terá outro problema.

Isso corrigiu o rebaseall, mas também aumentou enormemente a velocidade da minha compilação. Vale a pena conferir para ver se você o tem instalado, tente removê-lo.


Você pode descrever as etapas que você executou em detalhes suficientes para permitir que outra pessoa as execute? … Por favor, não responda nos comentários; edite  sua resposta para torná-la mais clara e completa.
1776 Scott

No Windows 10, o local para o traço era c:\msys64\user\bin\dash.exe. Para executá-lo como administrador, tive que criar um atalho na área de trabalho para ele. Infelizmente, isso não corrigiu meu cygwin lento: (
user13743 17/07/1919
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.