Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
ssg
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
19
Issues
19
List
Boards
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sds
ssg
Commits
19a2c3c7
Commit
19a2c3c7
authored
Dec 21, 2016
by
Shane Snyder
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
initial logic to spawn swim ABT ULTs
parent
a40b45cd
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
180 additions
and
7 deletions
+180
-7
src/Makefile.subdir
src/Makefile.subdir
+1
-1
src/ssg-internal.h
src/ssg-internal.h
+0
-0
src/ssg.c
src/ssg.c
+2
-1
src/swim-fd/swim-fd-internal.h
src/swim-fd/swim-fd-internal.h
+138
-0
src/swim-fd/swim-fd.c
src/swim-fd/swim-fd.c
+39
-5
No files found.
src/Makefile.subdir
View file @
19a2c3c7
src_libssg_la_SOURCES
+=
\
src/
def
.h
\
src/
ssg-internal
.h
\
src/ssg.c
src/
def
.h
→
src/
ssg-internal
.h
View file @
19a2c3c7
File moved
src/ssg.c
View file @
19a2c3c7
...
...
@@ -21,7 +21,8 @@
#include <abt.h>
#include <margo.h>
#include <ssg.h>
#include "def.h"
#include "ssg-internal.h"
#define DO_DEBUG 0
#define DEBUG(...) \
...
...
src/swim-fd/swim-fd-internal.h
0 → 100644
View file @
19a2c3c7
/*
* (C) 2016 The University of Chicago
*
* See COPYRIGHT in top-level directory.
*/
#ifndef __SWIM_INTERNAL_H
#define __SWIM_INTERNAL_H
#ifdef __cplusplus
extern
"C"
{
#endif
#include <ssg.h>
#define SWIM_DEF_PROTOCOL_PERIOD_LEN 2000.0
/* milliseconds */
#define SWIM_DEF_SUSPECT_TIMEOUT 5
/* protocol period lengths */
#define SWIM_DEF_SUBGROUP_SIZE 2
#define SWIM_MAX_SUBGROUP_SIZE 5
#define SWIM_MAX_PIGGYBACK_ENTRIES 8
#define SWIM_MAX_PIGGYBACK_TX_COUNT 50
#define SWIM_MEMBER_ID_UNKNOWN (-1)
typedef
int32_t
swim_member_id_t
;
typedef
uint8_t
swim_member_status_t
;
typedef
uint32_t
swim_member_inc_nr_t
;
typedef
struct
swim_member_state_s
swim_member_state_t
;
typedef
enum
swim_return
swim_return_t
;
/* internal swim context implementation */
struct
swim_context
{
/* margo, mercury, and ssg context */
margo_instance_id
mid
;
hg_context_t
*
hg_ctx
;
ssg_t
group
;
/* argobots pool for launching SWIM threads */
ABT_pool
prot_pool
;
/* SWIM internal state */
swim_member_id_t
ping_target
;
swim_member_id_t
subgroup_members
[
SWIM_MAX_SUBGROUP_SIZE
];
int
ping_target_acked
;
double
dping_timeout
;
int
shutdown_flag
;
/* current membership state */
swim_member_state_t
*
membership_view
;
void
*
suspect_list
;
void
*
recent_update_list
;
/* SWIM protocol parameters */
double
prot_period_len
;
int
prot_susp_timeout
;
int
prot_subgroup_sz
;
/* swim protocol ULT handle */
ABT_thread
prot_thread
;
};
#if 0
enum swim_member_status
{
SWIM_MEMBER_ALIVE = 0,
SWIM_MEMBER_SUSPECT,
SWIM_MEMBER_DEAD
};
struct swim_member_state_s
{
swim_member_id_t member;
swim_member_status_t status;
swim_member_inc_nr_t inc_nr;
};
void swim_register_ping_rpcs(
hg_class_t *hg_cls,
swim_context_t *swim_ctx);
void swim_dping_send_ult(
void *t_arg);
void swim_iping_send_ult(
void *t_arg);
void swim_init_membership_view(
swim_context_t *swim_ctx);
swim_member_id_t swim_get_self_id(
swim_context_t *swim_ctx);
swim_member_inc_nr_t swim_get_self_inc_nr(
swim_context_t *swim_ctx);
hg_addr_t swim_get_member_addr(
swim_context_t *swim_ctx,
swim_member_id_t member);
void swim_get_rand_member(
swim_context_t *swim_ctx,
swim_member_id_t *member);
void swim_get_rand_member_set(
swim_context_t *swim_ctx,
swim_member_id_t *member_array,
int num_members,
swim_member_id_t excluded_member);
void swim_suspect_member(
swim_context_t *swim_ctx,
swim_member_id_t member);
void swim_unsuspect_member(
swim_context_t *swim_ctx,
swim_member_id_t member);
void swim_kill_member(
swim_context_t *swim_ctx,
swim_member_id_t member);
void swim_update_suspected_members(
swim_context_t *swim_ctx,
double susp_timeout);
void swim_retrieve_membership_updates(
swim_context_t *swim_ctx,
swim_member_state_t *membership_updates,
int update_count);
void swim_apply_membership_updates(
swim_context_t *swim_ctx,
swim_member_state_t *membership_updates,
int update_count);
#endif
#ifdef __cplusplus
}
#endif
#endif
/* __SWIM_FD_INTERNAL_H */
src/swim-fd/swim-fd.c
View file @
19a2c3c7
...
...
@@ -4,13 +4,21 @@
* See COPYRIGHT in top-level directory.
*/
#include <ssg-config.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <time.h>
#include <ssg.h>
#include "swim-fd.h"
#include "swim-fd-internal.h"
/* SWIM ABT ULT prototypes */
static
void
swim_prot_ult
(
void
*
t_arg
);
swim_context_t
*
swim_init
(
margo_instance_id
mid
,
...
...
@@ -18,17 +26,17 @@ swim_context_t *swim_init(
int
active
)
{
swim_context_t
*
swim_ctx
;
#if 0
int
ret
;
/* TODO: this may end up being identical across many processes => hotspots */
srand(time(NULL));
//
srand(time(NULL));
/* allocate structure for storing swim context */
swim_ctx
=
malloc
(
sizeof
(
*
swim_ctx
));
assert
(
swim_ctx
);
memset
(
swim_ctx
,
0
,
sizeof
(
*
swim_ctx
));
#if 0
/* initialize swim state */
swim_ctx->mid = mid;
swim_ctx->hg_ctx = margo_get_context(mid);
...
...
@@ -45,6 +53,7 @@ swim_context_t *swim_init(
swim_ctx->prot_subgroup_sz = SWIM_DEF_SUBGROUP_SIZE;
swim_register_ping_rpcs(margo_get_class(mid), swim_ctx);
#endif
if
(
active
)
{
...
...
@@ -56,14 +65,38 @@ swim_context_t *swim_init(
return
(
NULL
);
}
}
#endif
return
(
swim_ctx
);
}
void
swim_finalize
(
swim_context_t
*
swim_ctx
)
static
void
swim_prot_ult
(
void
*
t_arg
)
{
int
ret
;
swim_context_t
*
swim_ctx
=
(
swim_context_t
*
)
t_arg
;
while
(
!
(
swim_ctx
->
shutdown_flag
))
{
printf
(
"Loop
\n
"
);
#if 0
/* spawn a ULT to run this tick */
ret = ABT_thread_create(swim_ctx->prot_pool, swim_tick_ult, swim_ctx,
ABT_THREAD_ATTR_NULL, NULL);
if(ret != ABT_SUCCESS)
{
fprintf(stderr, "Error: unable to create ULT for SWIM protocol tick\n");
}
#endif
/* sleep for a protocol period length */
margo_thread_sleep
(
swim_ctx
->
mid
,
swim_ctx
->
prot_period_len
);
}
return
;
}
void
swim_finalize
(
swim_context_t
*
swim_ctx
)
{
/* set shutdown flag so ULTs know to start wrapping up */
swim_ctx
->
shutdown_flag
=
1
;
...
...
@@ -76,9 +109,10 @@ void swim_finalize(swim_context_t *swim_ctx)
DEBUG_LOG
(
"swim protocol shutdown complete
\n
"
,
swim_ctx
);
}
#if 0
free(swim_ctx->membership_view);
free(swim_ctx);
#endif
free
(
swim_ctx
);
return
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment