Есть ли способ определить потребление памяти отдельными заданиями в iSeries?

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

Вопрос

У нас есть смесь приложений .Net, которые подключаются через ODBC и DB2 Connect к LPAR iSeries с номером V5R4.У нас также есть несколько пакетных заданий, запускаемых на машине (в основном COBOL, RPG и прямой CL).В определенные периоды дня мы сталкиваемся с большим количеством сбоев страниц и пытаемся определить, какие приложения могут вызывать проблему.

Не приобретая ни одного из десятков дорогих инструментов, представленных на рынке (т.е.iDoctor), есть ли способ увидеть объем памяти, потребляемый каждым заданием.Большинству наших заданий не хватает пула 2, и мы видим улучшение производительности, когда добавляем память в этот пул, и простой просмотр wrksyssts не сильно помогает.Мы хотели бы изолировать проблемные задания и посмотреть, можно ли внести некоторые изменения для повышения производительности и уменьшения ненужного использования памяти.

Это было полезно?

Решение

Если вы не против Java, JVM или небольшого кодирования...

Получите следующее (все доступно для Windows, Linux, AIX, Solaris и т. д.).Мак?):

  • классный потому что я как бы ненавижу Java многословность
  • JTOpen это версия IBM с открытым исходным кодом IBM Toolbox для Java который поставляется с Система доступа и который вы должны были получить вместе с вашим сервером

Имейте в виду, что JTOpen — это просто старая библиотека Java, поэтому вы можете использовать любой язык JVM который может получить доступ к обычным библиотекам Java.Я использую Groovy, потому что мне это нравится.Не волнуйтесь, Groovy хорош.

Вот оно.

 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()

Вот и все.Есть много других ценностей работы, играть с.Мне никогда не приходилось беспокоиться об этой статистике вакансий, поэтому я не знаю, правильно ли сбрасывать статистику.

Очень сложно знать номер задания и другие подробности о задании, чтобы создать объект «Задание».Вот почему Список вакансий это так приятно.Вы также можете запускать команды CL из вашего сценария, если это полезно.

Я думаю, что IBM использует эту библиотеку для создания Ops Navigator, так что, возможно, вы уже используете ее некоторое время.

Другие советы

Кажется, это немного помогает.

- В Навигаторе iSeries разверните Мои соединения > соединение > Управление работой > Пулы памяти > Активные бассейны или общие бассейны. - Щелкните правой кнопкой мыши пул памяти, который вы хотите использовать, и выберите Вакансии. - Настройте представление для включения столбца «Ошибки страницы»

По крайней мере, я вижу, на каких рабочих местах возникают проблемы. В следующий раз, когда возникнет проблема, мы посмотрим, поможет ли она найти приложение (я), нарушающее работу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top