Skip to content

Instantly share code, notes, and snippets.

@palmerabollo
Created June 11, 2014 10:20
Show Gist options
  • Save palmerabollo/52ffbc4913a7a06fe6de to your computer and use it in GitHub Desktop.
Save palmerabollo/52ffbc4913a7a06fe6de to your computer and use it in GitHub Desktop.
dtrace keystrokes
#!/usr/sbin/dtrace -s
syscall::read:entry
/execname == "sh" || execname == "ksh" || execname == "csh" ||
execname == "tcsh" || execname == "zsh" || execname == "bash"/
{
self->start = timestamp;
self->buf = arg1;
self->len = arg2;
}
syscall::read:return
/self->start && self->len == 1/
{
this->elapsed = timestamp - self->start;
@edist = quantize(this->elapsed / 1000000);
this->text = (char *) copyin(self->buf, self->len);
@ldist[stringof(this->text)] = quantize(this->elapsed / 1000000);
printf("%d ms %s letter", this->elapsed / 1000000, stringof(this->text));
self->start = 0;
self->buf = NULL;
self->len = 0;
}
@palmerabollo
Copy link
Author

# sudo dtrace -s keystrokes.d
dtrace: script 'keystrokes.d' matched 2 probes
CPU     ID                    FUNCTION:NAME
  1    156                      read:return 78 ms o letter
  2    156                      read:return 200 ms l letter
  2    156                      read:return 135 ms a letter
  1    156                      read:return 8351 ms   letter
  1    156                      read:return 103 ms u letter
  1    156                      read:return 127 ms   letter
  3    156                      read:return 111 ms q letter
  3    156                      read:return 96 ms e letter
  1    156                      read:return 431 ms a letter
  1    156                      read:return 1239 ms s letter
  2    156                      read:return 280 ms e letter
  3    156                      read:return 190 ms s letter
^C


           value  ------------- Distribution ------------- count    
              32 |                                         0        
              64 |@@@@@@@@@@@@@@@@@                        5        
             128 |@@@@@@@@@@                               3        
             256 |@@@@@@@                                  2        
             512 |                                         0        
            1024 |@@@                                      1        
            2048 |                                         0        
            4096 |                                         0        
            8192 |@@@                                      1        
           16384 |                                         0        

  o                                                 
           value  ------------- Distribution ------------- count    
              32 |                                         0        
              64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
             128 |                                         0        

  q                                                 
           value  ------------- Distribution ------------- count    
              32 |                                         0        
              64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
             128 |                                         0        

  u                                                 
           value  ------------- Distribution ------------- count    
              32 |                                         0        
              64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
             128 |                                         0        

  l                                                 
           value  ------------- Distribution ------------- count    
              64 |                                         0        
             128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
             256 |                                         0        

  e                                                 
           value  ------------- Distribution ------------- count    
              32 |                                         0        
              64 |@@@@@@@@@@@@@@@@@@@@                     1        
             128 |                                         0        
             256 |@@@@@@@@@@@@@@@@@@@@                     1        
             512 |                                         0        

  a                                                 

              64 |                                         0        
             128 |@@@@@@@@@@@@@@@@@@@@                     1        
             256 |@@@@@@@@@@@@@@@@@@@@                     1        
             512 |                                         0        

  s                                                 
           value  ------------- Distribution ------------- count    
              64 |                                         0        
             128 |@@@@@@@@@@@@@@@@@@@@                     1        
             256 |                                         0        
             512 |                                         0        
            1024 |@@@@@@@@@@@@@@@@@@@@                     1        
            2048 |                                         0        


           value  ------------- Distribution ------------- count    
              32 |                                         0        
              64 |@@@@@@@@@@@@@@@@@@@@                     1        
             128 |                                         0        
             256 |                                         0        
             512 |                                         0        
            1024 |                                         0        
            2048 |                                         0        
            4096 |                                         0        
            8192 |@@@@@@@@@@@@@@@@@@@@                     1        
           16384 |                                         0        

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment