[PATCH 7/7] vinyl: keep track of disk idle time

Vladimir Davydov vdavydov.dev at gmail.com
Tue Sep 4 14:54:04 MSK 2018


Please ignore this patch, because it's incorrect: since we always
keep one worker reserved for dumps it will should that the disk is
1/box.cfg.vinyl_writers idle even if compaction never stops, which
is misleading. I'll rework and resend it separately.

On Sun, Sep 02, 2018 at 11:19:00PM +0300, Vladimir Davydov wrote:
> To understand whether the disk is fully utilized or can still handle
> more compaction load and make right decisions regarding transaction
> throttling, we need a metric that would report how much time worker
> threads spent being idle. So this patch adds a new metric to global
> statistics, box.stat.vinyl().disk.idle_ratio. The metric is updated
> on each dump using the following formula:
> 
>                        idle_time
>   idle_ratio = --------------------------
>                dump_period * worker_count
> 
> where idle_time is the total amount of time workers were idle between
> the last two dumps, dump_period is the time that passed between the last
> two dumps, worker_count is the number of workers.
> 
> The value of the new metric always lays between 0 inclusive and 1
> exclusive. The closer it is to 1 the more busy the disk is.
> ---
>  src/box/vinyl.c            |  1 +
>  src/box/vy_scheduler.c     | 48 +++++++++++++++++++++++++++++++----
>  src/box/vy_scheduler.h     | 12 +++++++++
>  test/vinyl/errinj.result   | 62 ++++++++++++++++++++++++++++++++++++++++++++++
>  test/vinyl/errinj.test.lua | 22 ++++++++++++++++
>  test/vinyl/info.result     |  1 +
>  test/vinyl/info.test.lua   |  1 +
>  7 files changed, 142 insertions(+), 5 deletions(-)



More information about the Tarantool-patches mailing list