Alto uso de CPU com wineconsole sendo executado em segundo plano

3

Eu tenho um (muito simples) aplicativo de console do Windows que eu quero rodar em um servidor Linux usando o Wine. Quando eu apenas corro do terminal por SSH como

wine myapp.exe

tudo funciona muito bem. Funciona bem, faz tudo o que deveria e o uso da CPU é muito baixo (cerca de 5%).

Os problemas começam quando tento executá-lo em segundo plano. Até mesmo coisas simples como

nohup wine myapp.exe

faz com que o uso da CPU suba rapidamente para 100% (um núcleo completo). Redirecionar a saída para / dev / null etc. não ajuda.

Eu tentei executá-lo usando o upstart com as seguintes configurações:

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec sudo -H -u myuser wine /path/to/my/app.exe &> /dev/null

O uso da CPU foi de 100%. Eu tentei várias outras opções, até que descobri que a seguinte versão (com wineconsole usado em vez de vinho e o "-b" switch adicionado ao sudo) funciona muito bem (uso da CPU 5-7%):

exec sudo -b -H -u myuser wineconsole /path/to/my/app.exe

O problema é que, se eu o executo assim, o upstart não rastreia o pid e assim o respawn etc. não funciona. Quando eu adiciono o "fork esperado" à configuração, o uso da CPU sobe novamente para 100%. Quando eu adiciono redirecionamento para / dev / null, o uso da CPU sobe para 100%. Basicamente, qualquer coisa que eu faça faz com que o uso da CPU aumente para 100%.

Você tem alguma idéia do que pode causar esse efeito?

    
por Vasily Alexeev 05.02.2014 / 14:26

2 respostas

2

Finalmente encontrei a fonte do problema e uma solução (embora a solução definitivamente não seja perfeita).

O problema é causado pelo redirecionamento de entrada. Quando a entrada do teclado é substituída por / dev / null, algo dentro do wine ou do programa (eu não investiguei) aparentemente entra em um loop infinito de execução rápida que causa alta carga de CPU.

A solução que encontrei é adicionar "proprietário do console" à configuração do Upstart para que ele conecte o processo ao console. Depois disso eu fui capaz de redirecionar a saída corretamente:)

Como o programa está sendo executado em um servidor dedicado em um data center, essa configuração não parece causar nenhum problema.

    
por 11.02.2014 / 18:36
0

Eu tive o mesmo problema. Solução para mim: primeiro iniciar uma tela Xvfb e exportar DISPLAY =: 1.0 & comando wineconsole

    
por 07.04.2015 / 00:27