René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback -
 

Unix (Solaris?) tools: truss

#include <iostream>
#include <fstream>

//  CC trusstest.cpp -o trusstest
//
//  truss -c -t open,close,read,write ./trusstest  10000 10
    
int main(int argc, char* argv[]) {

  if (argc != 3) {
    std::cout << argv[0] << " nof_write flush_intv" << std::endl;
    exit(0);
  }

  int  nof_writes = std::atoi(argv[1]);
  int  flush_intv = std::atoi(argv[2]);
                      
  std::fstream f("trusstest.out",
                      std::ios::in     |
                      std::ios::out    |
                      std::ios::binary |
                      std::ios::trunc);
    
  
  for (int i=0; i<nof_writes; i++) {
    f.write("*",1);
    
    if (! (i % flush_intv)) {
      f.flush();
    }
  }

  f.close();
}
The -t specifies the system calls to be observed. -c stands for count (or cumulative?).
$ truss -c -t open,close,read,write ./trusstest 10000 1   

syscall               seconds   calls  errors
write                    .105   10000
open                     .000       8       1
close                    .000       7
                     --------  ------   ----
sys totals:              .105   10015      1
usr time:                .069
elapsed:                 .630
$ truss -c -t open,close,read,write ./trusstest 10000 10

syscall               seconds   calls  errors
write                    .011    1001
open                     .000       8       1
close                    .000       7
                     --------  ------   ----
sys totals:              .012    1016      1
usr time:                .011
elapsed:                 .090
$ truss -c -t open,close,read,write ./trusstest 10000 100

syscall               seconds   calls  errors
write                    .001     101
open                     .000       8       1
close                    .000       7
                     --------  ------   ----
sys totals:              .002     116      1
usr time:                .005
elapsed:                 .020
$ truss -c -t open,close,read,write ./trusstest 10000 1000

syscall               seconds   calls  errors
write                    .000      11
open                     .000       8       1
close                    .000       7
                     --------  ------   ----
sys totals:              .000      26      1
usr time:                .003
elapsed:                 .010
$ truss -c -t open,close,read,write ./trusstest 10000 10000

syscall               seconds   calls  errors
write                    .000       3
open                     .000       8       1
close                    .000       7
                     --------  ------   ----
sys totals:              .000      18      1
usr time:                .003
elapsed:                 .010

Links