
Changing the client to leave its socket as blocking during the connect doesn't solve the problem by itself - you also have to introduce a sleep delay once the backlog is hit to avoid simply machine-gunning your way thru retries. This gets somewhat difficult to adjust as you don't want to unnecessarily prolong startup time. We've solved this before by adding a listening thread that simply reaps accepts and shoves them into the event library for subsequent processing. This would resolve the problem, but meant yet another daemon-level thread. So I centralized the listening thread support and let multiple elements register listeners on it. Thus, each daemon now has a single listening thread that reaps accepts from multiple sources - for now, the orte/pmix server and the oob/usock support are using it. I'll add in the oob/tcp component later. This still didn't fully resolve the SMP problem, especially on coprocessor cards (e.g., KNC). Removing the shared memory dstore support helped further improve the behavior - it looks like there is some kind of memory paging issue there that needs further understanding. Given that the shared memory support was about to be lost when I bring over the PMIx integration (until it is restored in that library), it seemed like a reasonable thing to just remove it at this point.
57 строки
1.9 KiB
Makefile
57 строки
1.9 KiB
Makefile
#
|
|
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
# University Research and Technology
|
|
# Corporation. All rights reserved.
|
|
# Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
# of Tennessee Research Foundation. All rights
|
|
# reserved.
|
|
# Copyright (c) 2004-2009 High Performance Computing Center Stuttgart,
|
|
# University of Stuttgart. All rights reserved.
|
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
|
# All rights reserved.
|
|
# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
|
# Copyright (c) 2012-2013 Los Alamos National Security, LLC.
|
|
# All rights reserved
|
|
# Copyright (c) 2013-2015 Intel, Inc. All rights reserved.
|
|
# $COPYRIGHT$
|
|
#
|
|
# Additional copyrights may follow
|
|
#
|
|
# $HEADER$
|
|
#
|
|
|
|
sources = \
|
|
oob_usock_component.h \
|
|
oob_usock.h \
|
|
oob_usock_component.c \
|
|
oob_usock_connection.h \
|
|
oob_usock_sendrecv.h \
|
|
oob_usock_hdr.h \
|
|
oob_usock_peer.h \
|
|
oob_usock_ping.h \
|
|
oob_usock.c \
|
|
oob_usock_connection.c \
|
|
oob_usock_sendrecv.c
|
|
|
|
# Make the output library in this directory, and name it either
|
|
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
|
|
# (for static builds).
|
|
|
|
if MCA_BUILD_orte_oob_usock_DSO
|
|
component_noinst =
|
|
component_install = mca_oob_usock.la
|
|
else
|
|
component_noinst = libmca_oob_usock.la
|
|
component_install =
|
|
endif
|
|
|
|
mcacomponentdir = $(ortelibdir)
|
|
mcacomponent_LTLIBRARIES = $(component_install)
|
|
mca_oob_usock_la_SOURCES = $(sources)
|
|
mca_oob_usock_la_LDFLAGS = -module -avoid-version
|
|
|
|
noinst_LTLIBRARIES = $(component_noinst)
|
|
libmca_oob_usock_la_SOURCES = $(sources)
|
|
libmca_oob_usock_la_LDFLAGS = -module -avoid-version
|
|
|