On Thu, Jan 03, 2002 at 10:40:41AM -0500, Greg Ames wrote: > ~gregames/2.0.30.truss and ~gregames/2_0_28.truss are available on > daedalus, if you're interested. The former was created by trussing a > process while running log replay against the 2.0.30 server on port 8092; > the latter was a process on the production server. > > There could be some differences in 2.0.30 due to my test environment: it > listens on two ports (adds a poll() before the accept() ), and I was > running thru a firewall which seems to introduce some network errors.
Here's a syscall count printed side-by-side: 2.0.28 2.0.30 1696 sendfile 1180 gettimeofday 920 select 805 read 355 open 579 open 322 gettimeofday 577 fcntl 314 read 359 close 287 lstat 260 getrusage 199 stat 232 stat 133 close 206 select 114 getrusage 156 writev 109 fstat 134 setsockopt 102 write 134 poll 100 getdirentrie 134 getsockname 72 fcntl 134 accept 55 writev 130 write 50 lseek 129 fstat 50 fstatfs 127 shutdown 11 shutdown 113 lstat 11 setsockopt 80 munmap 11 getsockname 80 mmap 11 accept 72 getdirentries 8 munmap 36 lseek 8 mmap 36 fstatfs 18 sendfile 11 SIGNAL 3 pipe 3 break 1 wait4 1 fork At first the sendfile difference jumped out at me, perhaps we're doing something different in how we decide when to use sendfile? Perhaps the rise in writev was to compensate? Granted, this is not at all under the same workload, but I'm assuming that at least one of the load spikes was captured in the 2.0.30 trace. The other thing that jumps out at me is the existance of 11 SIGNALS in the 2.0.30 trace. How often would we expect SIGNAL to occur under normal conditions? Also, this is not normalized, but the total syscall count for each is not that far off: aaron@daedalus% wc -l ~gregames/2.0.30.truss ~gregames/2_0_28.truss ~ 5731 /home/gregames/2.0.30.truss 4938 /home/gregames/2_0_28.truss -aaron