Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Sep 2014 00:29:22 +0300
From:      Andriy Gapon <avg@FreeBSD.org>
To:        David Wolfskill <david@catwhisker.org>, freebsd-performance@FreeBSD.org
Subject:   Re: I like iostat, but...
Message-ID:  <542094B2.5040302@FreeBSD.org>
In-Reply-To: <20140922212209.GA9619@albert.catwhisker.org>
References:  <20140922212209.GA9619@albert.catwhisker.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?542094B2.5040302>