IOSTAT2PCP(1)

πŸ“¦
version 7.2.2 Β· 4 versions
, in arch rolling, centos-stream 10, centos-stream 9, debian trixie, fedora 43, fedora 44, ubuntu questing, ubuntu resolute, ubuntu stonking

✨ IOSTAT2PCP(1) ✨

okay bestie, welcome to the iostat2pcp page πŸ’– this one lives in the General Commands Manual section, and it's genuinely one of those little tools that's lowkey iconic once you know what it does. no cap.


🌸 NAME 🌸

iostat2pcp β€” import iostat data and create a PCP archive


πŸ¦‹ SYNOPSIS πŸ¦‹

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

πŸ’… DESCRIPTION πŸ’…

so here's the whole vibe: iostat2pcp reads a text file that was created with iostat(1) (that's your infile, bestie) and translates it into a Performance Co-Pilot (PCP) archive with the basename outfile. and if infile is - then iostat2pcp reads from standard input, which is literally so convenient because it lets you preprocess the iostat(1) output with sed(1) or similar before it even gets there. obsessed with the flexibility tbh πŸŽ€

the resultant PCP archive can be used with all the PCP client tools β€” graph subsets of the data using pmchart(1), do data reduction and reporting, filter with the PCP inference engine pmie(1), etc. it's giving main character energy in the PCP ecosystem fr fr ✨

a series of physical files gets created with the prefix outfile. and like, here's the lineup:

  • outfile.0 β€” the performance data
  • outfile.meta β€” the metadata that describes the performance data
  • outfile.index β€” a temporal index to improve efficiency of replay operations for the archive
⚠️ if any of these files already exists, then iostat2pcp will not overwrite them and will exit with an error message. it said "not today" πŸ’€

also the first output sample from iostat(1) contains a statistical summary since boot time, and iostat2pcp ignores it β€” so the first real data set is the second one in the iostat(1) output. noted πŸ“

the best results are obtained when iostat(1) was run with its own -t flag, so each output sample is prefixed with a timestamp. even better? -t with $S_TIME_FORMAT=ISO set in the environment when iostat(1) is run, because then the timestamp includes the timezone. chef's kiss πŸ§‘β€πŸ³πŸ’‹

ngl there's a catch though: if $S_TIME_FORMAT=ISO is not used with the -t option, then iostat(1) 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. which is another reason to recommend setting $S_TIME_FORMAT=ISO. do it. trust 🫢

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)) 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.

and fun fact bestie: 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. iconic behavior honestly πŸ‘‘


πŸ’– 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) from http://freshmeat.net/projects/sysstat. periodt.

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); this is a demand-driven limitation rather than a technical limitation. so like, it could but it just doesn't, iykyk πŸ™ˆ


🌈 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).


πŸ‘‘ SEE ALSO πŸ‘‘

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


and that's the whole page bestie, you ate it up πŸ’œ this one came from the Performance Co-Pilot crew at PCP β€” go forth and import your iostat data, you've got this, slay πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from