mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Approved by Jimmy and Inaam. rb#1576
This commit is contained in:
@ -369,6 +369,33 @@ buf_get_total_list_len(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/********************************************************************//**
|
||||||
|
Get total list size in bytes from all buffer pools. */
|
||||||
|
UNIV_INTERN
|
||||||
|
void
|
||||||
|
buf_get_total_list_size_in_bytes(
|
||||||
|
/*=============================*/
|
||||||
|
buf_pools_list_size_t* buf_pools_list_size) /*!< out: list sizes
|
||||||
|
in all buffer pools */
|
||||||
|
{
|
||||||
|
ulint i;
|
||||||
|
ut_ad(buf_pools_list_size);
|
||||||
|
memset(buf_pools_list_size, 0, sizeof(*buf_pools_list_size));
|
||||||
|
|
||||||
|
for (i = 0; i < srv_buf_pool_instances; i++) {
|
||||||
|
buf_pool_t* buf_pool;
|
||||||
|
|
||||||
|
buf_pool = buf_pool_from_array(i);
|
||||||
|
/* We don't need mutex protection since this is
|
||||||
|
for statistics purpose */
|
||||||
|
buf_pools_list_size->LRU_bytes += buf_pool->stat.LRU_bytes;
|
||||||
|
buf_pools_list_size->unzip_LRU_bytes +=
|
||||||
|
UT_LIST_GET_LEN(buf_pool->unzip_LRU) * UNIV_PAGE_SIZE;
|
||||||
|
buf_pools_list_size->flush_list_bytes +=
|
||||||
|
buf_pool->stat.flush_list_bytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************************//**
|
/********************************************************************//**
|
||||||
Get total buffer pool statistics. */
|
Get total buffer pool statistics. */
|
||||||
UNIV_INTERN
|
UNIV_INTERN
|
||||||
@ -2951,6 +2978,7 @@ buf_page_init(
|
|||||||
ulint offset, /*!< in: offset of the page within space
|
ulint offset, /*!< in: offset of the page within space
|
||||||
in units of a page */
|
in units of a page */
|
||||||
ulint fold, /*!< in: buf_page_address_fold(space,offset) */
|
ulint fold, /*!< in: buf_page_address_fold(space,offset) */
|
||||||
|
ulint zip_size,/*!< in: compressed page size, or 0 */
|
||||||
buf_block_t* block) /*!< in/out: block to init */
|
buf_block_t* block) /*!< in/out: block to init */
|
||||||
{
|
{
|
||||||
buf_page_t* hash_page;
|
buf_page_t* hash_page;
|
||||||
@ -3013,6 +3041,9 @@ buf_page_init(
|
|||||||
ut_d(block->page.in_page_hash = TRUE);
|
ut_d(block->page.in_page_hash = TRUE);
|
||||||
HASH_INSERT(buf_page_t, hash, buf_pool->page_hash,
|
HASH_INSERT(buf_page_t, hash, buf_pool->page_hash,
|
||||||
fold, &block->page);
|
fold, &block->page);
|
||||||
|
if (zip_size) {
|
||||||
|
page_zip_set_size(&block->page.zip, zip_size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************//**
|
/********************************************************************//**
|
||||||
@ -3114,7 +3145,7 @@ err_exit:
|
|||||||
|
|
||||||
ut_ad(buf_pool_from_bpage(bpage) == buf_pool);
|
ut_ad(buf_pool_from_bpage(bpage) == buf_pool);
|
||||||
|
|
||||||
buf_page_init(buf_pool, space, offset, fold, block);
|
buf_page_init(buf_pool, space, offset, fold, zip_size, block);
|
||||||
|
|
||||||
/* The block must be put to the LRU list, to the old blocks */
|
/* The block must be put to the LRU list, to the old blocks */
|
||||||
buf_LRU_add_block(bpage, TRUE/* to old blocks */);
|
buf_LRU_add_block(bpage, TRUE/* to old blocks */);
|
||||||
@ -3132,8 +3163,6 @@ err_exit:
|
|||||||
buf_page_set_io_fix(bpage, BUF_IO_READ);
|
buf_page_set_io_fix(bpage, BUF_IO_READ);
|
||||||
|
|
||||||
if (UNIV_UNLIKELY(zip_size)) {
|
if (UNIV_UNLIKELY(zip_size)) {
|
||||||
page_zip_set_size(&block->page.zip, zip_size);
|
|
||||||
|
|
||||||
/* buf_pool->mutex may be released and
|
/* buf_pool->mutex may be released and
|
||||||
reacquired by buf_buddy_alloc(). Thus, we
|
reacquired by buf_buddy_alloc(). Thus, we
|
||||||
must release block->mutex in order not to
|
must release block->mutex in order not to
|
||||||
@ -3226,7 +3255,8 @@ err_exit:
|
|||||||
HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold,
|
HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold,
|
||||||
bpage);
|
bpage);
|
||||||
|
|
||||||
/* The block must be put to the LRU list, to the old blocks */
|
/* The block must be put to the LRU list, to the old blocks
|
||||||
|
The zip_size is already set into the page zip */
|
||||||
buf_LRU_add_block(bpage, TRUE/* to old blocks */);
|
buf_LRU_add_block(bpage, TRUE/* to old blocks */);
|
||||||
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
||||||
buf_LRU_insert_zip_clean(bpage);
|
buf_LRU_insert_zip_clean(bpage);
|
||||||
@ -3317,7 +3347,7 @@ buf_page_create(
|
|||||||
|
|
||||||
mutex_enter(&block->mutex);
|
mutex_enter(&block->mutex);
|
||||||
|
|
||||||
buf_page_init(buf_pool, space, offset, fold, block);
|
buf_page_init(buf_pool, space, offset, fold, zip_size, block);
|
||||||
|
|
||||||
/* The block must be put to the LRU list */
|
/* The block must be put to the LRU list */
|
||||||
buf_LRU_add_block(&block->page, FALSE);
|
buf_LRU_add_block(&block->page, FALSE);
|
||||||
@ -3335,8 +3365,6 @@ buf_page_create(
|
|||||||
|
|
||||||
buf_page_set_io_fix(&block->page, BUF_IO_READ);
|
buf_page_set_io_fix(&block->page, BUF_IO_READ);
|
||||||
rw_lock_x_lock(&block->lock);
|
rw_lock_x_lock(&block->lock);
|
||||||
|
|
||||||
page_zip_set_size(&block->page.zip, zip_size);
|
|
||||||
mutex_exit(&block->mutex);
|
mutex_exit(&block->mutex);
|
||||||
/* buf_pool->mutex may be released and reacquired by
|
/* buf_pool->mutex may be released and reacquired by
|
||||||
buf_buddy_alloc(). Thus, we must release block->mutex
|
buf_buddy_alloc(). Thus, we must release block->mutex
|
||||||
|
@ -79,6 +79,23 @@ static ulint buf_lru_flush_page_count = 0;
|
|||||||
|
|
||||||
/* @} */
|
/* @} */
|
||||||
|
|
||||||
|
/******************************************************************//**
|
||||||
|
Increases flush_list size in bytes with zip_size for compressed page,
|
||||||
|
UNIV_PAGE_SIZE for uncompressed page in inline function */
|
||||||
|
static inline
|
||||||
|
void
|
||||||
|
incr_flush_list_size_in_bytes(
|
||||||
|
/*==========================*/
|
||||||
|
buf_block_t* block, /*!< in: control block */
|
||||||
|
buf_pool_t* buf_pool) /*!< in: buffer pool instance */
|
||||||
|
{
|
||||||
|
ulint zip_size;
|
||||||
|
ut_ad(buf_flush_list_mutex_own(buf_pool));
|
||||||
|
zip_size = page_zip_get_size(&block->page.zip);
|
||||||
|
buf_pool->stat.flush_list_bytes += zip_size ? zip_size : UNIV_PAGE_SIZE;
|
||||||
|
ut_ad(buf_pool->stat.flush_list_bytes <= buf_pool->curr_pool_size);
|
||||||
|
}
|
||||||
|
|
||||||
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
||||||
/******************************************************************//**
|
/******************************************************************//**
|
||||||
Validates the flush list.
|
Validates the flush list.
|
||||||
@ -308,6 +325,7 @@ buf_flush_insert_into_flush_list(
|
|||||||
ut_d(block->page.in_flush_list = TRUE);
|
ut_d(block->page.in_flush_list = TRUE);
|
||||||
block->page.oldest_modification = lsn;
|
block->page.oldest_modification = lsn;
|
||||||
UT_LIST_ADD_FIRST(list, buf_pool->flush_list, &block->page);
|
UT_LIST_ADD_FIRST(list, buf_pool->flush_list, &block->page);
|
||||||
|
incr_flush_list_size_in_bytes(block, buf_pool);
|
||||||
|
|
||||||
#ifdef UNIV_DEBUG_VALGRIND
|
#ifdef UNIV_DEBUG_VALGRIND
|
||||||
{
|
{
|
||||||
@ -412,6 +430,8 @@ buf_flush_insert_sorted_into_flush_list(
|
|||||||
prev_b, &block->page);
|
prev_b, &block->page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
incr_flush_list_size_in_bytes(block, buf_pool);
|
||||||
|
|
||||||
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
||||||
ut_a(buf_flush_validate_low(buf_pool));
|
ut_a(buf_flush_validate_low(buf_pool));
|
||||||
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
|
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
|
||||||
@ -504,6 +524,7 @@ buf_flush_remove(
|
|||||||
buf_page_t* bpage) /*!< in: pointer to the block in question */
|
buf_page_t* bpage) /*!< in: pointer to the block in question */
|
||||||
{
|
{
|
||||||
buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
|
buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
|
||||||
|
ulint zip_size;
|
||||||
|
|
||||||
ut_ad(buf_pool_mutex_own(buf_pool));
|
ut_ad(buf_pool_mutex_own(buf_pool));
|
||||||
ut_ad(mutex_own(buf_page_get_mutex(bpage)));
|
ut_ad(mutex_own(buf_page_get_mutex(bpage)));
|
||||||
@ -542,6 +563,9 @@ buf_flush_remove(
|
|||||||
because we assert on in_flush_list in comparison function. */
|
because we assert on in_flush_list in comparison function. */
|
||||||
ut_d(bpage->in_flush_list = FALSE);
|
ut_d(bpage->in_flush_list = FALSE);
|
||||||
|
|
||||||
|
zip_size = page_zip_get_size(&bpage->zip);
|
||||||
|
buf_pool->stat.flush_list_bytes -= zip_size ? zip_size : UNIV_PAGE_SIZE;
|
||||||
|
|
||||||
bpage->oldest_modification = 0;
|
bpage->oldest_modification = 0;
|
||||||
|
|
||||||
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
||||||
|
@ -150,6 +150,23 @@ buf_LRU_block_free_hashed_page(
|
|||||||
buf_block_t* block); /*!< in: block, must contain a file page and
|
buf_block_t* block); /*!< in: block, must contain a file page and
|
||||||
be in a state where it can be freed */
|
be in a state where it can be freed */
|
||||||
|
|
||||||
|
/******************************************************************//**
|
||||||
|
Increases LRU size in bytes with zip_size for compressed page,
|
||||||
|
UNIV_PAGE_SIZE for uncompressed page in inline function */
|
||||||
|
static inline
|
||||||
|
void
|
||||||
|
incr_LRU_size_in_bytes(
|
||||||
|
/*===================*/
|
||||||
|
buf_page_t* bpage, /*!< in: control block */
|
||||||
|
buf_pool_t* buf_pool) /*!< in: buffer pool instance */
|
||||||
|
{
|
||||||
|
ulint zip_size;
|
||||||
|
ut_ad(buf_pool_mutex_own(buf_pool));
|
||||||
|
zip_size = page_zip_get_size(&bpage->zip);
|
||||||
|
buf_pool->stat.LRU_bytes += zip_size ? zip_size : UNIV_PAGE_SIZE;
|
||||||
|
ut_ad(buf_pool->stat.LRU_bytes <= buf_pool->curr_pool_size);
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************//**
|
/******************************************************************//**
|
||||||
Determines if the unzip_LRU list should be used for evicting a victim
|
Determines if the unzip_LRU list should be used for evicting a victim
|
||||||
instead of the general LRU list.
|
instead of the general LRU list.
|
||||||
@ -1356,6 +1373,7 @@ buf_LRU_remove_block(
|
|||||||
buf_page_t* bpage) /*!< in: control block */
|
buf_page_t* bpage) /*!< in: control block */
|
||||||
{
|
{
|
||||||
buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
|
buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
|
||||||
|
ulint zip_size;
|
||||||
|
|
||||||
ut_ad(buf_pool);
|
ut_ad(buf_pool);
|
||||||
ut_ad(bpage);
|
ut_ad(bpage);
|
||||||
@ -1391,6 +1409,9 @@ buf_LRU_remove_block(
|
|||||||
UT_LIST_REMOVE(LRU, buf_pool->LRU, bpage);
|
UT_LIST_REMOVE(LRU, buf_pool->LRU, bpage);
|
||||||
ut_d(bpage->in_LRU_list = FALSE);
|
ut_d(bpage->in_LRU_list = FALSE);
|
||||||
|
|
||||||
|
zip_size = page_zip_get_size(&bpage->zip);
|
||||||
|
buf_pool->stat.LRU_bytes -= zip_size ? zip_size : UNIV_PAGE_SIZE;
|
||||||
|
|
||||||
buf_unzip_LRU_remove_block_if_needed(bpage);
|
buf_unzip_LRU_remove_block_if_needed(bpage);
|
||||||
|
|
||||||
/* If the LRU list is so short that LRU_old is not defined,
|
/* If the LRU list is so short that LRU_old is not defined,
|
||||||
@ -1451,7 +1472,10 @@ buf_unzip_LRU_add_block(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************//**
|
/******************************************************************//**
|
||||||
Adds a block to the LRU list end. */
|
Adds a block to the LRU list end. Please make sure that the zip_size is
|
||||||
|
already set into the page zip when invoking the function, so that we
|
||||||
|
can get correct zip_size from the buffer page when adding a block
|
||||||
|
into LRU */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
void
|
void
|
||||||
buf_LRU_add_block_to_end_low(
|
buf_LRU_add_block_to_end_low(
|
||||||
@ -1470,6 +1494,8 @@ buf_LRU_add_block_to_end_low(
|
|||||||
UT_LIST_ADD_LAST(LRU, buf_pool->LRU, bpage);
|
UT_LIST_ADD_LAST(LRU, buf_pool->LRU, bpage);
|
||||||
ut_d(bpage->in_LRU_list = TRUE);
|
ut_d(bpage->in_LRU_list = TRUE);
|
||||||
|
|
||||||
|
incr_LRU_size_in_bytes(bpage, buf_pool);
|
||||||
|
|
||||||
if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
|
if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
|
||||||
|
|
||||||
ut_ad(buf_pool->LRU_old);
|
ut_ad(buf_pool->LRU_old);
|
||||||
@ -1498,7 +1524,10 @@ buf_LRU_add_block_to_end_low(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************//**
|
/******************************************************************//**
|
||||||
Adds a block to the LRU list. */
|
Adds a block to the LRU list. Please make sure that the zip_size is
|
||||||
|
already set into the page zip when invoking the function, so that we
|
||||||
|
can get correct zip_size from the buffer page when adding a block
|
||||||
|
into LRU */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
void
|
void
|
||||||
buf_LRU_add_block_low(
|
buf_LRU_add_block_low(
|
||||||
@ -1540,6 +1569,8 @@ buf_LRU_add_block_low(
|
|||||||
|
|
||||||
ut_d(bpage->in_LRU_list = TRUE);
|
ut_d(bpage->in_LRU_list = TRUE);
|
||||||
|
|
||||||
|
incr_LRU_size_in_bytes(bpage, buf_pool);
|
||||||
|
|
||||||
if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
|
if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
|
||||||
|
|
||||||
ut_ad(buf_pool->LRU_old);
|
ut_ad(buf_pool->LRU_old);
|
||||||
@ -1567,7 +1598,10 @@ buf_LRU_add_block_low(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************//**
|
/******************************************************************//**
|
||||||
Adds a block to the LRU list. */
|
Adds a block to the LRU list. Please make sure that the zip_size is
|
||||||
|
already set into the page zip when invoking the function, so that we
|
||||||
|
can get correct zip_size from the buffer page when adding a block
|
||||||
|
into LRU */
|
||||||
UNIV_INTERN
|
UNIV_INTERN
|
||||||
void
|
void
|
||||||
buf_LRU_add_block(
|
buf_LRU_add_block(
|
||||||
@ -1753,6 +1787,8 @@ alloc:
|
|||||||
UT_LIST_INSERT_AFTER(LRU, buf_pool->LRU,
|
UT_LIST_INSERT_AFTER(LRU, buf_pool->LRU,
|
||||||
prev_b, b);
|
prev_b, b);
|
||||||
|
|
||||||
|
incr_LRU_size_in_bytes(b, buf_pool);
|
||||||
|
|
||||||
if (buf_page_is_old(b)) {
|
if (buf_page_is_old(b)) {
|
||||||
buf_pool->LRU_old_len++;
|
buf_pool->LRU_old_len++;
|
||||||
if (UNIV_UNLIKELY
|
if (UNIV_UNLIKELY
|
||||||
|
@ -601,8 +601,12 @@ innobase_commit_low(
|
|||||||
static SHOW_VAR innodb_status_variables[]= {
|
static SHOW_VAR innodb_status_variables[]= {
|
||||||
{"buffer_pool_pages_data",
|
{"buffer_pool_pages_data",
|
||||||
(char*) &export_vars.innodb_buffer_pool_pages_data, SHOW_LONG},
|
(char*) &export_vars.innodb_buffer_pool_pages_data, SHOW_LONG},
|
||||||
|
{"buffer_pool_bytes_data",
|
||||||
|
(char*) &export_vars.innodb_buffer_pool_bytes_data, SHOW_LONG},
|
||||||
{"buffer_pool_pages_dirty",
|
{"buffer_pool_pages_dirty",
|
||||||
(char*) &export_vars.innodb_buffer_pool_pages_dirty, SHOW_LONG},
|
(char*) &export_vars.innodb_buffer_pool_pages_dirty, SHOW_LONG},
|
||||||
|
{"buffer_pool_bytes_dirty",
|
||||||
|
(char*) &export_vars.innodb_buffer_pool_bytes_dirty, SHOW_LONG},
|
||||||
{"buffer_pool_pages_flushed",
|
{"buffer_pool_pages_flushed",
|
||||||
(char*) &export_vars.innodb_buffer_pool_pages_flushed, SHOW_LONG},
|
(char*) &export_vars.innodb_buffer_pool_pages_flushed, SHOW_LONG},
|
||||||
{"buffer_pool_pages_free",
|
{"buffer_pool_pages_free",
|
||||||
|
@ -198,6 +198,15 @@ struct buf_pool_info_struct{
|
|||||||
|
|
||||||
typedef struct buf_pool_info_struct buf_pool_info_t;
|
typedef struct buf_pool_info_struct buf_pool_info_t;
|
||||||
|
|
||||||
|
/** The occupied bytes of lists in all buffer pools */
|
||||||
|
struct buf_pools_list_size_struct {
|
||||||
|
ulint LRU_bytes; /*!< LRU size in bytes */
|
||||||
|
ulint unzip_LRU_bytes; /*!< unzip_LRU size in bytes */
|
||||||
|
ulint flush_list_bytes; /*!< flush_list size in bytes */
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct buf_pools_list_size_struct buf_pools_list_size_t;
|
||||||
|
|
||||||
#ifndef UNIV_HOTBACKUP
|
#ifndef UNIV_HOTBACKUP
|
||||||
/********************************************************************//**
|
/********************************************************************//**
|
||||||
Acquire mutex on all buffer pool instances */
|
Acquire mutex on all buffer pool instances */
|
||||||
@ -1333,6 +1342,14 @@ buf_get_total_list_len(
|
|||||||
ulint* free_len, /*!< out: length of all free lists */
|
ulint* free_len, /*!< out: length of all free lists */
|
||||||
ulint* flush_list_len);/*!< out: length of all flush lists */
|
ulint* flush_list_len);/*!< out: length of all flush lists */
|
||||||
/********************************************************************//**
|
/********************************************************************//**
|
||||||
|
Get total list size in bytes from all buffer pools. */
|
||||||
|
UNIV_INTERN
|
||||||
|
void
|
||||||
|
buf_get_total_list_size_in_bytes(
|
||||||
|
/*=============================*/
|
||||||
|
buf_pools_list_size_t* buf_pools_list_size); /*!< out: list sizes
|
||||||
|
in all buffer pools */
|
||||||
|
/********************************************************************//**
|
||||||
Get total buffer pool statistics. */
|
Get total buffer pool statistics. */
|
||||||
UNIV_INTERN
|
UNIV_INTERN
|
||||||
void
|
void
|
||||||
@ -1685,6 +1702,8 @@ struct buf_pool_stat_struct{
|
|||||||
young because the first access
|
young because the first access
|
||||||
was not long enough ago, in
|
was not long enough ago, in
|
||||||
buf_page_peek_if_too_old() */
|
buf_page_peek_if_too_old() */
|
||||||
|
ulint LRU_bytes; /*!< LRU size in bytes */
|
||||||
|
ulint flush_list_bytes;/*!< flush_list size in bytes */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Statistics of buddy blocks of a given size. */
|
/** Statistics of buddy blocks of a given size. */
|
||||||
|
@ -149,7 +149,10 @@ buf_LRU_block_free_non_file_page(
|
|||||||
/*=============================*/
|
/*=============================*/
|
||||||
buf_block_t* block); /*!< in: block, must not contain a file page */
|
buf_block_t* block); /*!< in: block, must not contain a file page */
|
||||||
/******************************************************************//**
|
/******************************************************************//**
|
||||||
Adds a block to the LRU list. */
|
Adds a block to the LRU list. Please make sure that the zip_size is
|
||||||
|
already set into the page zip when invoking the function, so that we
|
||||||
|
can get correct zip_size from the buffer page when adding a block
|
||||||
|
into LRU */
|
||||||
UNIV_INTERN
|
UNIV_INTERN
|
||||||
void
|
void
|
||||||
buf_LRU_add_block(
|
buf_LRU_add_block(
|
||||||
|
@ -707,7 +707,9 @@ struct export_var_struct{
|
|||||||
ulint innodb_data_reads; /*!< I/O read requests */
|
ulint innodb_data_reads; /*!< I/O read requests */
|
||||||
ulint innodb_buffer_pool_pages_total; /*!< Buffer pool size */
|
ulint innodb_buffer_pool_pages_total; /*!< Buffer pool size */
|
||||||
ulint innodb_buffer_pool_pages_data; /*!< Data pages */
|
ulint innodb_buffer_pool_pages_data; /*!< Data pages */
|
||||||
|
ulint innodb_buffer_pool_bytes_data; /*!< File bytes used */
|
||||||
ulint innodb_buffer_pool_pages_dirty; /*!< Dirty data pages */
|
ulint innodb_buffer_pool_pages_dirty; /*!< Dirty data pages */
|
||||||
|
ulint innodb_buffer_pool_bytes_dirty; /*!< File bytes modified */
|
||||||
ulint innodb_buffer_pool_pages_misc; /*!< Miscellanous pages */
|
ulint innodb_buffer_pool_pages_misc; /*!< Miscellanous pages */
|
||||||
ulint innodb_buffer_pool_pages_free; /*!< Free pages */
|
ulint innodb_buffer_pool_pages_free; /*!< Free pages */
|
||||||
#ifdef UNIV_DEBUG
|
#ifdef UNIV_DEBUG
|
||||||
|
@ -2016,13 +2016,15 @@ void
|
|||||||
srv_export_innodb_status(void)
|
srv_export_innodb_status(void)
|
||||||
/*==========================*/
|
/*==========================*/
|
||||||
{
|
{
|
||||||
buf_pool_stat_t stat;
|
buf_pool_stat_t stat;
|
||||||
ulint LRU_len;
|
buf_pools_list_size_t buf_pools_list_size;
|
||||||
ulint free_len;
|
ulint LRU_len;
|
||||||
ulint flush_list_len;
|
ulint free_len;
|
||||||
|
ulint flush_list_len;
|
||||||
|
|
||||||
buf_get_total_stat(&stat);
|
buf_get_total_stat(&stat);
|
||||||
buf_get_total_list_len(&LRU_len, &free_len, &flush_list_len);
|
buf_get_total_list_len(&LRU_len, &free_len, &flush_list_len);
|
||||||
|
buf_get_total_list_size_in_bytes(&buf_pools_list_size);
|
||||||
|
|
||||||
mutex_enter(&srv_innodb_monitor_mutex);
|
mutex_enter(&srv_innodb_monitor_mutex);
|
||||||
|
|
||||||
@ -2051,7 +2053,12 @@ srv_export_innodb_status(void)
|
|||||||
export_vars.innodb_buffer_pool_read_ahead_evicted
|
export_vars.innodb_buffer_pool_read_ahead_evicted
|
||||||
= stat.n_ra_pages_evicted;
|
= stat.n_ra_pages_evicted;
|
||||||
export_vars.innodb_buffer_pool_pages_data = LRU_len;
|
export_vars.innodb_buffer_pool_pages_data = LRU_len;
|
||||||
|
export_vars.innodb_buffer_pool_bytes_data =
|
||||||
|
buf_pools_list_size.LRU_bytes
|
||||||
|
+ buf_pools_list_size.unzip_LRU_bytes;
|
||||||
export_vars.innodb_buffer_pool_pages_dirty = flush_list_len;
|
export_vars.innodb_buffer_pool_pages_dirty = flush_list_len;
|
||||||
|
export_vars.innodb_buffer_pool_bytes_dirty =
|
||||||
|
buf_pools_list_size.flush_list_bytes;
|
||||||
export_vars.innodb_buffer_pool_pages_free = free_len;
|
export_vars.innodb_buffer_pool_pages_free = free_len;
|
||||||
#ifdef UNIV_DEBUG
|
#ifdef UNIV_DEBUG
|
||||||
export_vars.innodb_buffer_pool_pages_latched
|
export_vars.innodb_buffer_pool_pages_latched
|
||||||
|
Reference in New Issue
Block a user