cfq-iosched: use the default seek distance when there aren't enough seek samples
If the cfq io context doesn't have enough samples yet to provide a mean seek distance, then use the default threshold we have for seeky IO instead of defaulting to 0. Signed-off-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
4d00aa47e2
commit
04dc6e71a2
1 changed files with 6 additions and 5 deletions
|
@ -947,14 +947,18 @@ static inline sector_t cfq_dist_from_last(struct cfq_data *cfqd,
|
||||||
return cfqd->last_position - rq->sector;
|
return cfqd->last_position - rq->sector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CIC_SEEK_THR 8 * 1024
|
||||||
|
#define CIC_SEEKY(cic) ((cic)->seek_mean > CIC_SEEK_THR)
|
||||||
|
|
||||||
static inline int cfq_rq_close(struct cfq_data *cfqd, struct request *rq)
|
static inline int cfq_rq_close(struct cfq_data *cfqd, struct request *rq)
|
||||||
{
|
{
|
||||||
struct cfq_io_context *cic = cfqd->active_cic;
|
struct cfq_io_context *cic = cfqd->active_cic;
|
||||||
|
sector_t sdist = cic->seek_mean;
|
||||||
|
|
||||||
if (!sample_valid(cic->seek_samples))
|
if (!sample_valid(cic->seek_samples))
|
||||||
return 0;
|
sdist = CIC_SEEK_THR;
|
||||||
|
|
||||||
return cfq_dist_from_last(cfqd, rq) <= cic->seek_mean;
|
return cfq_dist_from_last(cfqd, rq) <= sdist;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct cfq_queue *cfqq_close(struct cfq_data *cfqd,
|
static struct cfq_queue *cfqq_close(struct cfq_data *cfqd,
|
||||||
|
@ -1039,9 +1043,6 @@ static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
|
||||||
return cfqq;
|
return cfqq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define CIC_SEEKY(cic) ((cic)->seek_mean > (8 * 1024))
|
|
||||||
|
|
||||||
static void cfq_arm_slice_timer(struct cfq_data *cfqd)
|
static void cfq_arm_slice_timer(struct cfq_data *cfqd)
|
||||||
{
|
{
|
||||||
struct cfq_queue *cfqq = cfqd->active_queue;
|
struct cfq_queue *cfqq = cfqd->active_queue;
|
||||||
|
|
Loading…
Reference in a new issue