SOURCES (MYSQL_5_0): mysql-innodb_io_patches.patch, mysql-innodb_locks_held...
glen
glen at pld-linux.org
Tue Feb 3 17:46:16 CET 2009
Author: glen Date: Tue Feb 3 16:46:16 2009 GMT
Module: SOURCES Tag: MYSQL_5_0
---- Log message:
- updated by Eero Hänninen <eero.hanninen#delfi.ee>
---- Files affected:
SOURCES:
mysql-innodb_io_patches.patch (1.1.2.1 -> 1.1.2.2) , mysql-innodb_locks_held.patch (1.1.2.1 -> 1.1.2.2) , mysql-microsec_process.patch (1.1.2.1 -> 1.1.2.2) , mysql-microslow_innodb.patch (1.1.2.3 -> 1.1.2.4) , mysql-userstatv2.patch (1.1.2.3 -> 1.1.2.4)
---- Diffs:
================================================================
Index: SOURCES/mysql-innodb_io_patches.patch
diff -u SOURCES/mysql-innodb_io_patches.patch:1.1.2.1 SOURCES/mysql-innodb_io_patches.patch:1.1.2.2
--- SOURCES/mysql-innodb_io_patches.patch:1.1.2.1 Fri Jan 9 12:04:53 2009
+++ SOURCES/mysql-innodb_io_patches.patch Tue Feb 3 17:46:08 2009
@@ -1,17 +1,38 @@
-diff -r 45683461331d innobase/buf/buf0rea.c
---- a/innobase/buf/buf0rea.c Mon Dec 22 00:31:16 2008 -0800
-+++ b/innobase/buf/buf0rea.c Mon Dec 22 00:32:02 2008 -0800
-@@ -188,6 +188,10 @@
- ulint low, high;
+diff -ruN a/innobase/buf/buf0flu.c b/innobase/buf/buf0flu.c
+--- a/innobase/buf/buf0flu.c 2008-12-19 02:19:35.000000000 +0900
++++ b/innobase/buf/buf0flu.c 2009-01-09 15:51:10.000000000 +0900
+@@ -898,10 +898,17 @@
+
+ old_page_count = page_count;
+
++ if (srv_flush_neighbor_pages) {
+ /* Try to flush also all the neighbors */
+ page_count +=
+ buf_flush_try_neighbors(space, offset,
+ flush_type);
++ } else {
++ /* Try to flush the page only */
++ page_count +=
++ buf_flush_try_page(space, offset,
++ flush_type);
++ }
+ /* fprintf(stderr,
+ "Flush type %lu, page no %lu, neighb %lu\n",
+ flush_type, offset,
+diff -ruN a/innobase/buf/buf0rea.c b/innobase/buf/buf0rea.c
+--- a/innobase/buf/buf0rea.c 2009-01-09 15:40:22.000000000 +0900
++++ b/innobase/buf/buf0rea.c 2009-01-09 15:40:46.000000000 +0900
+@@ -189,6 +189,10 @@
ulint err;
ulint i;
-+
+
+ if (!(srv_read_ahead & 1)) {
+ return(0);
+ }
-
++
if (srv_startup_is_before_trx_rollback_phase) {
/* No read-ahead to avoid thread deadlocks */
+ return(0);
@@ -396,6 +400,10 @@
ulint err;
ulint i;
@@ -23,9 +44,38 @@
if (srv_startup_is_before_trx_rollback_phase) {
/* No read-ahead to avoid thread deadlocks */
return(0);
-diff -r 45683461331d innobase/include/os0file.h
---- a/innobase/include/os0file.h Mon Dec 22 00:31:16 2008 -0800
-+++ b/innobase/include/os0file.h Mon Dec 22 00:32:02 2008 -0800
+diff -ruN a/innobase/ibuf/ibuf0ibuf.c b/innobase/ibuf/ibuf0ibuf.c
+--- a/innobase/ibuf/ibuf0ibuf.c 2008-12-19 02:19:35.000000000 +0900
++++ b/innobase/ibuf/ibuf0ibuf.c 2009-01-09 15:53:18.000000000 +0900
+@@ -370,8 +370,9 @@
+ grow in size, as the references on the upper levels of the tree can
+ change */
+
+- ibuf->max_size = buf_pool_get_curr_size() / UNIV_PAGE_SIZE
+- / IBUF_POOL_SIZE_PER_MAX_SIZE;
++ ibuf->max_size = ut_min( buf_pool_get_curr_size() / UNIV_PAGE_SIZE
++ / IBUF_POOL_SIZE_PER_MAX_SIZE, (ulint) srv_ibuf_max_size / UNIV_PAGE_SIZE);
++ srv_ibuf_max_size = (long long) ibuf->max_size * UNIV_PAGE_SIZE;
+ ibuf->meter = IBUF_THRESHOLD + 1;
+
+ UT_LIST_INIT(ibuf->data_list);
+@@ -2258,11 +2259,13 @@
+
+ mutex_enter(&ibuf_mutex);
+
++ if (!srv_ibuf_active_contract) {
+ if (ibuf->size < ibuf->max_size + IBUF_CONTRACT_ON_INSERT_NON_SYNC) {
+ mutex_exit(&ibuf_mutex);
+
+ return;
+ }
++ }
+
+ sync = FALSE;
+
+diff -ruN a/innobase/include/os0file.h b/innobase/include/os0file.h
+--- a/innobase/include/os0file.h 2009-01-09 15:40:22.000000000 +0900
++++ b/innobase/include/os0file.h 2009-01-09 15:40:46.000000000 +0900
@@ -551,8 +551,10 @@
/*========*/
ulint n, /* in: maximum number of pending aio operations
@@ -39,9 +89,9 @@
ulint n_slots_sync); /* in: number of slots in the sync aio array */
/***********************************************************************
Requests an asynchronous i/o operation. */
-diff -r 45683461331d innobase/include/srv0srv.h
---- a/innobase/include/srv0srv.h Mon Dec 22 00:31:16 2008 -0800
-+++ b/innobase/include/srv0srv.h Mon Dec 22 00:32:02 2008 -0800
+diff -ruN a/innobase/include/srv0srv.h b/innobase/include/srv0srv.h
+--- a/innobase/include/srv0srv.h 2009-01-09 15:40:22.000000000 +0900
++++ b/innobase/include/srv0srv.h 2009-01-09 15:54:33.000000000 +0900
@@ -89,6 +89,8 @@
extern ulint srv_lock_table_size;
@@ -51,20 +101,24 @@
#ifdef UNIV_LOG_ARCHIVE
extern ibool srv_log_archive_on;
-@@ -133,6 +135,10 @@
+@@ -133,6 +135,14 @@
extern ulong srv_max_purge_lag;
extern ibool srv_use_awe;
extern ibool srv_use_adaptive_hash_indexes;
+
+extern ulint srv_io_capacity;
-+extern ulint srv_read_ahead;
++extern long long srv_ibuf_max_size;
++extern ulint srv_ibuf_active_contract;
++extern ulint srv_ibuf_accel_rate;
++extern ulint srv_flush_neighbor_pages;
++extern uint srv_read_ahead;
+extern ulint srv_adaptive_checkpoint;
/*-------------------------------------------*/
extern ulint srv_n_rows_inserted;
-diff -r 45683461331d innobase/log/log0log.c
---- a/innobase/log/log0log.c Mon Dec 22 00:31:16 2008 -0800
-+++ b/innobase/log/log0log.c Mon Dec 22 00:32:02 2008 -0800
+diff -ruN a/innobase/log/log0log.c b/innobase/log/log0log.c
+--- a/innobase/log/log0log.c 2008-12-19 02:19:36.000000000 +0900
++++ b/innobase/log/log0log.c 2009-01-09 15:40:46.000000000 +0900
@@ -3326,6 +3326,15 @@
(ulong) ut_dulint_get_high(log_sys->last_checkpoint_lsn),
(ulong) ut_dulint_get_low(log_sys->last_checkpoint_lsn));
@@ -81,9 +135,9 @@
current_time = time(NULL);
time_elapsed = 0.001 + difftime(current_time,
-diff -r 45683461331d innobase/os/os0file.c
---- a/innobase/os/os0file.c Mon Dec 22 00:31:16 2008 -0800
-+++ b/innobase/os/os0file.c Mon Dec 22 00:32:02 2008 -0800
+diff -ruN a/innobase/os/os0file.c b/innobase/os/os0file.c
+--- a/innobase/os/os0file.c 2009-01-09 15:40:23.000000000 +0900
++++ b/innobase/os/os0file.c 2009-01-09 15:40:46.000000000 +0900
@@ -2877,8 +2877,10 @@
/*========*/
ulint n, /* in: maximum number of pending aio operations
@@ -131,7 +185,7 @@
loop:
os_mutex_enter(array->mutex);
-@@ -3198,12 +3209,23 @@
+@@ -3198,6 +3209,16 @@
goto loop;
}
@@ -148,16 +202,17 @@
for (i = 0;; i++) {
slot = os_aio_array_get_nth_slot(array, i);
- if (slot->reserved == FALSE) {
+@@ -3205,6 +3226,7 @@
break;
}
-+ }
}
++ }
array->n_reserved++;
-diff -r 45683461331d innobase/srv/srv0srv.c
---- a/innobase/srv/srv0srv.c Mon Dec 22 00:31:16 2008 -0800
-+++ b/innobase/srv/srv0srv.c Mon Dec 22 00:32:02 2008 -0800
+
+diff -ruN a/innobase/srv/srv0srv.c b/innobase/srv/srv0srv.c
+--- a/innobase/srv/srv0srv.c 2009-01-09 15:40:23.000000000 +0900
++++ b/innobase/srv/srv0srv.c 2009-01-09 15:58:36.000000000 +0900
@@ -167,6 +167,8 @@
ulint srv_lock_table_size = ULINT_MAX;
@@ -167,7 +222,7 @@
#ifdef UNIV_LOG_ARCHIVE
ibool srv_log_archive_on = FALSE;
-@@ -324,6 +326,15 @@
+@@ -324,6 +326,22 @@
ibool srv_use_awe = FALSE;
ibool srv_use_adaptive_hash_indexes = TRUE;
@@ -178,12 +233,19 @@
+where max is srv_io_capacity. */
+#define PCT_IO(pct) ((ulint) (srv_io_capacity * ((double) pct / 100.0)))
+
-+ulint srv_read_ahead = 3; /* 1: random 2: linear 3: Both */
++long long srv_ibuf_max_size = 0;
++ulint srv_ibuf_active_contract = 0; /* 0:disable 1:enable */
++ulint srv_ibuf_accel_rate = 100;
++#define PCT_IBUF_IO(pct) ((ulint) (srv_io_capacity * srv_ibuf_accel_rate * ((double) pct / 10000.0)))
++
++ulint srv_flush_neighbor_pages = 1; /* 0:disable 1:enable */
++
++uint srv_read_ahead = 3; /* 1: random 2: linear 3: Both */
+ulint srv_adaptive_checkpoint = 0; /* 0:disable 1:enable */
/*-------------------------------------------*/
ulong srv_n_spin_wait_rounds = 20;
ulong srv_n_free_tickets_to_enter = 500;
-@@ -2214,6 +2225,8 @@
+@@ -2214,6 +2232,8 @@
ibool skip_sleep = FALSE;
ulint i;
@@ -192,7 +254,7 @@
#ifdef UNIV_DEBUG_THREAD_CREATION
fprintf(stderr, "Master thread starts, id %lu\n",
os_thread_pf(os_thread_get_curr_id()));
-@@ -2302,9 +2315,9 @@
+@@ -2302,9 +2322,9 @@
+ log_sys->n_pending_writes;
n_ios = log_sys->n_log_ios + buf_pool->n_pages_read
+ buf_pool->n_pages_written;
@@ -200,11 +262,11 @@
+ if (n_pend_ios < 3 && (n_ios - n_ios_old < PCT_IO(5))) {
srv_main_thread_op_info = "doing insert buffer merge";
- ibuf_contract_for_n_pages(TRUE, 5);
-+ ibuf_contract_for_n_pages(TRUE, PCT_IO(5));
++ ibuf_contract_for_n_pages(TRUE, PCT_IBUF_IO(5));
srv_main_thread_op_info = "flushing log";
-@@ -2317,7 +2330,7 @@
+@@ -2317,7 +2337,7 @@
/* Try to keep the number of modified pages in the
buffer pool under the limit wished by the user */
@@ -213,7 +275,7 @@
ut_dulint_max);
/* If we had to do the flush, it may have taken
-@@ -2326,6 +2339,44 @@
+@@ -2326,6 +2346,49 @@
iteration of this loop. */
skip_sleep = TRUE;
@@ -231,6 +293,11 @@
+
+ } else {
+ if (ut_dulint_minus(log_sys->lsn, oldest_lsn)
++ > (log_sys->max_checkpoint_age) - ((log_sys->max_checkpoint_age) / 8)) {
++ /* LOG_POOL_PREFLUSH_RATIO_ASYNC is exceeded. */
++ /* We should not flush from here. */
++ mutex_exit(&(log_sys->mutex));
++ } else if (ut_dulint_minus(log_sys->lsn, oldest_lsn)
+ > (log_sys->max_checkpoint_age) - ((log_sys->max_checkpoint_age) / 4)) {
+
+ /* 2nd defence line (max_checkpoint_age * 3/4) */
@@ -258,7 +325,7 @@
}
if (srv_activity_count == old_activity_count) {
-@@ -2352,10 +2403,10 @@
+@@ -2352,10 +2415,10 @@
n_pend_ios = buf_get_n_pending_ios() + log_sys->n_pending_writes;
n_ios = log_sys->n_log_ios + buf_pool->n_pages_read
+ buf_pool->n_pages_written;
@@ -271,16 +338,16 @@
srv_main_thread_op_info = "flushing log";
log_buffer_flush_to_disk();
-@@ -2365,7 +2416,7 @@
+@@ -2365,7 +2428,7 @@
even if the server were active */
srv_main_thread_op_info = "doing insert buffer merge";
- ibuf_contract_for_n_pages(TRUE, 5);
-+ ibuf_contract_for_n_pages(TRUE, PCT_IO(5));
++ ibuf_contract_for_n_pages(TRUE, PCT_IBUF_IO(5));
srv_main_thread_op_info = "flushing log";
log_buffer_flush_to_disk();
-@@ -2407,14 +2458,14 @@
+@@ -2407,14 +2470,14 @@
(> 70 %), we assume we can afford reserving the disk(s) for
the time it requires to flush 100 pages */
@@ -297,16 +364,16 @@
ut_dulint_max);
}
-@@ -2503,7 +2554,7 @@
+@@ -2503,7 +2566,7 @@
if (srv_fast_shutdown && srv_shutdown_state > 0) {
n_bytes_merged = 0;
} else {
- n_bytes_merged = ibuf_contract_for_n_pages(TRUE, 20);
-+ n_bytes_merged = ibuf_contract_for_n_pages(TRUE, PCT_IO(100));
++ n_bytes_merged = ibuf_contract_for_n_pages(TRUE, PCT_IBUF_IO(100));
}
srv_main_thread_op_info = "reserving kernel mutex";
-@@ -2520,7 +2571,7 @@
+@@ -2520,7 +2583,7 @@
if (srv_fast_shutdown < 2) {
n_pages_flushed =
@@ -315,9 +382,9 @@
} else {
/* In the fastest shutdown we do not flush the buffer pool
to data files: we set n_pages_flushed to 0 artificially. */
-diff -r 45683461331d innobase/srv/srv0start.c
---- a/innobase/srv/srv0start.c Mon Dec 22 00:31:16 2008 -0800
-+++ b/innobase/srv/srv0start.c Mon Dec 22 00:32:02 2008 -0800
+diff -ruN a/innobase/srv/srv0start.c b/innobase/srv/srv0start.c
+--- a/innobase/srv/srv0start.c 2008-12-19 02:19:37.000000000 +0900
++++ b/innobase/srv/srv0start.c 2009-01-09 15:40:46.000000000 +0900
@@ -1205,24 +1205,28 @@
return(DB_ERROR);
}
@@ -351,22 +418,24 @@
SRV_MAX_N_PENDING_SYNC_IOS);
}
-diff -r 45683461331d patch_info/innodb_io_patches.info
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/patch_info/innodb_io_patches.info Mon Dec 22 00:32:02 2008 -0800
-@@ -0,0 +1,9 @@
+diff -ruN a/patch_info/innodb_io_patches.info b/patch_info/innodb_io_patches.info
+--- /dev/null 1970-01-01 09:00:00.000000000 +0900
++++ b/patch_info/innodb_io_patches.info 2009-01-09 15:59:05.000000000 +0900
+@@ -0,0 +1,11 @@
+File=innodb_io_patches.patch
+Name=Cluster of past InnoDB IO patches
-+Version=1.0
++Version=1.1
+Author=Percona
+License=GPL
+Comment=This patch contains fixed (control_flush_and_merge_and_read, control_io-threads, adaptive_flush)
+ChangeLog=
+2008-11-06
+YK: Initial release
-diff -r 45683461331d sql/ha_innodb.cc
---- a/sql/ha_innodb.cc Mon Dec 22 00:31:16 2008 -0800
-+++ b/sql/ha_innodb.cc Mon Dec 22 00:32:02 2008 -0800
++2009-01-09
++YK: Some parameters are added
+diff -ruN a/sql/ha_innodb.cc b/sql/ha_innodb.cc
+--- a/sql/ha_innodb.cc 2009-01-09 15:40:23.000000000 +0900
++++ b/sql/ha_innodb.cc 2009-01-09 15:40:46.000000000 +0900
@@ -149,6 +149,7 @@
innobase_lock_wait_timeout, innobase_force_recovery,
innobase_open_files;
@@ -384,9 +453,9 @@
srv_lock_wait_timeout = (ulint) innobase_lock_wait_timeout;
srv_force_recovery = (ulint) innobase_force_recovery;
-diff -r 45683461331d sql/ha_innodb.h
---- a/sql/ha_innodb.h Mon Dec 22 00:31:16 2008 -0800
-+++ b/sql/ha_innodb.h Mon Dec 22 00:32:02 2008 -0800
+diff -ruN a/sql/ha_innodb.h b/sql/ha_innodb.h
+--- a/sql/ha_innodb.h 2009-01-09 15:40:23.000000000 +0900
++++ b/sql/ha_innodb.h 2009-01-09 15:59:41.000000000 +0900
@@ -204,6 +204,7 @@
extern long innobase_additional_mem_pool_size;
extern long innobase_buffer_pool_awe_mem_mb;
@@ -395,24 +464,32 @@
extern long innobase_force_recovery;
extern long innobase_open_files;
extern char *innobase_data_home_dir, *innobase_data_file_path;
-@@ -234,6 +235,9 @@
+@@ -234,6 +235,13 @@
extern ulong srv_thread_concurrency;
extern ulong srv_commit_concurrency;
extern ulong srv_flush_log_at_trx_commit;
+extern ulong srv_io_capacity;
-+extern ulong srv_read_ahead;
++extern long long srv_ibuf_max_size;
++extern ulong srv_ibuf_active_contract;
++extern ulong srv_ibuf_accel_rate;
++extern ulong srv_flush_neighbor_pages;
++extern uint srv_read_ahead;
+extern ulong srv_adaptive_checkpoint;
}
bool innobase_init(void);
-diff -r 45683461331d sql/mysqld.cc
---- a/sql/mysqld.cc Mon Dec 22 00:31:16 2008 -0800
-+++ b/sql/mysqld.cc Mon Dec 22 00:32:02 2008 -0800
-@@ -5036,6 +5036,11 @@
+diff -ruN a/sql/mysqld.cc b/sql/mysqld.cc
+--- a/sql/mysqld.cc 2009-01-09 15:40:23.000000000 +0900
++++ b/sql/mysqld.cc 2009-01-09 16:01:25.000000000 +0900
+@@ -5036,6 +5036,15 @@
OPT_INNODB_ROLLBACK_ON_TIMEOUT,
OPT_SECURE_FILE_PRIV,
OPT_KEEP_FILES_ON_CREATE,
+ OPT_INNODB_IO_CAPACITY,
++ OPT_INNODB_IBUF_MAX_SIZE,
++ OPT_INNODB_IBUF_ACTIVE_CONTRACT,
++ OPT_INNODB_IBUF_ACCEL_RATE,
++ OPT_INNODB_FLUSH_NEIGHBOR_PAGES,
+ OPT_INNODB_READ_AHEAD,
+ OPT_INNODB_ADAPTIVE_CHECKPOINT,
+ OPT_INNODB_READ_IO_THREADS,
@@ -420,7 +497,7 @@
OPT_INNODB_ADAPTIVE_HASH_INDEX,
OPT_FEDERATED
};
-@@ -5344,6 +5349,26 @@
+@@ -5344,6 +5353,41 @@
(gptr*) &global_system_variables.innodb_table_locks,
(gptr*) &global_system_variables.innodb_table_locks,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
@@ -428,12 +505,27 @@
+ "Number of IO operations per second the server can do. Tunes background IO rate.",
+ (gptr*) &srv_io_capacity, (gptr*) &srv_io_capacity,
+ 0, GET_ULONG, REQUIRED_ARG, 100, 100, 999999999, 0, 0, 0},
++ {"innodb_ibuf_max_size", OPT_INNODB_IBUF_MAX_SIZE,
++ "The maximum size of the insert buffer. (in bytes)",
++ (gptr*) &srv_ibuf_max_size, (gptr*) &srv_ibuf_max_size, 0,
++ GET_LL, REQUIRED_ARG, LONGLONG_MAX, 0, LONGLONG_MAX, 0, 0, 0},
++ {"innodb_ibuf_active_contract", OPT_INNODB_IBUF_ACTIVE_CONTRACT,
++ "Enable/Disable active_contract of insert buffer. 0:disable 1:enable",
++ (gptr*) &srv_ibuf_active_contract, (gptr*) &srv_ibuf_active_contract,
++ 0, GET_ULONG, REQUIRED_ARG, 0, 0, 1, 0, 0, 0},
++ {"innodb_ibuf_accel_rate", OPT_INNODB_IBUF_ACCEL_RATE,
++ "Tunes amount of insert buffer processing of background, in addition to innodb_io_capacity. (in percentage)",
++ (gptr*) &srv_ibuf_accel_rate, (gptr*) &srv_ibuf_accel_rate,
++ 0, GET_ULONG, REQUIRED_ARG, 100, 100, 999999999, 0, 0, 0},
++ {"innodb_flush_neighbor_pages", OPT_INNODB_FLUSH_NEIGHBOR_PAGES,
++ "Enable/Disable flushing also neighbor pages. 0:disable 1:enable",
++ (gptr*) &srv_flush_neighbor_pages, (gptr*) &srv_flush_neighbor_pages,
++ 0, GET_ULONG, REQUIRED_ARG, 1, 0, 1, 0, 0, 0},
+ {"innodb_read_ahead", OPT_INNODB_READ_AHEAD,
-+ "Enable/Diasable read aheads bit0:random bit1:linear",
-+ (gptr*) &srv_read_ahead, (gptr*) &srv_read_ahead,
-+ 0, GET_ULONG, REQUIRED_ARG, 3, 0, 3, 0, 0, 0},
++ "Control read ahead activity. (none, random, linear, [both])",
++ 0, 0, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"innodb_adaptive_checkpoint", OPT_INNODB_ADAPTIVE_CHECKPOINT,
-+ "Enable/Diasable flushing along modified age 0:disable 1:enable",
++ "Enable/Diasable flushing along modified age. 0:disable 1:enable",
+ (gptr*) &srv_adaptive_checkpoint, (gptr*) &srv_adaptive_checkpoint,
+ 0, GET_ULONG, REQUIRED_ARG, 0, 0, 1, 0, 0, 0},
+ {"innodb_read_io_threads", OPT_INNODB_READ_IO_THREADS,
@@ -447,37 +539,92 @@
#endif /* End HAVE_INNOBASE_DB */
{"isam", OPT_ISAM, "Obsolete. ISAM storage engine is no longer supported.",
(gptr*) &opt_isam, (gptr*) &opt_isam, 0, GET_BOOL, NO_ARG, 0, 0, 0,
-diff -r 45683461331d sql/set_var.cc
---- a/sql/set_var.cc Mon Dec 22 00:31:16 2008 -0800
-+++ b/sql/set_var.cc Mon Dec 22 00:32:02 2008 -0800
-@@ -484,6 +484,12 @@
+@@ -7637,6 +7636,22 @@
+ case OPT_INNODB_LOG_ARCHIVE:
+ innobase_log_archive= argument ? test(atoi(argument)) : 1;
+ break;
++ case OPT_INNODB_READ_AHEAD:
++ if (argument == disabled_my_option)
++ srv_read_ahead = 0;
++ else if (! argument)
++ srv_read_ahead = 3;
++ else
++ {
++ int type;
++ if ((type=find_type(argument, &innodb_read_ahead_typelib, 2)) <= 0)
++ {
++ fprintf(stderr,"Unknown innodb_read_ahead type: %s\n",argument);
++ exit(1);
++ }
++ srv_read_ahead = (uint) ((type - 1) & 3);
++ }
++ break;
+ #endif /* HAVE_INNOBASE_DB */
+ case OPT_MYISAM_RECOVER:
+ {
+diff -ruN a/sql/set_var.cc b/sql/set_var.cc
+--- a/sql/set_var.cc 2009-01-09 15:40:23.000000000 +0900
++++ b/sql/set_var.cc 2009-01-09 16:05:22.000000000 +0900
+@@ -484,6 +484,37 @@
sys_var_long_ptr sys_innodb_flush_log_at_trx_commit(
"innodb_flush_log_at_trx_commit",
&srv_flush_log_at_trx_commit);
+sys_var_long_ptr sys_innodb_io_capacity("innodb_io_capacity",
+ &srv_io_capacity);
-+sys_var_long_ptr sys_innodb_read_ahead("innodb_read_ahead",
-+ &srv_read_ahead);
++sys_var_long_ptr sys_innodb_ibuf_active_contract("innodb_ibuf_active_contract",
++ &srv_ibuf_active_contract);
++sys_var_long_ptr sys_innodb_ibuf_accel_rate("innodb_ibuf_accel_rate",
++ &srv_ibuf_accel_rate);
++sys_var_long_ptr sys_innodb_flush_neighbor_pages("innodb_flush_neighbor_pages",
++ &srv_flush_neighbor_pages);
++
++const char *innodb_read_ahead_names[]=
++{
++ "none", /* 0 */
++ "random",
++ "linear",
++ "both", /* 3 */
++ /* For compatibility of the older patch */
++ "0", /* 4 ("none" + 4) */
++ "1",
++ "2",
++ "3", /* 7 ("both" + 4) */
++ NullS
++};
++TYPELIB innodb_read_ahead_typelib=
++{
++ array_elements(innodb_read_ahead_names) - 1, "innodb_read_ahead_typelib",
++ innodb_read_ahead_names, NULL
++};
++sys_var_enum sys_innodb_read_ahead("innodb_read_ahead", &srv_read_ahead,
++ &innodb_read_ahead_typelib, fix_innodb_read_ahead);
+sys_var_long_ptr sys_innodb_adaptive_checkpoint("innodb_adaptive_checkpoint",
+ &srv_adaptive_checkpoint);
sys_var_const_os_str_ptr sys_innodb_data_file_path("innodb_data_file_path",
&innobase_data_file_path);
sys_var_const_os_str_ptr sys_innodb_data_home_dir("innodb_data_home_dir",
-@@ -847,6 +853,9 @@
+@@ -847,6 +859,12 @@
&sys_innodb_thread_concurrency,
&sys_innodb_commit_concurrency,
&sys_innodb_flush_log_at_trx_commit,
+ &sys_innodb_io_capacity,
++ &sys_innodb_ibuf_active_contract,
++ &sys_innodb_ibuf_accel_rate,
++ &sys_innodb_flush_neighbor_pages,
+ &sys_innodb_read_ahead,
+ &sys_innodb_adaptive_checkpoint,
#endif
&sys_trust_routine_creators,
&sys_trust_function_creators,
-@@ -982,6 +991,11 @@
+@@ -982,6 +1000,15 @@
{sys_innodb_table_locks.name, (char*) &sys_innodb_table_locks, SHOW_SYS},
{sys_innodb_thread_concurrency.name, (char*) &sys_innodb_thread_concurrency, SHOW_SYS},
{sys_innodb_thread_sleep_delay.name, (char*) &sys_innodb_thread_sleep_delay, SHOW_SYS},
+ {sys_innodb_io_capacity.name, (char*) &sys_innodb_io_capacity, SHOW_SYS},
++ {"innodb_ibuf_max_size", (char*) &srv_ibuf_max_size, SHOW_LONGLONG},
++ {sys_innodb_ibuf_active_contract.name, (char*) &sys_innodb_ibuf_active_contract, SHOW_SYS},
++ {sys_innodb_ibuf_accel_rate.name, (char*) &sys_innodb_ibuf_accel_rate, SHOW_SYS},
++ {sys_innodb_flush_neighbor_pages.name, (char*) &sys_innodb_flush_neighbor_pages, SHOW_SYS},
+ {sys_innodb_read_ahead.name, (char*) &sys_innodb_read_ahead, SHOW_SYS},
+ {sys_innodb_adaptive_checkpoint.name, (char*) &sys_innodb_adaptive_checkpoint, SHOW_SYS},
+ {"innodb_read_io_threads", (char*) &innobase_read_io_threads, SHOW_LONG},
@@ -485,3 +632,41 @@
#endif
{sys_interactive_timeout.name,(char*) &sys_interactive_timeout, SHOW_SYS},
{sys_join_buffer_size.name, (char*) &sys_join_buffer_size, SHOW_SYS},
+@@ -1482,6 +1501,13 @@
+ }
+ }
+
++#ifdef HAVE_INNOBASE_DB
++extern void fix_innodb_read_ahead(THD *thd, enum_var_type type)
++{
++ srv_read_ahead &= 3;
++}
++#endif /* HAVE_INNOBASE_DB */
++
+ static void fix_max_binlog_size(THD *thd, enum_var_type type)
+ {
+ DBUG_ENTER("fix_max_binlog_size");
+diff -ruN a/sql/set_var.h b/sql/set_var.h
+--- a/sql/set_var.h 2009-01-12 11:20:31.000000000 +0900
++++ b/sql/set_var.h 2009-01-12 15:26:35.000000000 +0900
+@@ -31,6 +31,10 @@
+
+ extern TYPELIB bool_typelib, delay_key_write_typelib, sql_mode_typelib;
+
++#ifdef HAVE_INNOBASE_DB
++extern TYPELIB innodb_read_ahead_typelib;
++#endif /* HAVE_INNOBASE_DB */
++
+ typedef int (*sys_check_func)(THD *, set_var *);
+ typedef bool (*sys_update_func)(THD *, set_var *);
+ typedef void (*sys_after_update_func)(THD *,enum_var_type);
+@@ -1114,6 +1118,9 @@
+ int sql_set_variables(THD *thd, List<set_var_base> *var_list);
+ bool not_all_support_one_shot(List<set_var_base> *var_list);
+ void fix_delay_key_write(THD *thd, enum_var_type type);
++#ifdef HAVE_INNOBASE_DB
++void fix_innodb_read_ahead(THD *thd, enum_var_type type);
++#endif /* HAVE_INNOBASE_DB */
+ ulong fix_sql_mode(ulong sql_mode);
+ extern sys_var_const_str sys_charset_system;
+ extern sys_var_str sys_init_connect;
================================================================
Index: SOURCES/mysql-innodb_locks_held.patch
diff -u SOURCES/mysql-innodb_locks_held.patch:1.1.2.1 SOURCES/mysql-innodb_locks_held.patch:1.1.2.2
--- SOURCES/mysql-innodb_locks_held.patch:1.1.2.1 Fri Jan 9 12:04:52 2009
+++ SOURCES/mysql-innodb_locks_held.patch Tue Feb 3 17:46:09 2009
@@ -62,6 +62,57 @@
byte srv_latin1_ordering[256] /* The sort order table of the latin1
character set. The following table is
+@@ -1694,24 +1696,6 @@
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/mysql-innodb_io_patches.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/mysql-innodb_locks_held.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/mysql-microsec_process.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/mysql-microslow_innodb.patch?r1=1.1.2.3&r2=1.1.2.4&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/mysql-userstatv2.patch?r1=1.1.2.3&r2=1.1.2.4&f=u
More information about the pld-cvs-commit
mailing list