Como posso impedir que o Windows Server 2003 corte o conjunto de trabalho de um processo?

6

Existem dois problemas diferentes, embora eu acredite relacionado, que tenho com o modo como o Windows Server 2003 lida com os conjuntos de trabalho dos processos.

Primeiro, há aplicativos GUI em execução na sessão de console cujo conjunto de trabalho é cortado, quando sua janela de nível superior é minimizada . Eu sei que é bastante incomum ter processos de servidor em execução com uma GUI, mas esses são aplicativos legados que fazem coisas importantes sobre as quais não posso fazer nada.

Segundo, há um servidor de banco de dados de longa execução que aloca muita memória quando um cliente se conecta, mas não toca nessa memória até que outro cliente se conecte. Nesse meio tempo, vários dias podem passar e o sistema operacional parece pensar que é motivo suficiente para cortar o conjunto de trabalho do processo.

Em ambos os casos, há muita RAM física disponível (vários GB a mais do que os aplicativos precisariam), então gostaria que o Windows não aparasse seus conjuntos de trabalho. Existe uma configuração para configurar isso? Esses são todos os aplicativos de terceiros, portanto, alterar a alocação de memória ou bloqueio de páginas na memória não são opções viáveis.

    
por PersonalNexus 22.02.2012 / 21:33

2 respostas

2

O artigo que você postou tem todas as informações que você está pedindo, embora eu entenda que não é o que você quer ouvir.

Em primeiro lugar, não sei quais são seus aplicativos ou o que eles fazem ou por que seus conjuntos de trabalho não estão sendo aparados é tão importante, ou qualquer outra informação tangencial que possa ajudá-lo a resolver o problema que o comportamento do conjunto de trabalho do processo está contribuindo para. Parece-me que você tem um aplicativo mal projetado que precisa suportar e está tentando alterar o comportamento do Windows para compensar um aplicativo mal projetado. Essa é uma situação ruim, e me desculpe.

Dito isso, tentarei responder sua pergunta:

Você está descrevendo um mecanismo básico e fundamental de como o Windows foi projetado. O comportamento padrão do botão Minimizar na janela de uma GUI vai chamar ShowWindow (hWnd, SW_MINIMIZE), que corta o set de trabalho do processo - fim da história.

Os criadores desse aplicativo mal projetado que você está procurando poderiam escolherem interceptar a mensagem WM_SYSCOMMAND que ocorre quando um usuário clica no botão Minimizar janela e chama ShowWindow (hWnd, SW_SHOWMINIMIZED) ( que não apara o WS) em vez de ShowWindow (hWnd, SW_MINIMIZE), mas não o fizeram. Se você não puder contatar os desenvolvedores deste aplicativo e pedir que eles tentem novamente, desta vez com um aplicativo servidor real , então você está preso a esse comportamento.

    
por 14.08.2012 / 14:58
0

Em resposta a Harry Johnston, Não .. não ter um arquivo de paginação NÃO resolve o problema ...

Basicamente, não há como impedir que o Windows use um arquivo de paginação ... e quando eu digo de jeito nenhum .. eu quero dizer NO WAY .. ele vai para página em disco, não importa o quanto você não quer que ele .

Se você disser QUALQUER versão do Windows do Windows NT para 8.1 e / ou suas contrapartes para NÃO usar um arquivo de paginação, adivinhe o que acontece quando você começa a ficar perto do ponto de ficar sem memória? (Vi isso acontecer em todas as versões de desktop e servidor do Windows)

O Windows aparecerá em LOCK UP por cerca de 5 a 10 segundos. Depois, voltará e parecerá funcionar. O que ele fez? Ele criou apenas um arquivo de paginação temporário de emergência no volume do sistema no qual o Windows reside e continuará a usá-lo até que você reinicialize o sistema.

Geralmente ele faz isso DIREITO ao mesmo tempo em que você começa a exibir a caixa de erro que está com poucos recursos ou memória (deve-se apenas dizer que a memória como recursos do sistema em janelas de 64 bits é virtualmente ilimitada agora) ....

Na verdade, desabilitar o sistema de arquivos de paginação causará mais problemas do que ter um número de aplicativos de desktop e de servidor, EXPECTAR para ver o arquivo de paginação e EXPECITAR para apagar a memória. Por quê? Simples .. duas palavras: COMPRAR COBRANÇA

Quando um programa é carregado, ele pode solicitar memória e esperar que esteja disponível .. ou pode alocar até 2 GB de memória no 32bit OS, 4GB para 32bit em um sistema operacional de 64 bits ou superior para 128 TB para um 64 bits em um sistema operacional de 64 bits

Portanto, se seu servidor tiver 16 GB de memória e você carregar um banco de dados (e a maioria deles costuma usar seu próprio gerenciamento de memória e armazenamento em cache internamente), eles geralmente alocarão 1,2,4 ou até 8 GB de memória. ... concedido pode não precisar de 8GB por um longo tempo ... mas onde você acha que toda a memória usada vai ser? O Windows não quer que ele fique em memória RAM física e nem o aplicativo. Se o aplicativo for especialmente codificado para trocar essa memória não-distribuída, ela irá falhar. Se não for codificado para fazer isso ... então cabe ao Windows trocar a memória da forma que achar melhor ... mas sem um arquivo de paginação ... você está DESPERDIÇANDO RAM ... em casos como esse ... NÃO ter um arquivo de troca reduzirá muito o desempenho.

Você não precisa de um arquivo de swap ENORME .. mas se o seu servidor tiver 16GB de memória ... um swapfile de 4GB é um bom número lil ... Não é muito grande para onde ele irá espancar a unidade conforme ela ganhou. t .. e o Windows pode trocar páginas em uma saída conforme necessário, com pouco ou nenhum impacto no desempenho.

O Adobe Photoshop é outro porco ram ... a versão de 64 bits vai prender 4GB de memória, quer você o tenha ... ou não ... concedido, ele só usará cerca de 512MB para começar ... mas se você começar a trabalhar com Fotos grandes, você pode facilmente passar mais de 4 GB de uso de memória ...

No final, é melhor E seguro ter ALGUMA forma de arquivo de paginação ... mesmo que seja apenas 512MB ... mais 512MB garante que você pode pelo menos obter um dump mínimo de kernel e um dump de erro se o sistema falhar. Para um despejo CHEIO, você precisa de um arquivo de paginação em C: (ou de onde as janelas são inicializadas) igual ao físico para um despejo de memória TOTAL (geralmente não é necessário e leva muito tempo)

    
por 11.04.2014 / 14:07