Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
sds
margo
Commits
ef9ae7a5
Commit
ef9ae7a5
authored
May 20, 2017
by
Philip Carns
Browse files
stub client-side benchmark
parent
30ce0aa1
Changes
5
Hide whitespace changes
Inline
Side-by-side
examples/composition/Makefile.subdir
View file @
ef9ae7a5
noinst_PROGRAMS
+=
examples/composition/svc-daemon
noinst_PROGRAMS
+=
examples/composition/
composed-
svc-daemon
examples/composition/composed-benchmark
examples_composition_svc_daemon_SOURCES
=
\
examples/composition/svc-daemon.c
\
examples_composition_
composed_
svc_daemon_SOURCES
=
\
examples/composition/
composed-
svc-daemon.c
\
examples/composition/data-xfer-service.c
\
examples/composition/delegator-service.c
examples_composition_composed_benchmark_SOURCES
=
\
examples/composition/composed-benchmark.c
\
examples/composition/composed-client-lib.c
examples/composition/composed-benchmark.c
0 → 100644
View file @
ef9ae7a5
/*
* (C) 2015 The University of Chicago
*
* See COPYRIGHT in top-level directory.
*/
#include
<stdio.h>
#include
<assert.h>
#include
<unistd.h>
#include
<abt.h>
#include
<abt-snoozer.h>
#include
<margo.h>
#include
"composed-client-lib.h"
static
hg_id_t
my_rpc_shutdown_id
;
static
void
*
buffer
;
static
hg_size_t
buffer_sz
=
8
*
1024
*
1024
;
int
main
(
int
argc
,
char
**
argv
)
{
int
i
;
int
ret
;
margo_instance_id
mid
;
hg_context_t
*
hg_context
;
hg_class_t
*
hg_class
;
hg_addr_t
svr_addr
=
HG_ADDR_NULL
;
hg_handle_t
handle
;
char
proto
[
12
]
=
{
0
};
if
(
argc
!=
2
)
{
fprintf
(
stderr
,
"Usage: ./client <server_addr>
\n
"
);
return
(
-
1
);
}
/* boilerplate HG initialization steps */
/***************************************/
/* initialize Mercury using the transport portion of the destination
* address (i.e., the part before the first : character if present)
*/
for
(
i
=
0
;
i
<
11
&&
argv
[
1
][
i
]
!=
'\0'
&&
argv
[
1
][
i
]
!=
':'
;
i
++
)
proto
[
i
]
=
argv
[
1
][
i
];
hg_class
=
HG_Init
(
proto
,
HG_FALSE
);
if
(
!
hg_class
)
{
fprintf
(
stderr
,
"Error: HG_Init()
\n
"
);
return
(
-
1
);
}
hg_context
=
HG_Context_create
(
hg_class
);
if
(
!
hg_context
)
{
fprintf
(
stderr
,
"Error: HG_Context_create()
\n
"
);
HG_Finalize
(
hg_class
);
return
(
-
1
);
}
/* set up argobots */
/***************************************/
ret
=
ABT_init
(
argc
,
argv
);
if
(
ret
!=
0
)
{
fprintf
(
stderr
,
"Error: ABT_init()
\n
"
);
return
(
-
1
);
}
/* set primary ES to idle without polling */
ret
=
ABT_snoozer_xstream_self_set
();
if
(
ret
!=
0
)
{
fprintf
(
stderr
,
"Error: ABT_snoozer_xstream_self_set()
\n
"
);
return
(
-
1
);
}
/* actually start margo */
/***************************************/
mid
=
margo_init
(
0
,
0
,
hg_context
);
/* register core RPC */
my_rpc_shutdown_id
=
MERCURY_REGISTER
(
hg_class
,
"my_shutdown_rpc"
,
void
,
void
,
NULL
);
/* register service APIs */
data_xfer_register_client
(
mid
);
/* find addr for server */
ret
=
margo_addr_lookup
(
mid
,
argv
[
1
],
&
svr_addr
);
assert
(
ret
==
0
);
buffer
=
calloc
(
1
,
buffer_sz
);
assert
(
buffer
);
data_xfer_read
(
mid
,
svr_addr
,
buffer
,
buffer_sz
);
/* send one rpc to server to shut it down */
/* create handle */
ret
=
HG_Create
(
hg_context
,
svr_addr
,
my_rpc_shutdown_id
,
&
handle
);
assert
(
ret
==
0
);
margo_forward
(
mid
,
handle
,
NULL
);
HG_Addr_free
(
hg_class
,
svr_addr
);
/* shut down everything */
margo_finalize
(
mid
);
ABT_finalize
();
HG_Context_destroy
(
hg_context
);
HG_Finalize
(
hg_class
);
free
(
buffer
);
return
(
0
);
}
examples/composition/composed-client-lib.c
0 → 100644
View file @
ef9ae7a5
/*
* (C) 2015 The University of Chicago
*
* See COPYRIGHT in top-level directory.
*/
#include
<stdio.h>
#include
<assert.h>
#include
<unistd.h>
#include
<abt.h>
#include
"composed-client-lib.h"
#include
"delegator-proto.h"
#include
"data-xfer-proto.h"
/* NOTE: just making these global for test example, would be cleaner if there
* were an instance pointer for the client.
*/
static
hg_id_t
delegator_read_id
=
-
1
;
static
hg_id_t
data_xfer_read_id
=
-
1
;
int
composed_register_client
(
margo_instance_id
mid
)
{
delegator_read_id
=
MERCURY_REGISTER
(
margo_get_class
(
mid
),
"delegator_read"
,
delegator_read_in_t
,
delegator_read_out_t
,
NULL
);
return
(
0
);
}
int
data_xfer_register_client
(
margo_instance_id
mid
)
{
data_xfer_read_id
=
MERCURY_REGISTER
(
margo_get_class
(
mid
),
"data_xfer_read"
,
data_xfer_read_in_t
,
data_xfer_read_out_t
,
NULL
);
return
(
0
);
}
void
data_xfer_read
(
margo_instance_id
mid
,
hg_addr_t
svr_addr
,
void
*
buffer
,
hg_size_t
buffer_sz
)
{
hg_handle_t
handle
;
data_xfer_read_in_t
in
;
data_xfer_read_out_t
out
;
int
ret
;
const
struct
hg_info
*
hgi
;
/* create handle */
ret
=
HG_Create
(
margo_get_context
(
mid
),
svr_addr
,
data_xfer_read_id
,
&
handle
);
assert
(
ret
==
0
);
/* register buffer for rdma/bulk access by server */
hgi
=
HG_Get_info
(
handle
);
assert
(
hgi
);
ret
=
HG_Bulk_create
(
hgi
->
hg_class
,
1
,
&
buffer
,
&
buffer_sz
,
HG_BULK_WRITE_ONLY
,
&
in
.
bulk_handle
);
assert
(
ret
==
0
);
#if 0
HG_Set_target_id(handle, mplex_id);
#endif
/* Send rpc. Note that we are also transmitting the bulk handle in the
* input struct. It was set above.
*/
margo_forward
(
mid
,
handle
,
&
in
);
/* decode response */
ret
=
HG_Get_output
(
handle
,
&
out
);
assert
(
ret
==
0
);
/* clean up resources consumed by this rpc */
HG_Bulk_free
(
in
.
bulk_handle
);
HG_Free_output
(
handle
,
&
out
);
HG_Destroy
(
handle
);
return
;
}
examples/composition/composed-client-lib.h
0 → 100644
View file @
ef9ae7a5
/*
* (C) 2015 The University of Chicago
*
* See COPYRIGHT in top-level directory.
*/
#ifndef __COMPOSED_CLIENT_LIB
#define __COMPOSED_CLIENT_LIB
#include
<margo.h>
int
composed_register_client
(
margo_instance_id
mid
);
void
composed_read
(
margo_instance_id
mid
,
hg_addr_t
svr_addr
,
void
*
buffer
,
hg_size_t
buffer_sz
);
int
data_xfer_register_client
(
margo_instance_id
mid
);
void
data_xfer_read
(
margo_instance_id
mid
,
hg_addr_t
svr_addr
,
void
*
buffer
,
hg_size_t
buffer_sz
);
#endif
/* __COMPOSED_CLIENT_LIB */
examples/composition/svc-daemon.c
→
examples/composition/
composed-
svc-daemon.c
View file @
ef9ae7a5
File moved
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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