On Fri, Apr 25, 2008 at 08:56:07AM -0400, Mathieu Desnoyers wrote:
Martin, let's forget for a thread about performance. I don't complain
over performance degradation at all, there is something more serious.
People _will_ find you if something will go noticeably slower. :^)
OK, uncoditional marker forces me to do some post-filtering, that's
probably tolerable. But! Some information can be lost after serialization
to strings is done. Or more difficult to do post-filtering than needed.
Examples below.
People will want do see different bits, so you'll show full mask and let
people do post-filtering again.
__func__ is just real-world nit.
This example is about very specific set of struct files (hi, Eric!).
Post-filtering again.
And this is totally unexpected from you.
In the name of bug-free kernel,
I DO WANT KERNEL INTERNALS!
And I perfectly know which ones at which spots!
If you're scared of internals keep this marker thingy on kernel/luserspace
boundary -- TIF_SYSCALL_TRACE or how it's called. Don't do tree-wide
source code pollution!
That's also strange to hear.
If I can't reboot a box, I can't insert my carefully crafter marker.
If I can, I can rebuilt kernel with all debugging I want.
This is what's called strategic :^) But there are too many of them, and you
never know to where bug report will point you at the end.
Just name sometimes good clue: SYSV00000000 . Somebody will want full
path though.
And finally, systemtap.
Reading some systemtap docs,
http://sourceware.org/systemtap/wiki/UsingMarkers
where examples of intelligent filtering are shown:
function inode_get_i_ino:long (i:long) %{ /* pure */
struct inode *inode = (struct inode *)(long)THIS->i;
THIS->__retvalue = kread(&(inode->i_ino));
CATCH_DEREF_FAULT();
%}
probe kernel.mark("kfunc_entry")
{
printf("inode number: %d\n", inode_get_i_ino($arg1))
}
Is this representative example?
If yes, systemtap only wants marker's name and ignores totally its fmt
string. So, why add them in the first place?
And if systemtap can hook at any place, it doesn't need markers (I
haven't used it though, so correct me).
--