I like iostat, but...
Andriy Gapon
avg at FreeBSD.org
Mon Sep 22 21:30:52 UTC 2014
On 23/09/2014 00:22, David Wolfskill wrote:
> ... I rather wish I could get the same information via sysctl. (Well,
> something seems to be available via the "opaque" kern.devstat.all
> sysctl(8) variable, but sysctl(8) doesn't display all of it, and parsing
> it seems as if that would require knowledge about the internals of the
> system where the data were acquired.)
Perhaps sysutils/devstat could be of help?
> If iostat(8) could be taught to (optionally) provide a timestamp, that
> might suffice.
>
> The problem I'm trying to solve is this: I need to be able to acquire
> various resource counters (along with timestamps), so I can post-process
> the acquired data (generally, on a system other than the one where the
> data were gathered) in order to be able to see how the
> resource-consumption changes over the duration of a moderately
> long-running task (typically. 0.5 - 8 hrs.).
>
> I have (with some success) cobbled up a shell script to do much of
> this. (And yes, I've measured the behavior of some typical workloads
> in this environment vs. merely running the workload under "/usr/bin/time
> -lpo", with 5 test iterations for each, there was no statistically
> significant difference with a 95% confidence interval.)
>
> The script:
>
> * Parses its arguments, and from that information constructs a command
> line (which invokes sysctl(8), and (optionally) netstat(1), and
> pipes that output through awk(1)).
>
> * Determines the current time-of-day ("date +%s")
>
> * Enters a loop, which:
> + "eval"s the constructed command line (causing a timestamped line of
> information to be spat out standard output); the timestamp is from
> the most-recently-acquired time-of-day.
> + Determines the current time-of-day ("date +%s").
> + Based on the desired sampling interval, calculates the number of
> seconds to sleep. (If I could get strftime to format fractional
> seconds, that could be handy.)
> + Sleeps for the calculated interval.
> + Determines the current time-of-day ("date +%s").
>
> And for most things I care about, it works fairly well.
>
> Further, I do this as a shell script precisely so I don't need to build
> a new version of the tool for a new target system: the script purposely
> only requires tools that are in base FreeBSD, and requires no special
> privilege to use.
>
> For some sample graphs I have generated from this kind of data, please
> see <http://www.catwhisker.org/~david/FreeBSD/bmake/>.
>
> I believe that having an ability to correlate the "iostat -x"
> information with the CPU, load average, and memory utilization would be
> useful -- but I don't see a reasonable way to go about it. If anyone
> has suggestions, I'm listening. :-}
--
Andriy Gapon
More information about the freebsd-performance
mailing list