Alan Hargreaves' Weblog
The ramblings of an Australian SaND TSC* Principal Field Technologist
* Solaris and Network Domain Technology Support Centre - The group I work forTags
(update 1) acoustic bind birthday blues bugs cec cec2007 cec2008 china cmt contention cringley debugging dogs dtrace earthquake encumbered-binaries extra flash funny google guitar halloween huron install kids linux liveupgrade locking mdb music mysql newyear niagra openjava opensolaris oracle patches patents percussion performance redhat secondlife security solaris sru sun support sxcr t2 t2000 timeslider ufs upgrade virtualbox windows youtube zfs
Friday Nov 14, 2008
DTrace Lab in the performance track at CEC
We have just been helping out in the DTrace lab for the performance track at CEC. On having a look at exercise 1, we suggested to the attendees that they attempt the other exercises and come back to this one. The exercise was:
Enhance /usr/demo/dtrace/iosnoop to be able to detect reads that are satisfied by the filesystem cache (UFS: pagecache).
We then went off to write our own versions of an answer to the problem.I started from scratch, and (referring back to a previous blog where I did some digging into this code), came up with the following:
#!/usr/sbin/dtrace -s
#pragma D option quiet
BEGIN { printf("Collecting ...\n"); }
syscall::read*:entry {
self->interest = 1;
self->file = fds[arg0].fi_name;
self->phys = 0;
}
/* we only increment this kstat if we have to go to disk, from a filesystem */
sysinfo:::bread /self->interest/ { self->phys = 1;}
syscall::read*:return /self->interest/ {
this->str = self->phys
? "Physical reads"
: "Cache Reads";
@[this->str, self->file] = count();
self->interest = 0;
}
END { printa("%@6d %s %s\n", @); }
On running this you get output like:
... 209 Cache Reads jaxrpc-impl.jar 211 Cache Reads appserv-admin.jar 311 Cache Reads xalan.jar 354 Cache Reads ttysrch 372 Cache Reads jaxr-impl.jar 373 Cache Reads auxv 500 Cache Reads appserv-assemblytool.jar 1216 Cache Reads1324 Cache Reads appserv-rt.jar 1392 Cache Reads clone@0:ptm 83181 Cache Reads psinfo
Of course by the time I finished writing this, pretty much everything in the only ufs filesystem on the box had been cached :)
Posted at 02:01PM Nov 14, 2008 by Alan Hargreaves in Solaris |

