|
|
#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
|