---
name: "iostat2pcp"
section: "1"
platform: "linux"
package: "pcp"
version: "7.2.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/iostat2pcp"
---

# iostat2pcp(1)

import iostat data and create a PCP archive

## NAME

**iostat2pcp** - import iostat data and create a PCP archive

## SYNOPSIS

**iostat2pcp** \[**-v**\] \[**-S** *start*\] \[**-t** *interval*\] \[**-V** *version*\] \[**-Z** *timezone*\] *infile* *outfile*

## DESCRIPTION

**iostat2pcp** reads a text file created with [**iostat**(1)](/iostat/1.md) (*infile*) and translates this into a Performance Co-Pilot (PCP) archive with the basename *outfile*. If *infile* is \`\`-'' then *iostat2pcp* reads from standard input, allowing easy preprocessing of the [*iostat*(1)](/iostat/1.md) output with [*sed*(1)](/sed/1.md) or similar.

The resultant PCP archive may be used with all the PCP client tools to graph subsets of the data using [**pmchart**(1)](/pmchart/1.md), perform data reduction and reporting, filter with the PCP inference engine [**pmie**(1)](/pmie/1.md), etc.

A series of physical files will be created with the prefix *outfile*. These are *outfile***.0** (the performance data), *outfile***.meta** (the metadata that describes the performance data) and *outfile***.index** (a temporal index to improve efficiency of replay operations for the archive). If any of these files exists already, then **iostat2pcp** will **not** overwrite them and will exit with an error message.

The first output sample from [*iostat*(1)](/iostat/1.md) contains a statistical summary since boot time and is ignored by *iostat2pcp*, so the first real data set is the second one in the [*iostat*(1)](/iostat/1.md) output.

The best results are obtained when [*iostat*(1)](/iostat/1.md) was run with its own **-t** flag, so each output sample is prefixed with a timestamp. Even better is **-t** with $**S\_TIME\_FORMAT=ISO** set in environment when [*iostat*(1)](/iostat/1.md) is run, in which case the timestamp includes the timezone.

Note that if $**S\_TIME\_FORMAT=ISO** is **not** used with the **-t** option then [*iostat*(1)](/iostat/1.md) may produce a timestamp controlled by **LC\_TIME** from the locale that is in a format *iostat2pcp* cannot parse. The formats for the timestamp that *iostat2pcp* accepts are illustrated by these examples:

- **2013-07-06T21:34:39+1000**

  (for the $**S\_TIME\_FORMAT=ISO**).

- **2013-07-06 21:34:39**

  (for some of the European formats, e.g. de\_AT, de\_BE, de\_LU and en\_DK.utf8).

- **06/07/13 21:34:39**

  (for all of the $**LC\_TIME** settings for English locales outside North America, e.g. en\_AU, en\_GB, en\_IE, en\_NZ, en\_SG and en\_ZA, and all the Spanish locales, e.g. es\_ES, es\_MX and es\_AR).

In particular, note that some common North American $**LC\_TIME** settings will **not** work with *iostat2pcp* (namely, en\_US, POSIX and C) because they use the MM/DD format which may be incorrectly converted with the assumed DD/MM format. This is another reason to recommend setting $**S\_TIME\_FORMAT=ISO**.

If there are no timestamps in the input stream, *iostat2pcp* will try and deduce the sample interval if basic Disk data (**-d** option for [*iostat*(1)](/iostat/1.md)) is found. If this fails, then the **-t** option may be used to specify the sample *interval* in seconds. This option is ignored if timestamps are found in the input stream.

The **-S** option may be used to specify as start time for the first real sample in *infile*, where *start* must have the format HH:MM:SS. This option is ignored if timestamps are found in the input stream.

The **-V** option specifies the version for the output PCP archive. By default the archive version **$PCP\_ARCHIVE\_VERSION** (set to 3 in current PCP releases) is used, and the only values currently supported for *version* are 2 or 3.

The **-Z** option may be used to specify a timezone. It must have the format +HHMM (for hours and minutes East of UTC) or -HHMM (for hours and minutes West of UTC). Note in particular that **neither** the **zoneinfo** (aka Olson) format, e.g. Europe/Paris, nor the Posix **TZ** format, e.g. EST+5 is allowed for the **-Z** option. This option is ignored if ISO timestamps are found in the input stream. If the timezone is not specified and cannot be deduced, it defaults to \`\`UTC''.

Some additional diagnostic output is generated with the **-v** option.

**iostat2pcp** is a Perl script that uses the PCP::LogImport Perl wrapper around the PCP *libpcp\_import* library, and as such could be used as an example to develop new tools to import other types of performance data and create PCP archives.

## OPTIONS

The available command line options are:

- **-S** *start*

  Specify the *start* time for the first sample.

- **-t** *interval*

  Specify the sample *interval* in seconds.

- **-v**

  Print verbose output.

- **-Z** *timezone*

  Specify the *timezone* to use, see above.

## CAVEATS

**iostat2pcp** requires *infile* to have been created by the version of [**iostat**(1)](/iostat/1.md) from **http://freshmeat.net/projects/sysstat**.

**iostat2pcp** handles the **-c** (CPU), **-d** (Disk), **-x** (eXtended Disk) and **-p** (Partition) report formats (including their **-k**, **-m**, **-z** and **ALL** variants), but does not accommodate the **-n** (Network Filesystem) report format from [**iostat**(1)](/iostat/1.md); this is a demand-driven limitation rather than a technical limitation.

## PCP ENVIRONMENT

Environment variables with the prefix **PCP\_** are used to parameterize the file and directory names used by PCP. On each installation, the file */etc/pcp.conf* contains the local values for these variables. The **$PCP\_CONF** variable may be used to specify an alternative configuration file, as described in [**pcp.conf**(5)](/pcp.conf/5.md).

## SEE ALSO

[**iostat**(1)](/iostat/1.md), [**pmchart**(1)](/pmchart/1.md), [**pmie**(1)](/pmie/1.md), [**pmlogger**(1)](/pmlogger/1.md), [**sed**(1)](/sed/1.md), [**Date::Format**(3pm)](/Date::Format/3pm.md), [**Date::Parse**(3pm)](/Date::Parse/3pm.md), [**PCP::LogImport**(3pm)](/PCP::LogImport/3pm.md) and [**LOGIMPORT**(3)](/LOGIMPORT/3.md).
