I don’t have Performance Tools configured. If I wanted “average CPU”, I’d probably just start a Management Central system monitor that captured “CPU (average)” over a number of periods. After it ran long enough, I’d stop it and export the values.
But “Main Memory usage”? Usage by what? By job? By shared pool?
Opmanager can help you get the data on as400 too. But you will need to set your SNMP..
I guess we can collect the CPU usage from GO Perform and calculating the interactive and the batch workload of the CPU. As for the Main memory usage, am not able to ascertain as someone wants it for the system for a day or over a period. Can anyone help?
As for the Main memory usage, …
Memory usage by what? If you want memory usage by the system, it should be 100% essentially all the time (with small variations as pages are shifted between memory pools).
But if you want memory usage for a particular job, that’s a very different question. Memory usage by any job can radically fluctuate as files are opened/closed, as memory allocations are made and released.
Further, much of the memory “used” by a job will be shared by other jobs. If ten jobs are accessing the same file and extents of the file are brought into memory, the file might occupy 100MB of memory. But all ten jobs will access the same memory. Which one has to count the 100MB against it? If a data entry program is used by 100 clerks in 100 jobs, the program instructions are only brought into memory once. If the program instructions take 10MB of memory, will you count 10MB against all 100 clerks?
Further, the system employs an architecture called “single-level storage”. Every byte of DASD has a memory address that is an extension of main memory addressing. As far as any program can tell, there is no memory difference between the address of of a row in a SQL table and the address of of a program variable. That’s part of why you can obtain a memory pointer to a data space such as in a *USRSPC object and access it like program memory.
Because it’s exactly like program memory to any program on the system — including the operating system. Even the operating system has no concept of a “disk drive”. To the OS, everything is just one continuous stretch of memory. You have to run functions that call down into LIC to see that disk drives exist.
When a program uses “memory”, you have no way to tell if the memory is real or virtual.
So the question still is “Memory usage by what?”
I suspect that “memory usage” isn’t what you really need, but you aren’t certain what would be useful. What you might want to consider is tracking ‘Page Faults’ for example. That gives you a picture of how frequently virtual memory must be accessed because data isn’t currently located in real memory. Run the DSPSYSSTS command and review the F-keys. Set your DSPSYSSTS display for an Intermediate or Advanced level, and refresh the screen a few times every couple minutes or so. Some familiarity with the few values shown on that display will go a long way towards choosing some values to report.
As for CPU broken down by batch or interactive, iSeries Navigator Management Central will also provide you with that breakdown if you ask for it. You can start multiple monitors if you wish, and have them run every day. Run three monitors if needed — one to track overall average, one for interactive, a third for secondary tasks or for database capability.
Please note that I drastically glossed over a lot of details in order to get closer to concepts. My post wasn’t intended to be absolutely technically true, though it’s true enough for this discussion.