This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Linux VFS cache hit rate script


On Wed, Apr 20, 2011 at 1:08 PM, William Cohen <wcohen@redhat.com> wrote:
> On 04/20/2011 03:04 PM, Jake Maul wrote:
>> Greetings all,
>
> Hi Jake,
>
> Thanks for taking the time to submit the example.
>
>>
>> I have recently put a script up on the War Stories page, and it was
>> requested of me to also post it to the list, along with a .meta file.
>> They're both attached.
>>
>> http://sourceware.org/systemtap/wiki/WSCacheHitRate
>
> Why the need for ?-DMAXMAPENTRIES=100000 on the second example on the wiki page? There doesn't seem to be any arrays in the script.

For some reason on that particular server, I get this error sometimes:

ERROR: Array overflow, check MAXMAPENTRIES near identifier '$file' at
/usr/share/systemtap/tapset/vfs.stp:769:9

I freely admit, that was voodoo-administration on my part- I found
something somewhere that indicated you can make that variable larger
like that, and tried it out. It seems to help, but I haven't the
slightest idea why. If anyone can shed some light on that, I'd be much
obliged. :)

On a different server, it works fine without that. They're both RHEL5,
but the working on is 64-bit and the one that sometimes errors is
32-bit PAE. Not sure if that matters. They do have completely
different datasets and workloads.

>> Let me know what you think! It's my first SystemTap script, so I'm
>> sure there are improvements that could be made. I'm by no means a
>> kernel hacker, or even a C dev... just a lowly sysadmin. :)
>
> Include a short header like the following at the beginning of the script:
>
> #!/usr/bin/env stap
> # cache-hit.stp
> # Copyright (C) 2011 xxx <xxx@yyy.zzz>
> #
> # This program is free software; you can redistribute it and/or modify
> # it under the terms of the GNU General Public License version 2 as
> # published by the Free Software Foundation.

Good call, I'll add something.

> Should avoid long line lengths in the printf statements. Wrapped lines don't look good in manuals.

Also good.

> The following line sounds unsure, need to check that that is really the case:
>
> ?if (devname=="N/A") { /* N/A means cache hit... right? */
>
> It would be good to have a better explanation for the "N/A" check.

This is from the beginner's guide, actually:

http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/SystemTap_Beginners_Guide/mainsect-disk.html

It bothers me too, because I can't find any documentation that says
explicitly when you would get an 'N/A' devname. I don't know if it's a
SystemTap thing or a kernel thing, but being that I don't have
experience working on either, I'm fairly lost.


Thanks for the feedback!
Jake


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]