Request schedulers

Checking correctness of request scheduling with R

PDF plot should match expected

Inter-arrival time request scheduler

Think-time based request scheduler

Functions

rqsvar_step

public

STATIC_INLINE void rqsvar_step(rqsched_t* rqs, double iat) 

rqsvar_unregister, rqsvar_register

public

LIBEXPORT int rqsvar_register(module_t* mod, rqsvar_class_t* rqsvar_class)
LIBEXPORT int rqsvar_unregister(module_t* mod, rqsvar_class_t* rqsvar_class)

rqsched_register, rqsched_unregister

public

LIBEXPORT int rqsched_register(module_t* mod, rqsched_class_t* rqs_class)
LIBEXPORT int rqsched_unregister(module_t* mod, rqsched_class_t* rqs_class)

rqsched_init, rqsched_fini

public

LIBEXPORT int rqsched_init(void)
LIBEXPORT void rqsched_fini(void)

Types

typedef struct rqsvar_class

typedef struct rqsvar_class {
    AUTOSTRING char* rqsvar_name;
    
    randvar_class_t* rqsvar_rvclass;
    struct tsload_param* rqsvar_params;
    
    int (*rqsvar_init)(struct rqsched_var* var);
    void (*rqsvar_destroy)(struct rqsched_var* var);
    
    int (*rqsvar_set_int)(struct rqsched_var* var, const char* name, long value);
    int (*rqsvar_set_double)(struct rqsched_var* var, const char* name, double value);
    
    int (*rqsvar_step)(struct rqsched_var* var, double iat);
    
    module_t* rqsvar_module;
    struct rqsvar_class* rqsvar_next;
} rqsvar_class_t;

typedef struct rqsched_class

typedef struct rqsched_class {
    AUTOSTRING char* rqsched_name;
    const char* rqsched_description;
    
    int rqsched_flags;
    struct tsload_param* rqsched_params;

    int  (*rqsched_proc_tsobj)(tsobj_node_t* node, workload_t* wl, struct rqsched* rqs);
    void (*rqsched_fini)(workload_t* wl, struct rqsched* rqs);

    void (*rqsched_step)(workload_step_t* step);        /* Called when new step starts */

    void (*rqsched_pre_request)(request_t* rq);        /* Called while request is scheduling */
    void (*rqsched_post_request)(request_t* rq);        /* Called when request is complete */
    
    module_t* rqsched_module;
    struct rqsched_class* rqsched_next;
} rqsched_class_t;

typedef struct rqsched_var

typedef struct rqsched_var {
    rqsvar_class_t* class;
    randgen_t* randgen;
    randvar_t* randvar;
    
    union {
        double dval;
        long   lval;
        void*  private;
    } params;
} rqsched_var_t;

typedef struct rqsched

typedef struct rqsched {
    rqsched_class_t* rqs_class;
    rqsched_var_t* rqs_var;
    void* rqs_private;
} rqsched_t;