[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

mod_dav_svn and fsync

From: Tobias Ringstrom <tori_at_ringstrom.mine.nu>
Date: 2003-04-01 20:12:48 CEST

I noticed that mod_dav_svn is a lot slower than file: and svn: when doing
svn export or update.

I also noticed that the hard disk on the server performs enormous amounts
of seeking when using mod_dav. I ran all three access methods using
strace and counted the number of fsync() calls. The repository I'm
checking out is very small and has only 30 files. I get the following
(using 0.20.1 for both the client and the server):

         access number of fsync() calls
         -----------------------------------
         file 1
         svn 1
         mod_dav 635

The mod_dav number is huge considering that only 30 files have been
checked out. The strace for open and fsync contains a lot of chunks
like this:

open("/repo_path/db/log.0000000006", O_RDWR|O_CREAT|O_LARGEFILE, 0666) = 19
fsync(19) = 0
open("/web_home/.htaccess", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/who_knows/htpasswd", O_RDONLY) = 19
open("/repo_path/format", O_RDONLY) = 19
open("/repo_path/db/DB_CONFIG", O_RDONLY|O_LARGEFILE) = 19
open("/repo_path/db/__db.001", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0666) = -1 EEXIST (File exists)
open("/repo_path/db/__db.001", O_RDWR|O_LARGEFILE) = 19
open("/repo_path/db/__db.001", O_RDWR|O_CREAT|O_LARGEFILE, 0666) = 19
open("/repo_path/db/__db.002", O_RDWR|O_CREAT|O_LARGEFILE, 0666) = 19
open("/repo_path/db/__db.003", O_RDWR|O_CREAT|O_LARGEFILE, 0666) = 19
open("/repo_path/db/__db.004", O_RDWR|O_CREAT|O_LARGEFILE, 0666) = 19
open("/repo_path/db/__db.005", O_RDWR|O_CREAT|O_LARGEFILE, 0666) = 19
open("/repo_path/db/nodes", O_RDWR|O_LARGEFILE) = 19
open("/repo_path/db/nodes", O_RDWR|O_LARGEFILE) = 19
open("/repo_path/db/revisions", O_RDWR|O_LARGEFILE) = 20
open("/repo_path/db/revisions", O_RDWR|O_LARGEFILE) = 20
open("/repo_path/db/transactions", O_RDWR|O_LARGEFILE) = 21
open("/repo_path/db/transactions", O_RDWR|O_LARGEFILE) = 21
open("/repo_path/db/copies", O_RDWR|O_LARGEFILE) = 22
open("/repo_path/db/copies", O_RDWR|O_LARGEFILE) = 22
open("/repo_path/db/changes", O_RDWR|O_LARGEFILE) = 23
open("/repo_path/db/changes", O_RDWR|O_LARGEFILE) = 23
open("/repo_path/db/representations", O_RDWR|O_LARGEFILE) = 24
open("/repo_path/db/representations", O_RDWR|O_LARGEFILE) = 24
open("/repo_path/db/strings", O_RDWR|O_LARGEFILE) = 25
open("/repo_path/db/strings", O_RDWR|O_LARGEFILE) = 25
open("/repo_path/db/uuids", O_RDWR|O_LARGEFILE) = 26
open("/repo_path/db/uuids", O_RDWR|O_LARGEFILE) = 26
open("/repo_path/locks/db.lock", O_RDONLY) = 27
open("/etc/mtab", O_RDONLY) = 28
open("/proc/cpuinfo", O_RDONLY) = 28
fsync(19) = 0
fsync(19) = 0
fsync(20) = 0
fsync(20) = 0
fsync(21) = 0
fsync(21) = 0
fsync(22) = 0
fsync(22) = 0
fsync(23) = 0
fsync(23) = 0
fsync(24) = 0
fsync(24) = 0
fsync(25) = 0
fsync(25) = 0
fsync(26) = 0

I suppose these blocks represent transactions. Why are there transactions
for read-only operations such as export and update?

This is not a big problem for me, but I was curious. I could not find
an issue about this so I thought that you might want to know.

/Tobias

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Apr 1 20:13:36 2003

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.