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: [RFC 1/3] Kprobes: userspace probes new interfaces


Prasanna S Panchamukhi wrote:
Hi James,

On Wed, Sep 14, 2005 at 11:10:40AM -0500, James Dickens wrote:

       struct uprobe {
               /*path of the application */
               char name[50];


this doesn't scale, should be a pointer to a list of applications being probed.


Now with having kernel module allocate this application pathname string and copying the path name to application pathname string should work. With this change, the uprobes structure will look like
struct uprobe {
char *pathname;
...............
With this, the kernel module need to allocate pathname string one for each
application and pass the pointer of the same pathname to insert probes within
that application. This should help to scale well.



450000 * 50 = 22.5 MB..  far too much for kernel space before we even
do any work.



Now it will just the stringlength size of memory need to be allocated
for all the probes (say 450000) probes within the same application.
As per your example, now you will have


strlen(application_path) + (450000 * sizeof(char *)) = 1.8 MB.

Thanks
Prasanna

OProfile uses dcookies to pass path information from kernel to user space. There are a couple advantages to this approach for OProfile. A small, fixed-size integer is passed to user space rather than a potentially large, variable-length string. Also the redundancy is factored out. There is a system call to convert a dcookie to a string. Would it be possible to consider the inverse operation, convert a path into a dcookie? Then use dcookie instead.


-Will


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