From ceb3245dffa315620721c8d8a26efad60732e6bf Mon Sep 17 00:00:00 2001 From: navarro Date: Fri, 23 Mar 2012 16:47:46 +0100 Subject: [PATCH 1/1] Add constraint for disk bandwidth connexion, read and write --- examples/platforms/storage.xml | 7 +++++-- src/surf/storage.c | 13 +++++++------ src/surf/storage_private.h | 4 +++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/examples/platforms/storage.xml b/examples/platforms/storage.xml index d808970f54..280c1909b2 100644 --- a/examples/platforms/storage.xml +++ b/examples/platforms/storage.xml @@ -10,18 +10,21 @@ - - + + + + + diff --git a/src/surf/storage.c b/src/surf/storage.c index c118e153c3..e4fe016a5d 100644 --- a/src/surf/storage.c +++ b/src/surf/storage.c @@ -85,7 +85,7 @@ static surf_action_t storage_action_execute (void *storage, double size) calloc but it seems to help valgrind... */ GENERIC_LMM_ACTION(action).variable = - lmm_variable_new(storage_maxmin_system, action, 1.0, -1.0 , 1); + lmm_variable_new(storage_maxmin_system, action, 1.0, -1.0 , 3); lmm_expand(storage_maxmin_system, STORAGE->constraint, GENERIC_LMM_ACTION(action).variable, 1.0); @@ -133,11 +133,12 @@ static void* storage_create_resource(const char* id, const char* model,const cha storage->state_current = SURF_RESOURCE_ON; storage_type_t storage_type = xbt_lib_get_or_null(storage_type_lib, type_id,ROUTING_STORAGE_TYPE_LEVEL); - double Bread = atof(xbt_dict_get(storage_type->properties,"Bread")); - - storage->constraint = - lmm_constraint_new(storage_maxmin_system, storage, - Bread); + double Bread = atof(xbt_dict_get(storage_type->properties,"Bread")); + double Bwrite = atof(xbt_dict_get(storage_type->properties,"Bwrite")); + double Bconnexion = atof(xbt_dict_get(storage_type->properties,"Bconnexion")); + storage->constraint = lmm_constraint_new(storage_maxmin_system, storage, Bconnexion); + storage->constraint_read = lmm_constraint_new(storage_maxmin_system, storage, Bread); + storage->constraint_write = lmm_constraint_new(storage_maxmin_system, storage, Bwrite); xbt_lib_set(storage_lib, id, SURF_STORAGE_LEVEL, storage); diff --git a/src/surf/storage_private.h b/src/surf/storage_private.h index 39b1df057c..ca7b6cdf94 100644 --- a/src/surf/storage_private.h +++ b/src/surf/storage_private.h @@ -11,7 +11,9 @@ typedef struct storage { s_surf_resource_t generic_resource; /*< Structure with generic data. Needed at begin to interate with SURF */ e_surf_resource_state_t state_current; /*< STORAGE current state (ON or OFF) */ - lmm_constraint_t constraint; + lmm_constraint_t constraint; /* Constraint for maximum bandwidth from connexion */ + lmm_constraint_t constraint_write; /* Constraint for maximum write bandwidth*/ + lmm_constraint_t constraint_read; /* Constraint for maximum write bandwidth*/ } s_storage_t, *storage_t; typedef struct surf_action_storage { -- 2.20.1