[cvsnt] Stress Tests results for CVSNT/CVS/Subversion
Arthur Barrett
arthur.barrett at march-hare.com
Tue Feb 14 23:23:51 GMT 2006
Rahul,
I'm not the programmer here, but my basic understanding of your test
code is that it is quite likely that you are going to hit a deadlock at
some point.
Can you supply the entire perl script ? It'd make it easier for us to
try and reproduce. Do you start with an empty repository and the script
imports some files? If so a sample "starting" repository would be
needed too.
Does your script/stress test plan simply run these tests or does it
check that the results were what was intended? eg: if you "cvs rtag" a
module do you then check that every file in that module received that
tag? If not then it is of dubious value in my opinion. CVSNT has a
lock server and CVS does not - so your CVS test could simply be silently
failing - giving you a false test result. If CVSNT is hanging and
therefore notifying you that a deadlock has occurred - I would find that
preferable to silently failing and me thinking things have been
tagged/committed when they haven't. I'm not saying this *is* the
problem - I'm just thinking of "good reasons" for CVSNT to fail this
test. I would prefer that CVSNT e-mailed the administrator when a
deadlock occurs, but that sure doesn't happen and I quite frankly don't
know what does. Sybase hangs the client processes until the
administrator resolves the deadlock...
If it is still possible to re-run your tests then doing so with the lock
daemon running in debug mode may produce enough information for us to
locate the code:
Linux:
cvslockd -d
Windows (stop the CVSNT lock service, then):
cvslock -test
Also I notice from the earlier information that you posted that you may
have cygwin installed on the server - this is definitely not recommended
- please ensure that you do not have any cygwin environment variables,
and cygwin CVS and RCS utilities are not in the PATH set for the user
PI\Rahul (which the server is set to run as).
Finally - you asked about the current stable version versus the
commercial version, which is explained in this FAQ:
http://www.march-hare.com/cvspro/faq/faq1.asp#9r
Regardless of whether this problem occurs in a commercial release we
would like to see if we can reproduce it in 2.5.03 build 2151 since that
will eventually be the basis for another release.
Thanks,
Arthur Barrett
-----Original Message-----
From: Rahul Bhargava [mailto:coderobo at gmail.com]
Sent: 15 February 2006 08:08
To: Arthur Barrett
Cc: cvsnt at cvsnt.org
Subject: Re: [cvsnt] Stress Tests results for
CVSNT/CVS/Subversion
Arthur Barrett wrote:
Rahul,
Thanks for that info - I notice that all clients are
connecting as the same user - can you post more details as to what
operations the clients were performing and on what files, or post the
perl script? Is there a chance a genuine deadlock occurred?
Here are the cvs commands that were fed by the clients to the
server:
cvs("ci -m change1 $fname");
cvs("-z7 log $fname");
cvs("stat $fname");
cvs("-z7 up $fname");
cvs("diff -r1 $fname");
cvs("tag -F lalal$fcnt $fname");
cvs("stat -v $fname");
cvs("editors $fname");
cvs("history $fname");
cvs("watchers $fname");
sys("echo 77 >> $fname");
cvs("ci -m change2 $fname");
cvs("-z6 diff -r1 $fname");
cvs("rtag -b branch_$i-$C $MODULE");
cvs("rlog $MODULE");
if ($i%10 == 0 && $C%25 == 0) {
$bigfile = makeNewFile("10M");
sys("mv $fname $fname.bak");
sys("mv $bigfile $fname");
cvs("-z7 ci -m grow $fname");
sys("rm $fname");
cvs("up $fname");
sys("mv $fname.bak $fname");
cvs("ci -m shrink $fname");
}
The cvs() function just invokes a system call to run "cvs
$command".
The same command sequence worked fine on CVS 1.12.x. So it is
not a client issue imho.
After 15 mins the cvs lock daemon freezes up chewing up 100% CPU
on an rtag. Sometimes
we have seen it with a commit command also. But 9 out of 10
times its with a rtag operation
that we see the freeze.
Regards,
Arthur
-----Original Message-----
From: Rahul Bhargava [mailto:coderobo at gmail.com]
Sent: Wednesday, 15 February 2006 5:25 AM
To: Arthur Barrett
Cc: cvsnt at cvsnt.org
Subject: Re: [cvsnt] Stress Tests results for
CVSNT/CVS/Subversion
Arthur Barrett wrote:
Thanks Rahul,
Can you please supply as much
information about the test as possible,
including what CVSROOT (ie: what
protocol), what plugins were enabled on
Protocol used - :pserver
No plugins were enabled on the server. No
encryption, no emulate cvs 1.12 etc
We tested the server on Windows & Linux. And as
already mentioned, Windows 2003 SP1
was the OS on Win box and Linux 2.6.5-gentoo-r1
#1 SMP on the Linux box. 2-CPU on each server
machine.
the server, what server options were
enabled (eg: require encryption,
emulate CVS 1.11 etc), what specific OS
was used on the server (eg:
windows 2003 SP2), whether there was a
virus scanner running on the
No virus scanner either :-) These are all server
class machines with
no junk.
server (and if so what brand) and if the
"repository" was excluded from
the scanner, as well as the location of
the repository and the temp
directory on the server and they type of
disk it was on. The results of
"cvsdiag" ran on the server would also
help.
[rahul at pi /<2>Program Files/CVSNT]$
./cvsdiag.exe
CVSNT Diagnostic output
-----------------------
Server version: 2.5.03 (Scorpio) Build 2151
OS Version: Windows 2003 5.2.3790 (Service Pack
1)
CVS Service installed: Yes
LockService installed: Yes
:pserver: installed: Yes
:sserver: installed: Yes
:gserver: installed: Yes
:server: installed: Yes
:ssh: installed: Yes
:sspi: installed: Yes
:ext: installed: Yes
Installation Path: C:\Program Files\CVSNT\
Repository 0 Path:
c:\cygwin\home\rahul\cvsroot-nt
Repository 0 Name: /stresscvsnt
Repository 1 Path: (no value)
Repository 1 Name: (no value)
Repository 2 Path: (no value)
Repository 2 Name: (no value)
Repository 3 Path: (no value)
Repository 3 Name: (no value)
CVS Temp directory: C:\WINDOWS\TEMP
CA Certificate File: (no value)
Private Key File: (no value)
Local Users Only: No
Default LockServer: localhost:2402
Disable Reverse DNS: No
Server Tracing: No
Case Sensitive: No
Server listen port: 2401
Compatibility (Non-cvsnt clients):
Report old CVS version: No
Hide extended status: No
Emulate co -n bug: Yes
Ignore client wrappers: No
Compatibility (CVSNT clients):
Report old CVS version: No
Hide extended status: No
Emulate co -n bug: No
Ignore client wrappers: No
Default domain:
Force run as user: PI\rahul
Temp dir readable by current user: Yes
Repository0 readable by current user: Yes
Temp dir writable by current user: Yes
AV files detected:
(none)
Installed Winsock protocols:
1003: MSAFD Tcpip [TCP/IP]
1004: MSAFD Tcpip [UDP/IP]
1001: RSVP UDP Service Provider
1002: RSVP TCP Service Provider
Very importantly we'd like to know if
each client used the same build of
CVSNT, if the clients were a mix of
Linux/Windows what versions they
All clients used - Concurrent Versions System
(CVSNT) 2.5.03 (Scorpio) Build 2221 (client/server)
Clients were running on Linux machines (Kernel
Linux 2.6.5-gentoo-r1)
were and if they too had virus scanning,
and the location of the
workspaces (eg: local disk (NTFS/FAT),
network disk).
No virus scanning. Workspaces were on an ext3
filesystem.
Finally what usernames were used - were
they random for each connection,
did each client use a specific username?
All clients used the same user name (user1).
Thanks,
Arthur Barrett
-----Original Message-----
From: Rahul Bhargava
[mailto:coderobo at gmail.com]
Sent: 09 February 2006 11:43
To: Arthur Barrett
Cc: cvsnt at cvsnt.org
Subject: Re: [cvsnt] Stress Tests
results for CVSNT/CVS/Subversion
Hello Arthur -
Arthur Barrett wrote:
Rahul,
Knowing which build of CVSNT 2.5.03 you
used would also be of
assistance.
Concurrent Versions System (CVSNT)
2.5.03 (Scorpio) Build 2221
(client/server)
Regards,
Arthur Barrett
-----Original Message-----
From: cvsnt-bounces at cvsnt.org on
behalf of Rahul Bhargava
Sent: Thu 2/9/2006 6:44 AM
To: cvsnt at cvsnt.org
Cc:
Subject: [cvsnt] Stress Tests
results for CVSNT/CVS/Subversion
FYI,
Just wanted to share some stress test
results with the CVSNT
community.
We recently undertook an extensive
stress test exercise with the
objective of understanding how CVSNT,
CVS, Subversion servers behave
under high client load.
We created a bank of client machines
(Windows 2k3, Linux 2.6.x) to
generate client
load. The workload that each client
iterated through was the usual
cvs/cvsnt/subversion command set
that a development organization would
see - import, update, checkout,
log , diff, tag, rtag, status etc
Each client would repeatedly execute the
same workload with or without
a
wait time.
With 50 clients pounding on a CVSNT
server (2.5.03) running on a
Windows
2003 Server machine
with 1GB RAM, 2GB SWAP, 2xPentium 4 CPUs
(2.8GHz Dell server class
machine), we saw that after
about 15 minutes of stress the CVSNT
Lock Daemon service would freeze,
the CPUs would be maxed out at
100%. When the freeze happened, almost
always the command `rtag' would
be the one running. We would see
several clients trying to `rtag' the
same module leading up to the
freeze. Sometimes add/commit would
trigger similar issue. The clients
were running the same CVSNT version also
(2.5.03). Shutting down the
lock
daemon service immediately brought the
CPUs back to idling state.
We tried the same stress run on a Linux
2.6.5, 2 CPU machine. The
clients were running on Win/Linux
and the CVSNT 2.5.03 server was running
on the Linux box. Similar
results - the server would go on for
15 mins - 2 hours before hanging the
Linux machine. The CPUs would be
maxed out and the only way
out would be to reboot the Linux box.
Next we tried the same experiment with
CVS (1.11.21) and we could run
the stress for days without any issue.
The CPU usage would be fairly low with
and we didn't see any freezes
or
hangs.
Similar experience with the latest
Subversion release (1.3.0) - we
could
run the stress for days without any
problems. The CPU consumption was
a
lot higher than vanilla CVS. Subversion
`svnserve' processes
would consume around 80% of the CPUs
when the stress was on. Other
than
that, checkouts were noticeably
slower with subversion as the number of
revisions grew.
_______________________________________________
cvsnt mailing list
cvsnt at cvsnt.org
http://www.cvsnt.org/cgi-bin/mailman/listinfo/cvsnt
More information about the cvsnt
mailing list