improve resmgr/jobmgr/qmgr/workermgr

This commit is contained in:
Rongsong Shen 2025-12-18 17:37:34 +08:00
parent 2362b32825
commit 8d78f0cbeb
12 changed files with 161 additions and 575 deletions

View file

@ -20,6 +20,18 @@ typedef struct {
int nunshared;
} resmgr_t;
typedef struct {
kvmgr_t queues;
} qmgr_t;
typedef struct {
kvmgr_t jobs;
} jobmgr_t;
typedef struct {
kvmgr_t workers;
} workermgr_t;
extern int kvmgr_init(kvmgr_t*, hash_key_fn_t, int, int, zarray_item_killer_t);
extern void kvmgr_fini(kvmgr_t*);
extern void* kvmgr_lock(kvmgr_t*, void*, int);
@ -35,4 +47,20 @@ extern xce_resource_t* resmgr_lockres(resmgr_t*, char*, int);
extern void resmgr_del_res(resmgr_t*, xce_resource_t*);
extern int resmgr_iter(resmgr_t*, xlist_t*, void*);
extern void qmgr_fini(qmgr_t*);
extern int qmgr_init(qmgr_t*, int, int, zarray_item_killer_t);
extern int qmgr_add(qmgr_t*, queue_t*);
extern queue_t* qmgr_lockq(qmgr_t*, char*, int);
extern void qmgr_delq(qmgr_t*, queue_t*);
extern int qmgr_iter(qmgr_t*, xlist_t*, void*);
extern int jobmgr_init(jobmgr_t*, int, int, zarray_item_killer_t);
extern void jobmgr_fini(jobmgr_t*);
extern int workermgr_init(workermgr_t*, int, int, zarray_item_killer_t);
extern void workermgr_fini(workermgr_t*);
extern int workermgr_add(workermgr_t*, worker_t*);
extern worker_t* workermgr_lock(workermgr_t*, char*, int);
extern worker_t* workermgr_lock_byid(workermgr_t*, int, int);
extern void workermgr_del(workermgr_t*, worker_t*);
#endif

View file

@ -11,12 +11,16 @@
#include "dataq.h"
#include "mylock.h"
#include "xce/types.h"
typedef int (*conn_handler_t)(struct epoll_event*);
typedef int (*msg_handler_t)(void*);
typedef int (*err_handler_t)(void*);
typedef struct {
char* name;
char* key;
} xce_peerinfo_t;
#define IO_MON_INPUT (0x01)
#define IO_MON_OUTPUT (0x02)

View file

@ -76,32 +76,6 @@ typedef struct {
typedef struct {
} metrics_t;
typedef struct {
xce_queue_t queue;
} queue_t;
typedef struct {
xce_job_t job;
} job_t;
typedef struct {
mylock_t lock;
htab_t htab;
zarray_t jobs;
} jobmgr_t;
typedef struct {
mylock_t lock;
htab_t htab;
zarray_t workers;
} workermgr_t;
typedef struct {
mylock_t lock;
htab_t htab;
zarray_t queues;
} qmgr_t;
typedef struct {
mylock_t lock;
endpoint_t* ep;

View file

@ -10,6 +10,7 @@
#include "xlist.h"
#include "zarray.h"
#include "netio.h"
#define XCE_VAL_STRING (0)
#define XCE_VAL_NUMERIC (1)
@ -96,11 +97,6 @@ typedef struct {
char** data;
} xce_strlist_t;
typedef struct {
char* name;
char* key;
} xce_peerinfo_t;
typedef struct {
char* name;
char* value;
@ -267,6 +263,21 @@ typedef struct {
int64_t duration;
} xce_alloc_t;
typedef struct {
uint64_t jobid;
xce_alloc_t alloc;
double used;
} res_usage_t;
typedef struct {
xce_worker_t host;
char hostkey[XCE_MAXKEY_LEN];
endpoint_t* ep;
int idx;
zarray_t usages;
} worker_t;
typedef struct {
char* host;
int nallocs;
@ -431,6 +442,11 @@ typedef struct {
xce_job_preason_t* pend_reasons;
} xce_job_t;
typedef struct {
xce_job_t job;
} job_t;
typedef struct {
int count;
xce_job_t** data;
@ -474,6 +490,10 @@ typedef struct {
char* autopscaler;
} xce_queue_t;
typedef struct {
xce_queue_t queue;
} queue_t;
typedef struct {
int count;
xce_queue_t** queues;