Skip to content

RandallDW/IO_Scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

IO Scheduler

Introduction

In this project, we developed a new IO scheduler, named COOP, which is a cooperative IO scheduler considering both of request time and process priority. 

Running Environment

* Linux Kernel v4.12

Design

Coop_data

struct coop_data {
    struct list_head queue;         /* list by deadline */
    struct list_head vrt_queue;     /* list by vruntime - 10 node max */
    int    fifo_expire;             /* fifo keep running time */
    int    vrt_expire;              /* vrt keep running time */
    int    vrt_count;               /* node count in vrt queue */
    int    force_vrt;               /* force dispatch vrt queue */
    int    force_expire;            /* force keep running time */
    u64    lowest_vrt;              /* lowerest_vrt */
};
  • Fifo queue: Which intends to maintain the requests in the order they arrive.
  • Vruntime queue: If the process’s vruntime is low, it is added to this queue.

Coop_add_request

alt text

Dispatch

alt text

Execute Program

* $ make 
* $ sudo insmod coop.ko
* $ sudo echo coop > /sys/block/sda/queue/scheduler

Check current io_scheduler

* $ cat /sys/block/sda/queue/scheduler

Change current io_scheduler

* $ echo <new io_scheduler name> > /sys/block/sda/queue/scheduler

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published