1

我们混合了 .Net 应用程序,它们通过 ODBC 和 DB2 Connect 连接到 V5R4 的 iSeries LPAR。我们还有一些在机器上本地运行的批处理作业(主要是 COBOL、RPG 和直接 CL)。在一天中的某些时段,我们会遇到严重的页面错误,并试图确定哪些应用程序可能会导致问题。

无需购买市场上数十种昂贵工具(即 iDoctor)中的任何一种,有没有办法查看每个作业消耗的内存量。我们的大多数作业都用完了池 2,当我们向该池添加内存时,我们确实看到性能有所提高,而仅仅查看 wrksyssts 并没有多大帮助。我们想隔离有问题的作业,看看是否可以进行一些修改以提高性能并减少不必要的内存使用。

4

2 回答 2

3

如果您不介意 Java 或其 jvm 或做一些编码......

获取以下内容(全部适用于 Windows、Linux、AIX、Solaris 等……Mac?):

请记住,JTOpen 只是一个普通的旧 Java 库,因此您可以使用任何可以访问普通 Java 库的 jvm 语言。我正在使用 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()

就是这样。还有许多其他工作价值可以发挥。我从来不用担心这些工作统计数据,所以我不知道重置统计数据是否正确。

为了创建 Job 对象,实际知道作业编号和有关作业的其他详细信息是一件痛苦的事情。这就是JobList如此出色的原因。如果有用,您还可以从脚本运行 CL 命令。

我认为 IBM 使用这个库来构建 Ops Navigator,所以也许您已经使用它一段时间了。

于 2009-04-28T17:14:03.770 回答
0

这似乎有点帮助:

-- 在 iSeries Navigator 中,展开我的连接 > 连接 > 工作管理 > 内存池 > 活动池或共享池。-- 右键单击​​要使用的内存池,然后单击作业。-- 自定义视图以包含 Page Faults 列

至少我可以看到哪些工作存在错误问题。下次出现问题时,我们会看看它是否有助于找到有问题的应用程序。

于 2009-01-15T14:41:24.627 回答