> In the previous version (0.61), the process of checking 
> file names against the list of known files in the 
> repository was inefficient and most likely accounts for 
> the slow down you're seeing.  I've reimplemented it using 
> a binary search tree and the lookup phase is no longer a 
> bottleneck.

I'm sorry but 0.62 still locks while fetching from a local repository:

last pid: 74701;  load averages:  2.24,  2.52,  2.56                            
               up 772+03:32:23 13:19:55
96 processes:  2 running, 94 sleeping
CPU: 14.8% user,  0.0% nice, 40.3% system,  0.7% interrupt, 44.2% idle
Mem: 1191M Active, 436M Inact, 248M Wired, 76M Cache, 112M Buf, 50M Free
Swap: 1024M Total, 232M Used, 792M Free, 22% Inuse

  PID USERNAME   THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
30193 root         1 117    0 56220K  9108K CPU1    1  99:16 96.39% svnup

The send/receive queues are filled up and not changing over time:

root@alpha:~# netstat -an | fgrep -w 3690
tcp4    8192  24576 81.30.199.66.3690      81.30.199.66.44473     ESTABLISHED
tcp4   24576  16384 81.30.199.66.44473     81.30.199.66.3690      ESTABLISHED
tcp4       0      0 *.3690                 *.*                    LISTEN

root@alpha:~# kdump | head -40
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)
 30193 svnup    RET   write -1 errno 35 Resource temporarily unavailable
 30193 svnup    CALL  write(0x3,0x8843a000,0xd91)

I think you should either use blocking IO or catch IO errors. And please 
consider to set the socket options too.

Thanks.
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to