Psio + other disk I/O by process tools

Psio is a open source tool for Solaris that runs ps and inserts an I/O column to reflect disk I/O on a per process basis. Extended forms of output can show I/O time, size and count of operations as a percent or a value, as well as a breakdown by filesystem. This is a performance tuning or troubleshooting tool.

Psio was my first disk I/O by process tool. Since writing it I have written many more that use different techniques, each having their own pros and cons. They are all on this site in the Download section below. The following table compares features. This is listed from most to least recommended.

ProgramLanguageSolarisNeeds root ImpactTechniqueI/O SizeI/O Time EventsSummary
prusage Perl, procfsAllNoMinimal blk countMaybe*NoNoYes
iosnoop Shell, DTrace10+YesMinimal bio eventsYesYesYesNo
iotop Shell, DTrace10+YesMinimal bio eventsYesYesNoYes
psio10 Perl, DTrace10+YesMinimal bio eventsYesYesYesYes
psio Perl, prex2.6 - 9YesModerate? bio eventsYesYesYesYes
psio.se SE Toolkit2.6 - 9NoMinimal blk countMaybe*NoNoYes
listprusage C, procfsAllNoMinimal blk countMaybe*NoNoYes

For troubleshooting I start with prusage as it doesn't require root access. Then I'll use iosnoop and iotop if it is Solaris 10, or psio for older Solaris.

* This is the pr_inblk and pr_oublk block counts from procfs. Originally they may well have tracked, say, 8 Kb blocks, however now they no longer take into account the event size - so they serve more as a disk event count. If you know generally how large the events should be, then the count can help you estimate the actual size. Sound vague? Even accurate size info is vague - you can't tell if it's random or sequential bytes... I/O Time turns out to be the most useful measurement.


Downloads


Screenshots


Operating Systems

These have been tested on Solaris 9 and 10, and so far have been written for Solaris only.


Feature List


Further Info


Back to Brendan Gregg's Homepage


Last updated: 02-Aug-2005