summaryrefslogtreecommitdiff
path: root/innobase/srv/srv0start.c
diff options
context:
space:
mode:
Diffstat (limited to 'innobase/srv/srv0start.c')
-rw-r--r--innobase/srv/srv0start.c53
1 files changed, 26 insertions, 27 deletions
diff --git a/innobase/srv/srv0start.c b/innobase/srv/srv0start.c
index 4a0335086f0..9709f5235de 100644
--- a/innobase/srv/srv0start.c
+++ b/innobase/srv/srv0start.c
@@ -95,6 +95,19 @@ static char* srv_monitor_file_name;
#define SRV_N_PENDING_IOS_PER_THREAD OS_AIO_N_PENDING_IOS_PER_THREAD
#define SRV_MAX_N_PENDING_SYNC_IOS 100
+
+/* Avoid warnings when using purify */
+
+#ifdef HAVE_purify
+static int inno_bcmp(register const char *s1, register const char *s2,
+ register uint len)
+{
+ while (len-- != 0 && *s1++ == *s2++) ;
+ return len+1;
+}
+#define memcmp(A,B,C) inno_bcmp((A),(B),(C))
+#endif
+
/*************************************************************************
Reads the data files and their sizes from a character string given in
the .cnf file. */
@@ -1055,34 +1068,15 @@ innobase_start_or_create_for_mysql(void)
srv_file_flush_method_str);
return(DB_ERROR);
}
-
- /* Set the maximum number of threads which can wait for a semaphore
- inside InnoDB */
-#if defined(__WIN__) || defined(__NETWARE__)
-/* Create less event semaphores because Win 98/ME had difficulty creating
-40000 event semaphores.
-Comment from Novell, Inc.: also, these just take a lot of memory on
-NetWare. */
- srv_max_n_threads = 1000;
-#else
- if (srv_pool_size >= 8 * 1024) {
- /* Here we still have srv_pool_size counted
- in kilobytes, srv_boot converts the value to
- pages; if buffer pool is less than 8 MB,
- assume fewer threads. */
- srv_max_n_threads = 10000;
- } else {
- srv_max_n_threads = 1000; /* saves several MB of memory,
- especially in 64-bit
- computers */
- }
-#endif
/* Note that the call srv_boot() also changes the values of
srv_pool_size etc. to the units used by InnoDB internally */
/* Set the maximum number of threads which can wait for a semaphore
- inside InnoDB */
+ inside InnoDB: this is the 'sync wait array' size, as well as the
+ maximum number of threads that can wait in the 'srv_conc array' for
+ their time to enter InnoDB. */
+
#if defined(__WIN__) || defined(__NETWARE__)
/* Create less event semaphores because Win 98/ME had difficulty creating
@@ -1091,11 +1085,16 @@ Comment from Novell, Inc.: also, these just take a lot of memory on
NetWare. */
srv_max_n_threads = 1000;
#else
- if (srv_pool_size >= 8 * 1024 * 1024) {
+ if (srv_pool_size >= 1000 * 1024) {
/* Here we still have srv_pool_size counted
- in bytes, srv_boot converts the value to
- pages; if buffer pool is less than 8 MB,
+ in kilobytes (in 4.0 this was in bytes)
+ srv_boot() converts the value to
+ pages; if buffer pool is less than 1000 MB,
assume fewer threads. */
+ srv_max_n_threads = 50000;
+
+ } else if (srv_pool_size >= 8 * 1024) {
+
srv_max_n_threads = 10000;
} else {
srv_max_n_threads = 1000; /* saves several MB of memory,
@@ -1103,7 +1102,7 @@ NetWare. */
computers */
}
#endif
- err = srv_boot();
+ err = srv_boot(); /* This changes srv_pool_size to units of a page */
if (err != DB_SUCCESS) {