Contents[Hide]

1. ploti7z

1.1. Intel TURBO BOOST Technology

Intel TURBO BOOST is a technology implemented by Intel in certain versions of their Nehalem-, Sandy-Bridge- and Ivy-Bridge-based CPUs, including Core i5 and Core i7 that enables the processor to run above its base operating frequency via dynamic control of the CPU's "clock rate". It is activated when the operating system requests the highest performance state of the processor. Processor performance states are defined by the Advanced Configuration and Power Interface (ACPI) specification, an open standard supported by all major operating systems; no additional software or drivers are required to support the technology. The design concept behind Turbo Boost is commonly referred to as "dynamic overclocking". [SOURCE: http://en.wikipedia.org/wiki/Intel_Turbo_Boost]

Possible turbo states for a specific CPU can be found on CPU-World

1.2. Monitoring current CPU frequency

The state and frequency each Core is currently using can be monitored with i7z [root required]. Just start i7z on the system under test and watch the state and frequency information which is shown per core. It is recommended to start i7z a minute or two before you put load on the system and let it gather some data once there is no more load.

Image 1 shows an example for i7z running on a single socket system.

1.3. Logging current CPU frequency

To write the information to a logfile start i7z with the following parameters:

i7z --write a --logfile /tmp/i7z-log

For each socket a separate log file (i7z-log_0, i7z-log_1 ...) containing the UNIX time stamp and frequency per core will be created. i7z writes to the log file every two seconds.

1.4. Analyzing the log files

For this purpose, download the a small python script which can plot the i7z log files. (The Python script requires the matplotlib module). Just pass the log files as argument to the script. If you use wildcards, quote the string so Python can glob it instead of the shell:

python ploti7z.py -f "i7z-log_*"

As of version 1.2.0 you can use the switch "-s" with an integer as parameter which defines the windows size over which the data will be smoothed. The graph will be shown immediately and is saved as "ploti7z.png"

Filename Size Date & Time
A code file ploti7z_v1.3.4.py 9.88 KB 2013-08-03 11:15:37
A code file plotiostat_v1.8.3.py 24.77 KB 2016-05-12 13:03:24
A code file plotvmstat_v1.3.1.py 14.84 KB 2016-05-12 13:34:42

2. plotiostat

2.1. IOSTAT

The iostat command is used for monitoring system input/output device loading by observing the time the devices are active in relation to their average transfer rates. The iostat command generates reports that can be used to change system configuration to better balance the input/output load between physical disks.

The first report generated by the iostat command provides statistics concerning the time since the system was booted. Each subsequent report covers the time since the previous report. All statistics are reported each time the iostat command is run. The report consists of a CPU header row followed by a row of CPU statistics. On multiprocessor systems, CPU statistics are calculated system-wide as averages among all processors. A device header row is displayed followed by a line of statistics for each device that is configured. When option -n is used, an NFS header row is displayed followed by a line of statistics for each network filesystem that is mounted.

The interval parameter specifies the amount of time in seconds between each report. The first report contains statistics for the time since system startup (boot). Each subsequent report contains statistics collected during the interval since the previous report. The count parameter can be specified in conjunction with the interval parameter. If the count parameter is specified, the value of count determines the number of reports generated at interval seconds apart. If the interval parameter is specified without the count parameter, the iostat command generates reports continuously. [SOURCE: man iostat]

2.2. Using plotiostat.py

First you have to gather some data with e.g.

S_TIME_FORMAT=ISO iostat -t -xM 1 | tee iostat_ior_xs053.log

Now you can plot the data in the log file with:

python plotiostat.py -f iostat_ior_xs053.log -d sdc -c r/s -c w/s -c rMB/s -c wMB/s

You can plot any column you see in the log file, just add the -c option multiple times as seen above.

Update 1.8.0:
Added the "-l" switch to make the primary axis scale log.

Filename Size Date & Time
A code file ploti7z_v1.3.4.py 9.88 KB 2013-08-03 11:15:37
A code file plotiostat_v1.8.3.py 24.77 KB 2016-05-12 13:03:24
A code file plotvmstat_v1.3.1.py 14.84 KB 2016-05-12 13:34:42
 

3. plotvmstat

3.1. VMSTAT

vmstat reports information about processes, memory, paging, block IO, traps, disks and cpu activity.
The first report produced gives averages since the last reboot. Additional reports give information on a sampling period of length delay. The process and memory reports are instantaneous in either case.
[SOURCE: man vmstat]

3.2. Using plotvmstat.py

First you have to gather some data with e.g.

vmstat -t 1 | tee my.log

Now you can plot the data in the log file with:

python plotvmstat.py -f my.log -c cache -c num -c cs -c sy

You can plot any column you see in the log file, just add the -c option multiple times as seen above.

Update 1.3.0:
Added the "-l" switch to make the primary axis scale log.

Filename Size Date & Time
A code file ploti7z_v1.3.4.py 9.88 KB 2013-08-03 11:15:37
A code file plotiostat_v1.8.3.py 24.77 KB 2016-05-12 13:03:24
A code file plotvmstat_v1.3.1.py 14.84 KB 2016-05-12 13:34:42