[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Performance problem with mysql on a 3ware 1+0 raid array



On Friday May 2, mbasil alabanza com wrote:
> Heh... that's funny.  That last message stopped at a lone period on the line.  
> :o)  Here's the actual message.
> 
> 
> 
> Hi Neil,
> 
> I have a question regarding your bdflush settings.  The kernel docs say the 
> following:
> 
> 
> 
> Table 2-2: Parameters in /proc/sys/vm/bdflush
> ..............................................................................
>  Value      Meaning
>  nfract     Percentage of buffer cache dirty to  activate bdflush
>  ndirty     Maximum number of dirty blocks to  write out per wake-cycle
>  nrefill    Number of clean buffers to try to obtain  each time we call refill
>  nref_dirt  buffer threshold for activating bdflush when trying to refill
>             buffers.
>  dummy      Unused
>  age_buffer Time for normal buffer to age before we flush it
>  age_super  Time for superblock to age before we flush it
>  dummy      Unused
>  dummy      Unused
> ..............................................................................
> 
> 

But the kernel source says :
fs/buffer.c:
union bdflush_param {
	struct {
		int nfract;	/* Percentage of buffer cache dirty to 
				   activate bdflush */
		int ndirty;	/* Maximum number of dirty blocks to write out per
				   wake-cycle */
		int dummy2;	/* old "nrefill" */
		int dummy3;	/* unused */
		int interval;	/* jiffies delay between kupdate flushes */
		int age_buffer;	/* Time for normal buffer to age before we flush it */
		int nfract_sync;/* Percentage of buffer cache dirty to 
				   activate bdflush synchronously */
		int nfract_stop_bdflush; /* Percetange of buffer cache dirty to stop bdflush */
		int dummy5;	/* unused */
	} b_un;
	unsigned int data[N_PARAM];
} bdf_prm = {{30, 500, 0, 0, 5*HZ, 30*HZ, 60, 20, 0}};

So the 5th number is 'interval'.

Later:
		/* update interval */
		interval = bdf_prm.b_un.interval;
		if (interval) {
			tsk->state = TASK_INTERRUPTIBLE;
			schedule_timeout(interval);
		} else {
		stop_kupdate:
			tsk->state = TASK_STOPPED;
			schedule(); /* wait for SIGCONT */
		}

so interval seems to actually be used.  Maybe someone should update
the kernel docs..... but I just check the current kernel docs:
   Documentation/filesystems/proc.txt
and
   Documentation/sysctl/vm.txt
both from the current 2.4.latest tree and they seem to be correct.

NeilBrown





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]