[dtrace-discuss] 2 iosnoop scripts: different results

David Rubio david_rubio at yahoo.com
Mon Jun 11 16:59:44 PDT 2007


I am teaching a DTrace class and a student noticed that 2 iosnoop scripts run in two different windows were producing different results. I was not able to answer why this is. Can anyone explain this. Here are the reults from the two windows:

# io.d
...
           sched     0                           <none>    1024       dad1  W   0.156
            bash  1998                     /dtrace/mod2    1024       dad1  R   8.807
            bash  5184                      /usr/bin/ls    8192       dad1  R  10.332
              ls  5184            /dtrace/mod2/examples    1024       dad1  R   0.259
         fsflush     3               /var/tmp/dtrace-1b    8192       dad1  W   0.278

# io.d
...
           sched     0                           <none>    1024       dad1  W   0.176
            bash  1998                     /dtrace/mod2    1024       dad1  R   8.835
            bash  5184                      /usr/bin/ls    8192       dad1  R  10.360
              ls  5184            /dtrace/mod2/examples    1024       dad1  R   0.285
         fsflush     3               /var/tmp/dtrace-1b    8192       dad1  W   0.307

Here is the script:
#!/usr/sbin/dtrace -qs

#pragma D option dynvarsize=16m

BEGIN
{
  printf("%16s %5s %32s %7s %10s %2s %7s\n", "COMMAND", "PID", "FILE", "SIZE",
  "DEVICE", "RW", "MS");
}

io:::start
{
  start[args[0]->b_edev, args[0]->b_blkno] = timestamp;
  command[args[0]->b_edev, args[0]->b_blkno] = execname;
  mypid[args[0]->b_edev, args[0]->b_blkno] = pid;
}

io:::done
/start[args[0]->b_edev, args[0]->b_blkno]/
{
  elapsed = timestamp - start[args[0]->b_edev, args[0]->b_blkno];
  printf("%16s %5d %32s %7d %10s %2s %3d.%03d\n", command[args[0]->b_edev,
  args[0]->b_blkno], mypid[args[0]->b_edev, args[0]->b_blkno],
  args[2]->fi_pathname, args[0]->b_bcount, args[1]->dev_statname,
  args[0]->b_flags&B_READ? "R": "W", elapsed/1000000,
  (elapsed/1000)%1000);
  start[args[0]->b_edev, args[0]->b_blkno] = 0;   /* free memory */
  command[args[0]->b_edev, args[0]->b_blkno] = 0; /* free memory */
  mypid[args[0]->b_edev, args[0]->b_blkno] = 0;   /* free memory */
}
--
This message posted from opensolaris.org


More information about the dtrace-discuss mailing list