[cvsnt] Stress Tests results for CVSNT/CVS/Subversion

Arthur Barrett arthur.barrett at march-hare.com
Tue Feb 14 23:23:51 GMT 2006


Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.


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 cvsnt downloads at march-hare.com @CVSNT on Twitter CVSNT on Facebook
	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 cvsnt downloads at march-hare.com @CVSNT on Twitter CVSNT on Facebook
			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 cvsnt downloads at march-hare.com @CVSNT on Twitter CVSNT on Facebook
				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 cvsnt downloads at march-hare.com @CVSNT on Twitter CVSNT on Facebook
				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 cvsnt downloads at march-hare.com @CVSNT on Twitter CVSNT on Facebook
http://www.cvsnt.org/cgi-bin/mailman/listinfo/cvsnt https://www.march-hare.com/cvspro/en.asp#downcvs
				
				
				
				  
				    

				
				
				  






More information about the cvsnt mailing list
Download the latest CVSNT, TortosieCVS, WinCVS etc. for Windows 8 etc.
@CVSNT on Twitter   CVSNT on Facebook