Public feed #893542

Untitled

public c v1 · immutable
Raw Edit
·published 2008-02-06 05:50 UTC
rendered paste body
#ifndef __WIN__void*#elseulint#endifsrv_buffer_pool_proactive_thread(/*=====================*/			/* out: a dummy parameter */	void*	arg __attribute__((unused)))			/* in: a dummy parameter required by			os_thread_create */{  ibool freed;  ulint flushed;  ulint free_blocks, threshold, blocks_to_free;  ulint target_blocks, chunk_blocks;	/*os_thread_exit(NULL);*/#ifdef UNIV_DEBUG_THREAD_CREATION	fprintf(stderr, "Buffer pool proactive free thread starts, id %lu\n",			      os_thread_pf(os_thread_get_curr_id()));  fflush(stderr);#endif	os_thread_sleep(5000000);loop:  fprintf(stderr, "Sleeping for %li ms\n",     srv_buffer_pool_proactive_free_interval);  fflush(stderr);	os_thread_sleep(1000 * srv_buffer_pool_proactive_free_interval);  if(!srv_buffer_pool_proactive_free_size)    goto loop;  target_blocks = srv_buffer_pool_proactive_free_size / UNIV_PAGE_SIZE;  chunk_blocks  = srv_buffer_pool_proactive_free_chunk / UNIV_PAGE_SIZE;  free_blocks   = UT_LIST_GET_LEN(buf_pool->free);  blocks_to_free = target_blocks - free_blocks;    if(chunk_blocks && (blocks_to_free > chunk_blocks))  {    blocks_to_free= chunk_blocks;  }  if(free_blocks < target_blocks)  {    fprintf(stderr, "\n\nTrying to free %li pages...\n", blocks_to_free);    fprintf(stderr, "Before free: free = %6li, target = %6i, total = %6li\n",      free_blocks, target_blocks, buf_pool->max_size);        fflush(stderr);        flushed = buf_flush_batch(BUF_FLUSH_LRU, blocks_to_free, ut_dulint_zero);    freed = buf_LRU_search_and_free_block(1, blocks_to_free);    fprintf(stderr, "After free : free = %6li, target = %6i, max = %6li, flushed = %6li\n",      UT_LIST_GET_LEN(buf_pool->free), target_blocks, buf_pool->max_size, flushed);    fflush(stderr);  } else {    fprintf(stderr, "No free: free = %6li, target = %6i, total = %6li\n",      free_blocks, target_blocks, buf_pool->max_size);        fflush(stderr);  }  	if (srv_shutdown_state < SRV_SHUTDOWN_CLEANUP) {		goto loop;	}	os_thread_exit(NULL);#ifndef __WIN__	return(NULL);#else	return(0);#endif}