You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2010/09/20 11:43:02 UTC
svn commit: r998852 - in /subversion/branches/integrate-cache-membuffer: ./
subversion/svnserve/main.c subversion/svnserve/server.h
Author: stefan2
Date: Mon Sep 20 09:43:01 2010
New Revision: 998852
URL: http://svn.apache.org/viewvc?rev=998852&view=rev
Log:
This patch combines all patches from the performance branch that
implement the svnadmin command line UI part of the membuffer cache
configuration.
Revisions merged partially from /branches/performance
(excluding all changes not related to the membuffer cache):
982057, 987886
* subversion/svnserve/server.h
(serve_params_t): add cache size parameter
* subversion/svnserve/main.c
(svnserve__options): add "-M" parameter
(main): initialize, parse and apply the new parameter
Modified:
subversion/branches/integrate-cache-membuffer/ (props changed)
subversion/branches/integrate-cache-membuffer/subversion/svnserve/main.c
subversion/branches/integrate-cache-membuffer/subversion/svnserve/server.h
Propchange: subversion/branches/integrate-cache-membuffer/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 20 09:43:01 2010
@@ -22,7 +22,7 @@
/subversion/branches/log-g-performance:870941-871032
/subversion/branches/merge-skips-obstructions:874525-874615
/subversion/branches/nfc-nfd-aware-client:870276,870376
-/subversion/branches/performance:979193,980118,981087,981684,982043,983764,983766,984927,984973,985014,985037,985046,985669,986605,986832,987893,988319,990541,990568,990572,990600,990759,992899,992904,992911,994956,995507,995603
+/subversion/branches/performance:979193,980118,981087,981684,982043,982057,983764,983766,984927,984973,985014,985037,985046,985669,986605,986832,987886,987893,988319,990541,990568,990572,990600,990759,992899,992904,992911,994956,995507,995603
/subversion/branches/ra_serf-digest-authn:875693-876404
/subversion/branches/reintegrate-improvements:873853-874164
/subversion/branches/subtree-mergeinfo:876734-878766
Modified: subversion/branches/integrate-cache-membuffer/subversion/svnserve/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-cache-membuffer/subversion/svnserve/main.c?rev=998852&r1=998851&r2=998852&view=diff
==============================================================================
--- subversion/branches/integrate-cache-membuffer/subversion/svnserve/main.c (original)
+++ subversion/branches/integrate-cache-membuffer/subversion/svnserve/main.c Mon Sep 20 09:43:01 2010
@@ -189,6 +189,16 @@ static const apr_getopt_option_t svnserv
"at the same time is not supported in daemon mode.\n"
" "
"Use inetd mode or tunnel mode if you need this.]")},
+ {"memory-cache-size", 'M', 1,
+ N_("size of the extra in-memory cache in MB used to\n"
+ " "
+ "minimize redundant operations.\n"
+ " "
+ "Default is 128 for threaded and 16 for non-\n"
+ " "
+ "threaded mode.\n"
+ " "
+ "[used for FSFS repositories only]")},
#ifdef CONNECTION_HAVE_THREAD_OPTION
/* ### Making the assumption here that WIN32 never has fork and so
* ### this option never exists when --service exists. */
@@ -431,6 +441,7 @@ int main(int argc, const char *argv[])
params.pwdb = NULL;
params.authzdb = NULL;
params.log_file = NULL;
+ params.memory_cache_size = (apr_uint64_t)-1;
while (1)
{
@@ -540,6 +551,10 @@ int main(int argc, const char *argv[])
handling_mode = connection_mode_thread;
break;
+ case 'M':
+ params.memory_cache_size = 0x100000 * apr_strtoi64(arg, NULL, 0);
+ break;
+
#ifdef WIN32
case SVNSERVE_OPT_SERVICE:
if (run_mode != run_mode_service)
@@ -786,6 +801,25 @@ int main(int argc, const char *argv[])
winservice_running();
#endif
+ /* Configure FS caches for maximum efficiency with svnserve.
+ * For pre-forked (i.e. multi-processed) mode of operation,
+ * keep the per-process caches smaller than the default.
+ * Also, apply the respective command line parameters, if given. */
+ {
+ svn_fs_cache_config_t settings = *svn_fs_get_cache_config();
+
+ if (params.memory_cache_size != -1)
+ settings.cache_size = params.memory_cache_size;
+ else if (handling_mode != connection_mode_thread)
+ settings.cache_size = 0x1000000;
+
+ settings.cache_fulltexts = TRUE;
+ settings.cache_txdeltas = FALSE;
+ settings.single_threaded = handling_mode != connection_mode_thread;
+
+ svn_fs_set_cache_config(&settings);
+ }
+
while (1)
{
#ifdef WIN32
Modified: subversion/branches/integrate-cache-membuffer/subversion/svnserve/server.h
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-cache-membuffer/subversion/svnserve/server.h?rev=998852&r1=998851&r2=998852&view=diff
==============================================================================
--- subversion/branches/integrate-cache-membuffer/subversion/svnserve/server.h (original)
+++ subversion/branches/integrate-cache-membuffer/subversion/svnserve/server.h Mon Sep 20 09:43:01 2010
@@ -101,6 +101,9 @@ typedef struct serve_params_t {
/* A filehandle open for writing logs to; possibly NULL. */
apr_file_t *log_file;
+
+ /* Size of the in-memory cache (used by FSFS only). */
+ apr_uint64_t memory_cache_size;
} serve_params_t;
/* Serve the connection CONN according to the parameters PARAMS. */