使用JT400获得所有作业的CPU利用率

时间:2018-10-21 20:31:22

标签: ibm-midrange jt400

我需要使用JT400获得所有作业的CPU利用率百分比。但是我无法一次获取一份作业列表,因为loadStatistics()仅在该清单上没有的作业级别可用(更省时)。

通过下面的代码片段,我可以一张一张地获得每个作业的CPU%,但这要花很长时间:

AS400 as400 = new AS400("hostname", "username", "password");

//Reading SystemStatus like CPU usage and hdd usage
SystemStatus systemStatus = new SystemStatus(as400);
JobList list = new JobList(as400);
 list.addJobSelectionCriteria(JobList.SELECTION_PRIMARY_JOB_STATUS_ACTIVE, Boolean.TRUE);
 list.addJobSelectionCriteria(JobList.SELECTION_PRIMARY_JOB_STATUS_JOBQ, Boolean.FALSE);
 list.addJobSelectionCriteria(JobList.SELECTION_PRIMARY_JOB_STATUS_OUTQ, Boolean.FALSE);
 list.addJobAttributeToRetrieve(Job.CPU_TIME_USED);
 list.addJobAttributeToRetrieve(Job.SUBSYSTEM);
 list.addJobAttributeToRetrieve(Job.JOB_NAME);
 list.addJobAttributeToRetrieve(Job.JOB_NUMBER);
 list.addJobAttributeToRetrieve(Job.USER_NAME);
 //list.addJobAttributeToRetrieve(Job.ELAPSED_CPU_PERCENT_USED);


 Enumeration jobs = list.getJobs();

while (jobs.hasMoreElements())  {
    Job  j= (Job) jobs.nextElement();
    j.loadStatistics();
    //TimeUnit.SECONDS.sleep(10);
    System.out.println("Name " + j.getName() + " | Job NO : " + j.getNumber() + " | User : " + j.getUser() + " | CPU USED : " + j.getCPUUsed()+ " |  CPU% : " + j.getValue(Job.ELAPSED_CPU_PERCENT_USED));
    j.resetStatistics();
    }

有没有办法一次获得所有作业的CPU%(Job.ELAPSED_CPU_PERCENT_USED)?

2 个答案:

答案 0 :(得分:2)

看看一些work management DB2 for i system services

您应该能够从这些功能中提取所需的信息。

答案 1 :(得分:0)

我后来使用com.ibm.jtopenlite.components解决了这个问题

items = input_data['input']