defer sends for second+ fragments to improve overlap by the scheduler
This commit was SVN r2739.
Этот коммит содержится в:
родитель
55bdaca610
Коммит
6653be59fd
@ -194,7 +194,7 @@ void mca_ptl_tcp_send_frag_return(struct mca_ptl_base_module_t* ptl, struct mca_
|
|||||||
}
|
}
|
||||||
OMPI_THREAD_UNLOCK(&mca_ptl_tcp_component.tcp_lock);
|
OMPI_THREAD_UNLOCK(&mca_ptl_tcp_component.tcp_lock);
|
||||||
mca_ptl_tcp_send_frag_init_ack(frag, ptl, pending->frag_recv.frag_base.frag_peer, pending);
|
mca_ptl_tcp_send_frag_init_ack(frag, ptl, pending->frag_recv.frag_base.frag_peer, pending);
|
||||||
mca_ptl_tcp_peer_send(pending->frag_recv.frag_base.frag_peer, frag);
|
mca_ptl_tcp_peer_send(pending->frag_recv.frag_base.frag_peer, frag, 0);
|
||||||
mca_ptl_tcp_recv_frag_return(ptl, pending);
|
mca_ptl_tcp_recv_frag_return(ptl, pending);
|
||||||
} else {
|
} else {
|
||||||
OMPI_FREE_LIST_RETURN(&mca_ptl_tcp_component.tcp_send_frags, (ompi_list_item_t*)frag);
|
OMPI_FREE_LIST_RETURN(&mca_ptl_tcp_component.tcp_send_frags, (ompi_list_item_t*)frag);
|
||||||
@ -233,7 +233,7 @@ int mca_ptl_tcp_send(
|
|||||||
* before attempting to send the fragment
|
* before attempting to send the fragment
|
||||||
*/
|
*/
|
||||||
sendreq->req_offset += size;
|
sendreq->req_offset += size;
|
||||||
return mca_ptl_tcp_peer_send(ptl_peer, sendfrag);
|
return mca_ptl_tcp_peer_send(ptl_peer, sendfrag, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -263,7 +263,7 @@ void mca_ptl_tcp_matched(
|
|||||||
OMPI_THREAD_UNLOCK(&mca_ptl_tcp_component.tcp_lock);
|
OMPI_THREAD_UNLOCK(&mca_ptl_tcp_component.tcp_lock);
|
||||||
} else {
|
} else {
|
||||||
mca_ptl_tcp_send_frag_init_ack(ack, ptl, recv_frag->frag_recv.frag_base.frag_peer, recv_frag);
|
mca_ptl_tcp_send_frag_init_ack(ack, ptl, recv_frag->frag_recv.frag_base.frag_peer, recv_frag);
|
||||||
mca_ptl_tcp_peer_send(ack->frag_send.frag_base.frag_peer, ack);
|
mca_ptl_tcp_peer_send(ack->frag_send.frag_base.frag_peer, ack, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ static inline void mca_ptl_tcp_peer_event_init(mca_ptl_base_peer_t* ptl_peer, in
|
|||||||
* queue the fragment and start the connection as required.
|
* queue the fragment and start the connection as required.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t* frag)
|
int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t* frag, int offset)
|
||||||
{
|
{
|
||||||
int rc = OMPI_SUCCESS;
|
int rc = OMPI_SUCCESS;
|
||||||
OMPI_THREAD_LOCK(&ptl_peer->peer_send_lock);
|
OMPI_THREAD_LOCK(&ptl_peer->peer_send_lock);
|
||||||
@ -169,7 +169,7 @@ int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t
|
|||||||
case MCA_PTL_TCP_CONNECTED:
|
case MCA_PTL_TCP_CONNECTED:
|
||||||
if (NULL != ptl_peer->peer_send_frag) {
|
if (NULL != ptl_peer->peer_send_frag) {
|
||||||
ompi_list_append(&ptl_peer->peer_frags, (ompi_list_item_t*)frag);
|
ompi_list_append(&ptl_peer->peer_frags, (ompi_list_item_t*)frag);
|
||||||
} else {
|
} else if (offset == 0) {
|
||||||
if(mca_ptl_tcp_send_frag_handler(frag, ptl_peer->peer_sd)) {
|
if(mca_ptl_tcp_send_frag_handler(frag, ptl_peer->peer_sd)) {
|
||||||
OMPI_THREAD_UNLOCK(&ptl_peer->peer_send_lock);
|
OMPI_THREAD_UNLOCK(&ptl_peer->peer_send_lock);
|
||||||
mca_ptl_tcp_send_frag_progress(frag);
|
mca_ptl_tcp_send_frag_progress(frag);
|
||||||
@ -178,6 +178,9 @@ int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t
|
|||||||
ptl_peer->peer_send_frag = frag;
|
ptl_peer->peer_send_frag = frag;
|
||||||
ompi_event_add(&ptl_peer->peer_send_event, 0);
|
ompi_event_add(&ptl_peer->peer_send_event, 0);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
ptl_peer->peer_send_frag = frag;
|
||||||
|
ompi_event_add(&ptl_peer->peer_send_event, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MCA_PTL_TCP_SHUTDOWN:
|
case MCA_PTL_TCP_SHUTDOWN:
|
||||||
|
@ -61,7 +61,7 @@ typedef struct mca_ptl_base_peer_t mca_ptl_tcp_peer_t;
|
|||||||
|
|
||||||
void mca_ptl_tcp_set_socket_options(int sd);
|
void mca_ptl_tcp_set_socket_options(int sd);
|
||||||
void mca_ptl_tcp_peer_close(mca_ptl_base_peer_t*);
|
void mca_ptl_tcp_peer_close(mca_ptl_base_peer_t*);
|
||||||
int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t*, mca_ptl_tcp_send_frag_t*);
|
int mca_ptl_tcp_peer_send(mca_ptl_base_peer_t*, mca_ptl_tcp_send_frag_t*, int);
|
||||||
bool mca_ptl_tcp_peer_accept(mca_ptl_base_peer_t*, struct sockaddr_in*, int);
|
bool mca_ptl_tcp_peer_accept(mca_ptl_base_peer_t*, struct sockaddr_in*, int);
|
||||||
void mca_ptl_tcp_peer_shutdown(mca_ptl_base_peer_t*);
|
void mca_ptl_tcp_peer_shutdown(mca_ptl_base_peer_t*);
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user