Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Apr 2013 10:02:06 -0500
From:      "John Mehr" <jcm@visi.com>
To:        <freebsd-stable@freebsd.org>
Subject:   Re: svn - but smaller?
Message-ID:  <web-12752536@mailback4.g2host.com>
In-Reply-To: <5169447A.6020904@gmail.com>
References:  <fa.0Q2pfj5Jmjm1idzwdMPkrOt0t8A@ifi.uio.no> <fa.lTTvk10jwq3Nl28YD2IBfpQxBGI@ifi.uio.no> <fa.Rs4WtqCp5UfG0JyUkY%2Bnss350io@ifi.uio.no> <fa.3NNQaEWt4tIY3iEnRvv/HGuDLkM@ifi.uio.no> <fa./fcM49vv3rrz9Lw3AjcNzSsh5Oo@ifi.uio.no> <fa.8oTMOe04EXV2vODtg0b08yWtXQw@ifi.uio.no> <55f7d158-b02d-49f4-8181-8711be8d5647@googlegroups.com> <51691775.3000006@gmail.com> <5169447A.6020904@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help



On Sat, 13 Apr 2013 14:41:46 +0300
 Markiyan Kushnir <markiyan.kushnir@gmail.com> wrote:
> On 13.04.2013 11:29, Markiyan Kushnir wrote:
>> The only thing I would like to add -- tree lookup did 
>>make a good effect
>> on CPU consumption.
>>
> John,
> 
> I'm just curious, did you consider sys/tree.h for tree 
>implementation? I realize that it wouldn't be well 
>portable to Linux. Any way, did you have other 
>considerations to use your own tree implementation in 
>svnup?

Hello,

Actually, the thought of using sys/tree.h never crossed my 
mind.  I wrote my own tree implementation a couple of 
years ago in Objective-C for a different project and 
re-implementing it in pure C only took me an hour or so to 
complete.

> 
> --
> Markiyan.
> 
>> --
>> Markiyan.
>>
>>
>> On 13.04.2013 10:38, mrboco@gmail.com wrote:
>>>> 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-unsubscribe@freebsd.org"
>>>
>>
> 
> _______________________________________________
> freebsd-stable@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to 
>"freebsd-stable-unsubscribe@freebsd.org"
> 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?web-12752536>