improve res

This commit is contained in:
Rongsong Shen 2025-12-28 14:51:54 +08:00
parent 4769e6845f
commit 8db4458375
4 changed files with 23 additions and 5 deletions

View file

@ -8,6 +8,7 @@
#include "kvmgr.h"
#include "typemap.h"
#include "xce/types.h"
#include "zarray.h"
typedef void* host_selection_t;
@ -54,10 +55,10 @@ typedef struct {
} xce_sched_job_t;
typedef struct {
char* name;
uint32_t status;
xce_val_t* res_avail; /* resources in worker */
xce_val_t* res_in_use; /* used resources in worker */
char* name;
uint32_t status;
zarray_t resvals;
zarray_t resInUse;
} xce_sched_worker_t;
extern xce_sched_job_t* make_sched_job(void*, xce_job_t*);
@ -70,4 +71,5 @@ extern void kill_sched_queue(void*);
extern void kill_sched_worker(void*);
extern void kill_sched_user(void*);
extern void kill_sched_project(void*);
extern void kill_sched_resval(xce_val_t*);
#endif

View file

@ -56,6 +56,7 @@ typedef struct {
kvmgr_t plugins;
dataq_t* pend_updates[2];
resmgr_t resmgr;
zarray_t sharedInst;
kvmgr_t jobs;
kvmgr_t queues;
kvmgr_t workers;

View file

@ -2,6 +2,7 @@
#include <stdlib.h>
#include <string.h>
#include "controller.capnp.h"
#include "sched/types.h"
#include "scheduler.h"
#include "xce/types.h"
@ -75,6 +76,15 @@ void kill_sched_worker(void* arg)
}
}
void kill_sched_resval(xce_val_t* val)
{
if (val == NULL) {
return;
}
free_Value(val);
}
xce_sched_worker_t* make_sched_worker(void* arg, xce_worker_t* w)
{
xce_scheduler_t* sched = (xce_scheduler_t*)arg;
@ -91,6 +101,9 @@ xce_sched_worker_t* make_sched_worker(void* arg, xce_worker_t* w)
worker->name = strdup(w->name);
worker->status = w->status;
zarray_init(&(worker->resvals), 128, (zarray_item_killer_t)kill_sched_resval);
zarray_init(&(worker->resInUse), 128, (zarray_item_killer_t)kill_sched_resval);
/* FIXME: */
return worker;
@ -125,4 +138,3 @@ xce_sched_project_t* make_sched_project(void* arg, char* name)
return project;
}

View file

@ -183,6 +183,9 @@ int sched_init(xce_scheduler_t* sched, xce_client_config_t* config,
kvmgr_init(&(sched->projects), string_hash_key, 8, 8,
(zarray_item_killer_t)kill_sched_project);
zarray_init(&(sched->sharedInst), 128,
(zarray_item_killer_t)kill_sched_resval);
sched_register_plugins(sched);
rc = xcecli_ctx_init(&(sched->apictx), config);