mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
![Justin TerAvest](/assets/img/avatar_default.png)
There are two kind of times that tasks are not charged for: the first seek and the extra time slice used over the allocated timeslice. Both of these exported as a new unaccounted_time stat. I think it would be good to have this reported in 'time' as well, but that is probably a separate discussion. Signed-off-by: Justin TerAvest <teravest@google.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
115 lines
3.7 KiB
C
115 lines
3.7 KiB
C
#ifndef _CFQ_H
|
|
#define _CFQ_H
|
|
#include "blk-cgroup.h"
|
|
|
|
#ifdef CONFIG_CFQ_GROUP_IOSCHED
|
|
static inline void cfq_blkiocg_update_io_add_stats(struct blkio_group *blkg,
|
|
struct blkio_group *curr_blkg, bool direction, bool sync)
|
|
{
|
|
blkiocg_update_io_add_stats(blkg, curr_blkg, direction, sync);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_update_dequeue_stats(struct blkio_group *blkg,
|
|
unsigned long dequeue)
|
|
{
|
|
blkiocg_update_dequeue_stats(blkg, dequeue);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_update_timeslice_used(struct blkio_group *blkg,
|
|
unsigned long time, unsigned long unaccounted_time)
|
|
{
|
|
blkiocg_update_timeslice_used(blkg, time, unaccounted_time);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_set_start_empty_time(struct blkio_group *blkg)
|
|
{
|
|
blkiocg_set_start_empty_time(blkg);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_update_io_remove_stats(struct blkio_group *blkg,
|
|
bool direction, bool sync)
|
|
{
|
|
blkiocg_update_io_remove_stats(blkg, direction, sync);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_update_io_merged_stats(struct blkio_group *blkg,
|
|
bool direction, bool sync)
|
|
{
|
|
blkiocg_update_io_merged_stats(blkg, direction, sync);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_update_idle_time_stats(struct blkio_group *blkg)
|
|
{
|
|
blkiocg_update_idle_time_stats(blkg);
|
|
}
|
|
|
|
static inline void
|
|
cfq_blkiocg_update_avg_queue_size_stats(struct blkio_group *blkg)
|
|
{
|
|
blkiocg_update_avg_queue_size_stats(blkg);
|
|
}
|
|
|
|
static inline void
|
|
cfq_blkiocg_update_set_idle_time_stats(struct blkio_group *blkg)
|
|
{
|
|
blkiocg_update_set_idle_time_stats(blkg);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_update_dispatch_stats(struct blkio_group *blkg,
|
|
uint64_t bytes, bool direction, bool sync)
|
|
{
|
|
blkiocg_update_dispatch_stats(blkg, bytes, direction, sync);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_update_completion_stats(struct blkio_group *blkg, uint64_t start_time, uint64_t io_start_time, bool direction, bool sync)
|
|
{
|
|
blkiocg_update_completion_stats(blkg, start_time, io_start_time,
|
|
direction, sync);
|
|
}
|
|
|
|
static inline void cfq_blkiocg_add_blkio_group(struct blkio_cgroup *blkcg,
|
|
struct blkio_group *blkg, void *key, dev_t dev) {
|
|
blkiocg_add_blkio_group(blkcg, blkg, key, dev, BLKIO_POLICY_PROP);
|
|
}
|
|
|
|
static inline int cfq_blkiocg_del_blkio_group(struct blkio_group *blkg)
|
|
{
|
|
return blkiocg_del_blkio_group(blkg);
|
|
}
|
|
|
|
#else /* CFQ_GROUP_IOSCHED */
|
|
static inline void cfq_blkiocg_update_io_add_stats(struct blkio_group *blkg,
|
|
struct blkio_group *curr_blkg, bool direction, bool sync) {}
|
|
|
|
static inline void cfq_blkiocg_update_dequeue_stats(struct blkio_group *blkg,
|
|
unsigned long dequeue) {}
|
|
|
|
static inline void cfq_blkiocg_update_timeslice_used(struct blkio_group *blkg,
|
|
unsigned long time, unsigned long unaccounted_time) {}
|
|
static inline void cfq_blkiocg_set_start_empty_time(struct blkio_group *blkg) {}
|
|
static inline void cfq_blkiocg_update_io_remove_stats(struct blkio_group *blkg,
|
|
bool direction, bool sync) {}
|
|
static inline void cfq_blkiocg_update_io_merged_stats(struct blkio_group *blkg,
|
|
bool direction, bool sync) {}
|
|
static inline void cfq_blkiocg_update_idle_time_stats(struct blkio_group *blkg)
|
|
{
|
|
}
|
|
static inline void
|
|
cfq_blkiocg_update_avg_queue_size_stats(struct blkio_group *blkg) {}
|
|
|
|
static inline void
|
|
cfq_blkiocg_update_set_idle_time_stats(struct blkio_group *blkg) {}
|
|
|
|
static inline void cfq_blkiocg_update_dispatch_stats(struct blkio_group *blkg,
|
|
uint64_t bytes, bool direction, bool sync) {}
|
|
static inline void cfq_blkiocg_update_completion_stats(struct blkio_group *blkg, uint64_t start_time, uint64_t io_start_time, bool direction, bool sync) {}
|
|
|
|
static inline void cfq_blkiocg_add_blkio_group(struct blkio_cgroup *blkcg,
|
|
struct blkio_group *blkg, void *key, dev_t dev) {}
|
|
static inline int cfq_blkiocg_del_blkio_group(struct blkio_group *blkg)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
#endif /* CFQ_GROUP_IOSCHED */
|
|
#endif
|