Existe alguma maneira para determinar um consumo de memória trabalhos individuais no iSeries?

StackOverflow https://stackoverflow.com/questions/446893

Pergunta

Temos uma mistura de .Net aplicações que se ligam através de ODBC e DB2 Connect a um iSeries LPAR que está em V5R4. Temos também alguns trabalhos em lote rodando nativamente na máquina (COBOL, RPG e CL reta principalmente). Durante certos períodos do dia, nós experimentamos alta página falha e estão tentando determinar quais aplicativos pode estar causando o problema.

Sem adquirir qualquer uma das dezenas de ferramentas caras no mercado (ou seja iDoctor), há alguma maneira de ver a quantidade de memória que está sendo consumida por cada trabalho. A maioria dos nossos trabalhos são executados fora da piscina 2 e nós vemos um melhor desempenho quando adicionamos memória para que piscina e simplesmente olhando WRKSYSSTS não ajuda muito. Nós gostaríamos de isolar os trabalhos de problemas e ver se algumas modificações podem ser feitas para melhorar o desempenho e reduzir a utilização de memória desnecessária.

Foi útil?

Solução

Se você não se importa Java ou seu JVM ou fazendo um pouco de codificação ...

Obter o seguinte (todos disponíveis para Windows, Linux, AIX, Solaris, etc ... Mac?):

Tenha em mente que JTOpen é apenas uma antiga biblioteca Java simples para que você pode usar qualquer linguagem JVM que pode acessar as bibliotecas Java comuns. Estou usando Groovy porque eu estou tendo uma coisa para ele. Não se preocupe, Groovy é bom.

Aqui vai.

 import com.ibm.as400.access.*

 // how many seconds to run  
 secs = 20 

 sys = new AS400("theserver", "paulg", "dotnet4evah")   
 job = new Job(sys, "jobname", "jobusername", "jobnumber")

 job.load()
 println "Stats for ${job.toString()}"  
 // this might look horrible
 println "total CPU time\tpage faults/sec\tdisk IO ops/sec"
 while (secs--) {
   job.loadStatistics()
   print "${job.getCPUUsed()/1000}\t\t" 
   print "${job.getValue(Job.ELAPSED_PAGE_FAULTS)}\t\t"
   println "${job.getValue(Job.ELAPSED_DISK_IO)}"
   job.resetStatistics()
   Thread.sleep(1000)
 }

 sys.disconnectAllServices()

É isso. Há muitos valores outro trabalho para jogo com . Eu nunca tinha que se preocupar com essas estatísticas de trabalho, então eu não sei se redefinir as estatísticas é a coisa certa.

É uma dor para realmente saber o número de empregos e outros detalhes sobre o trabalho, a fim de criar o objeto de trabalho. É por isso que Joblist é tão bom. Você também pode run CL comandos do seu script se que é útil.

Eu acho que a IBM utiliza esta biblioteca para construir Ops Navigator então talvez você está usando isso por um tempo já.

Outras dicas

Isto parece ajudar um pouco:

- No iSeries Navigator, expanda Minhas Conexões> Conexão> Gestão do Trabalho> pools de memória> Piscinas ativos ou pools compartilhados. - Direito do mouse no pool de memória que você deseja usar e clique em Trabalhos. - Personalizar vista a incluir a coluna falhas de página

Pelo menos eu posso ver quais trabalhos estão tendo falha questões. A questão na próxima vez vem à tona, vamos ver se ele ajuda a encontrar o aplicativo (s) agressor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top