有什么方法可以确定 iSeries 上单个作业的内存消耗吗?

发布于 2024-07-13 02:00:11 字数 339 浏览 3 评论 0原文

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

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

We have a mixture of .Net apps that connect through ODBC and DB2 Connect to an iSeries LPAR that's at V5R4. We also have some batch jobs running natively on the machine (COBOL, RPG, and straight CL mostly). During certain periods of the day, we experience high page faulting and are trying to determine which apps might be causing the problem.

Without purchasing any of the dozens of expensive tools on the market (i.e. iDoctor), is there any way to see the amount of memory being consumed by each job. Most of our jobs are running out of pool 2 and we do see improved performance when we add memory to that pool and simply looking at wrksyssts doesn't help much. We'd like to isolate the problem jobs and see if some modifications can be made to improve performance and reduce unnecessary memory utilization.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你好,陌生人 2024-07-20 02:00:12

这似乎有点帮助:

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

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

This seems to help a little:

-- In iSeries Navigator, expand My Connections > connection > Work Management > Memory Pools > Active Pools or Shared Pools.
-- Right-click the memory pool you want to use and click Jobs.
-- Customize view to include the Page Faults column

At least I can see which jobs are having faulting issues. The next time issue comes up, we'll see if it helps find the offending app(s).

前事休说 2024-07-20 02:00:11

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

获取以下内容(所有这些都适用于 Windows、Linux、AIX、Solaris 等...Mac?):

请记住,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()

就是这样。 还有许多其他工作价值 。 我从来没有必要费心处理这些工作统计数据,所以我不知道重置统计数据是否正确。

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

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

If you don't mind Java or its jvm or doing a little coding ...

Get the following (all available for Windows, Linux, AIX, Solaris, etc ... Mac?):

Keep in mind that JTOpen is just a plain old Java library so that you can use any jvm language that can access ordinary java libraries. I'm using Groovy cause I'm having a thing for it. Don't worry, Groovy is nice.

Here goes.

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

That's it. There are many other job values to play with. I've never had to bother with these job statistics so I do not know if resetting the statistics is the right thing.

It is a pain to actually know the job number and other details about the job in order to create the Job object. That's why JobList is so nice. You can also run CL commands from your script if that is useful.

I think IBM uses this library to build Ops Navigator so maybe you've been using this for a while already.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文