[openib-general] Re: performance counters in /sys

Michael S. Tsirkin mst at mellanox.co.il
Mon May 23 08:45:58 PDT 2005


Quoting r. Ronald G. Minnich <rminnich at lanl.gov>:
> Subject: Re: performance counters in /sys
> 
> 
> 
> On Mon, 23 May 2005, Michael S. Tsirkin wrote:
> 
> > > I guess the thing that has me mystified about all this is I can 
> > > certainly appreciate the potential 'goodness' of having 1 var/file for 
> > > user oriented access but perhaps one of the better examples of why this 
> > > is just a bad idea for programmatic access is the individual process 
> > > stats.  Is the implication of this that some day those too would be 
> > > moved to /sys as one stat per file?!?  Can you imaging trying to run top 
> > > or ps if that were to happen?
> >
> > Does someone care enough to post a benchmark?
> 
> I have one I will try to post

Good, it shall then be possible to profile it and look for a solution.

> But ... I did create a test program to see
> if I could run supermon in user mode with no kernel module. Supermon
> kernel module presents one file in /proc/sys that provides an s-expression
> containing info on avenrun, enet stats, disk, etc.  There is an additional
> file presnted with an s-expression containing descriptors of what the data
> means, whether it is bounded, and if bounded, what the min/max is. The
> module works correctly in the presence of hotplug (s-expressions are your
> friend).
> 
> On Linux, we can hand out S-expressions at 12 Khz; on Plan 9, at 30 Khz --
> i.e., 12,000 and 30.000 samples/second.  Obviously, you don't run that
> fast, the reason to know the max is to give you an idea of the impact of
> reading the file at, e.g., 100hz; in the case of supermon, the impact is
> in essence zero.
> 
> My simple test program opened the files that the supermon kernel module
> provides, and on a request for data, did a read() and lseek(0),

Did you try pread(2)?

> concatenating the 'single value per file' into an s-expression.
>
> Performance was pretty bad, I figure that you really can't sample at more 
> than 1/50 hz (once every 50 seconds) without impacting the cpu performance 
> in a measurable way. Plus, keeeping the files open means you can't unload 
> modules. 
> 
> So, I went to open/read/close for each file, to allow module unloading to
> work, and of course performance was even worse.

By how much?

> One value per file is a  fine rule if you don't need high performance data 
> collection. In supermon, we can sample at 100hz with no impact on the 
> apps, and have actually observed mpi collectives in progress in that way. 
> It's pretty neat. 
> 
> One stat per file is not a good idea if you need low-impact, high 
> performance data collection.
> 
> ron
> 

Its not immediately obvious from the description
above that its the "one value per file" that is the performance bottleneck,
is it?

For example, I'm not familiar with the s-expression format.
Is it possible the extra reformatting/string copying from the
read buffuer to s-expression eats the CPU?

Well, I guess when we see the benchmark it shall be possible
to judge where does the time go. If all of sysfs has a speed problem,
the right way seems to solve it and not to add more /proc files
as a work-around, as supermon module seems to do.

thanks,

-- 
MST - Michael S. Tsirkin



More information about the general mailing list