4

I've written some multi-thread test, and now I want to be sure that the highest CPU usage of this test is equal to 100 * CPU_NUMBER of current machine. Is it possible to do?

UPD 0: I'm talking about Linux system.

1

I think that you're looking for sar. SAR stands for System Activty Report. It's used in unix-like operating systems to report about CPU, memory and IO usage, collected by sysstat.

Then, sysatat can be configured to Monitor individual processes. Link

How often it collects, and how long sar keeps reports is decided on the first setup.

You just want to note that such a data collection is not "free" so I won't keep it on on production servers.

After it is configured it will be easy for you to extract datas from reports in your script by using the sar command, grep and awk.

You didn't specified what OS are you working on, so I encourage you to search how to set up sar/sysstat on your distro.

2

pidstat which is usually part of the sysstat package can monitor a single process id and print statistics on each of its threads. For example, for a running chrome browser:

$ pidstat -t -p 27680 1
17:17:36   TGID    TID    %usr %system  %guest    %CPU CPU  Command
17:17:37  27680      -   13.00    3.00    0.00   16.00   0  chrome
17:17:37      -  27680    9.00    1.00    0.00   10.00   0  |__chrome
17:17:37      -  27712    2.00    1.00    0.00    3.00   1  |__Chrome_IOThread
17:17:37      -  27714    2.00    0.00    0.00    2.00   1  |__CompositorTileW

This 1-second sample has many threads with 0% cpu which I have removed. I understand that 100% means just 1 cpu wholly occupied. There is a -I flag to divide this by the number of cpus.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.