FW: extremely slow spread subnet

"Julien Hoffmann" <[email protected]> Mon, 13 Mar 2017 12:57:08 +0800
Newsgroups gmane.network.spread.user
Message-ID <[email protected]>
This is a multipart message in MIME format.

------=_NextPart_000_02A3_01D29BF9.543D9650
Content-Type: text/plain;
	charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi John,

I hope you are well.
Did you by any chance have some time to think about my issues, look at =
my configuration file or even replicate in your environment as you =
wanted to?
On my side, I haven't made any progress I'm afraid.

Thank you in advance for any updates on that matter.
Julien


-----Original Message-----
From: Julien Hoffmann [mailto:[email protected]]=20
Sent: Sunday, 19 February, 2017 17:20
To: 'John Lane Schultz' <[email protected]>
Cc: [email protected]
Subject: RE: [Spread-users] extremely slow spread subnet

Hi John,

Thank you for your prompt reply.
You will find my spread.conf file attached.=20
I am using spread Version 4.04.00 Built 27 may 2014 on the Raspberry =
Pis.
Same version number is printed out when I run spread-service on the =
windows 7 PC.
Configuration Hash value is the same on all systems; all using port =
4803.

I haven't tried yet to decrease the number of addresses because changing =
the conf file on all systems takes a long time.
When I was in my previous configuration (56 addresses, it was working =
fine).
I did try to boot only a few systems instead of all but the problem =
persists.

Thanks again for any help.
Julien


-----Original Message-----
From: John Lane Schultz [mailto:[email protected]]=20
Sent: Tuesday, 14 February, 2017 22:39
To: [email protected]
Cc: [email protected]
Subject: Re: [Spread-users] extremely slow spread subnet

I can try to replicate that in my environment. =20

What version of Spread were you using?  Would you please send me the =
problematic configuration file too?

Have you tried using fewer addresses and seeing if the problem persists?

Cheers!

-----
John Lane Schultz
Spread Concepts LLC
Cell: 443 838 2200

On Feb 14, 2017, at 8:58 AM, Julien Hoffmann <[email protected]> =
wrote:

Hell spread experts,

In my specific configuration, I have 55 Raspberry Pi Linux modules all =
with spread installed and configured. One windows7 computer on the same =
network is also configured to use spread and acts as a =
=E2=80=9Cserver=E2=80=9D. The spread.conf files on all systems is =
identical and defines only IP addresses used =E2=80=93 a total of 56.

I am using a home-made software to =E2=80=9Cdrive=E2=80=9D messages in =
the network, but note that my tests/results are the same when using =
spuser, sptmonitor etc=E2=80=A6 When broadcasting a message to all =
modules, the reaction is almost immediate and the server receives =
acknowledgements from modules within seconds. So all is well, and I am =
very happy with spread and this configuration which works since 3 years!

Yesterday, I added 23 new Raspberry Pi Linux modules and modified all =
spread.conf files. But instead of adding only the 23 new IP addresses, I =
decided to add all subnet available IP addresses, so that next time I =
add a new machine, there is no need to modify it again. I added only up =
to 128 IPs as spread cannot use more.

So I have a spread.conf file with 128 defined IP addresses and 78 =
machines. Suddenly the entire system is extremely slow, the previous =
processes now take minutes instead of seconds.=20

I firstly suspected a wrong configuration or a physical network issue, =
but no.

Maybe one of you would have an idea about what could go wrong?

Thanks for any help on that matter,

Julien

=20

_______________________________________________
Spread-users mailing list
[email protected]
http://lists.spread.org/mailman/listinfo/spread-users


------=_NextPart_000_02A3_01D29BF9.543D9650
Content-Type: application/octet-stream;
	name="spread.conf"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="spread.conf"

# Blank lines are permitted in this file.
# spread.conf sample file
#=20
# questions to [email protected]
#

#MINIMAL REQUIRED FILE
#
# Spread should work fine on one machine with just the uncommented=20
# lines below. The rest of the file documents all the options and
# more complex network setups.
#
# This configures one spread daemon running on port 4803 on localhost.

#Spread_Segment  127.0.0.255:4803 {
#
#	localhost		127.0.0.1
#}




# Spread options
#------------------------------------------------------------------------=
---
#------------------------------------------------------------------------=
---
#Set what internal Spread events are logged to the screen or file=20
# (see EventLogFile).
# Default setting is to enable PRINT and EXIT events only.=20
#The PRINT and EXIT types should always be enabled. The names of others =
are:
#    	EXIT PRINT DEBUG DATA_LINK NETWORK PROTOCOL SESSION=20
#	CONFIGURATION MEMBERSHIP FLOW_CONTROL STATUS EVENTS=20
#	GROUPS MEMORY SKIPLIST ALL NONE=09
#    ALL and NONE are special and represent either enabling every type=20
#                                           or enabling none of them.
#    You can also use a "!" sign to negate a type,=20
#        so { ALL !DATA_LINK } means log all events except data_link =
ones.

#DebugFlags =3D { PRINT EXIT }

# Set priority level of events to output to log file or screen
# The possible levels are:=20
#	pDEBUG INFO WARNING ERROR CRITICAL FATAL
# Once selected all events tagged with that priority or higher will
# be output. FATAL events are always output and cause the daemon to=20
# shut down. Some Events are tagged with a priority of PRINT which
# causes them to print out no matter what priority level is set.=20
#
# The default level used if nothing is set is INFO.
=09
#EventPriority =3D  INFO

#Set whether to log to a file as opposed to stdout/stderr and what=20
# file to log to.
# Default is to log to stdout.
#
#If option is not set then logging is to stdout.
#If option is set then logging is to the filename specified.
# The filename can include a %h or %H escape that will be replaced at =
runtime
# by the hostname of the machine upon which the daemon is running.
# For example "EventLogFile =3D spreadlog_%h.log" with 2 machines=20
# running Spread (machine1.mydomain.com and machine2.mydomain.com) will
# cause the daemons to log to "spreadlog_machine1.mydomain.com.log" and
# "spreadlog_machine2.mydomain.com.log" respectively.

#EventLogFile =3D testlog.out

#Set whether to add a timestamp in front of all logged events or not.
# Default is no timestamps. Default format is "[%a %d %b %Y %H:%M:%S]".
#If option is commented out then no timestamp is added.
#If option is enabled then a timestamp is added with the default format
#If option is enabled and set equal to a string, then that string is =
used
#   as the format string for the timestamp. The string must be a valid =
time
#   format string as used by the strftime() function.

#EventTimeStamp
# or
#EventTimeStamp =3D "[%a %d %b %Y %H:%M:%S]"

#Set whether to add a precise (microsecond) resolution timestamp to all =
logged
# events or not. This option requires that EventTimeStamp is also =
enabled.=20
# If the option is commented out then the microsecond timestamp is not =
added
# If the option is uncommented then a microsecond time will print in =
addition
#  to the H:M:S resolution timestamp provided by EventTimeStamp.=20

#EventPreciseTimeStamp

# Set to initialize daemon sequence numbers to a 'large' number for =
testing
# this is purely a debugging capability and should never be enabled on
# production systems (note one side effect of enabling this is that=20
# your system will experience an extra daemon membership every few =
messages
# so you REALLY do not want this turned on)
# If you want to change the initial value the sequence number is set to
# you need to edit the #define INITIAL_SEQUENCE_NEAR_WRAP at the top
# of configuration.h

#DebugInitialSequence

#Set whether to allow dangerous monitor commands=20
# like "partition, flow_control, or kill"
# Default setting is FALSE.
#If option is set to false then only "safe" monitor commands are allowed =

#    (such as requesting a status update).
#If option is set to true then all monitor commands are enabled.=20
#   THIS IS A SECURTIY RISK IF YOUR NETWORK IS NOT PROTECTED!

DangerousMonitor =3D true

#Set handling of SO_REUSEADDR socket option for the daemon's TCP
# listener.  This is useful for facilitating quick daemon restarts (OSes
# often hold onto the interface/port combination for a short period of =
time
# after daemon shut down).
#
# AUTO - Active when bound to specific interfaces (default).
# ON   - Always active, regardless of interface.
#        SECURITY RISK FOR ANY OS WHICH ALLOW DOUBLE BINDS BY DIFFERENT =
USERS
# OFF  - Always off.

#SocketPortReuse =3D AUTO

#Set what the maximum per-session queue should be for messages before =
disconnecting
# a session. Spread will buffer upto that number of messages that are =
destined to the=20
# session, but that can not be delivered currently because the session =
is not reading fast enough.=20
# The compiled in default is usually 1000 if you havn't changed it in =
the spread_params.h file.=20

#MaxSessionMessages =3D 5000

#Sets the runtime directory used when the Spread daemon is run as root
# as the directory to chroot to.  Defaults to the value of the
# compile-time preprocessor define SP_RUNTIME_DIR, which is generally
# "/var/run/spread".

#RuntimeDir =3D /var/run/spread

#Sets the unix user that the Spread daemon runs as (when launched as
# the "root" user).  Not effective on a Windows system.  Defaults to
# the user and group "spread".

#DaemonUser =3D spread
#DaemonGroup =3D spread


#Set the list of authentication methods that the daemon will allow
# and those which are required in all cases.
# All of the methods listed in "RequiredAuthMethods" will be checked,
# irregardless of what methods the client chooses.
# Of the methods listed is "AllowedAuthMethods" the client is
# permitted to choose one or more, and all the ones the client chooses
# will also be checked.
#
# To support older clients, if NULL is enabled, then older clients can
# connect without any authentication. Any methods which do not require
# any interaction with the client (such as IP) can also be enabled
# for older clients. If you enable methods that require interaction,
# then essentially all older clients will be locked out.
#
#The current choices are:
#	NULL for default, allow anyone authentication
#	IP for IP based checks using the spread.access_ip file

#RequiredAuthMethods =3D "   "
#AllowedAuthMethods =3D "NULL"

#Set the current access control policy.
# This is only needed if you want to establish a customized policy.
# The default policy is to allow any actions by authenticated clients.
#AccessControlPolicy =3D "PERMIT"


# network description line.
# Spread_Segment <multicast address for subnet> <port> {
# port is optional, if not specified the default 4803 port is used.

#Spread_Segment  127.0.0.255:4803 {

# either a name or IP address.  If both are given, than the name is =
taken=20
# as-is, and the IP address is used for that name.

#	localhost		127.0.0.1
#}
# repeat for next sub-network

Spread_Segment 192.168.2.255:4803 {

	server		192.168.2.8
	pi10		192.168.2.10
	pi11		192.168.2.11
	pi12		192.168.2.12
	pi13		192.168.2.13
	pi20		192.168.2.20
	pi21		192.168.2.21
	pi22		192.168.2.22
	pi23		192.168.2.23
	pi30		192.168.2.30
	pi31		192.168.2.31
	pi32		192.168.2.32
	pi33		192.168.2.33
	pi40		192.168.2.40
	pi41		192.168.2.41
	pi42		192.168.2.42
	pi43		192.168.2.43
	pi50		192.168.2.50
	pi51		192.168.2.51
	pi52		192.168.2.52
	pi53		192.168.2.53
	pi60		192.168.2.60
	pi61		192.168.2.61
	pi62		192.168.2.62
	pi63		192.168.2.63
	pi70		192.168.2.70
	pi71		192.168.2.71
	pi72		192.168.2.72
	pi73		192.168.2.73
	pi80		192.168.2.80
	pi81		192.168.2.81
	pi82		192.168.2.82
	pi83		192.168.2.83
	pi90		192.168.2.90
	pi91		192.168.2.91
	pi92		192.168.2.92
	pi93		192.168.2.93
	pi100		192.168.2.100
	pi101		192.168.2.101
	pi102		192.168.2.102
	pi103		192.168.2.103
	pi111		192.168.2.111
	pi112		192.168.2.112
	pi113		192.168.2.113
	pi121		192.168.2.121
	pi122		192.168.2.122
	pi123		192.168.2.123
	pi131		192.168.2.131
	pi132		192.168.2.132
	pi133		192.168.2.133
	pi141		192.168.2.141
	pi142		192.168.2.142
	pi143		192.168.2.143
	pi151		192.168.2.151
	pi152		192.168.2.152
	pi153		192.168.2.153
	pi161		192.168.2.161
	pi162		192.168.2.162
	pi163		192.168.2.163
	pi171		192.168.2.171
	pi172		192.168.2.172
	pi173		192.168.2.173
	pi181		192.168.2.181
	pi182		192.168.2.182
	pi183		192.168.2.183
	pi191		192.168.2.191
	pi192		192.168.2.192
	pi193		192.168.2.193
	pi200		192.168.2.200
	pi201		192.168.2.201
	pi202		192.168.2.202
	pi203		192.168.2.203
	pi204		192.168.2.204
	pi205		192.168.2.205
	pi206		192.168.2.206
	pi207		192.168.2.207
	pi208		192.168.2.208
	pi209		192.168.2.209
	pi210		192.168.2.210
	pi211		192.168.2.211
	pi212		192.168.2.212
	pi213		192.168.2.213
	pi214		192.168.2.214
	pi215		192.168.2.215
	pi216		192.168.2.216
	pi217		192.168.2.217
	pi218		192.168.2.218
	pi219		192.168.2.219
	pi220		192.168.2.220
	pi221		192.168.2.221
	pi222		192.168.2.222
	pi223		192.168.2.223
	pi224		192.168.2.224
	pi225		192.168.2.225
	pi226		192.168.2.226
	pi227		192.168.2.227
	pi228		192.168.2.228
	pi229		192.168.2.229
	pi230		192.168.2.230
	pi231		192.168.2.231
	pi232		192.168.2.232
	pi233		192.168.2.233
	pi234		192.168.2.234
	pi235		192.168.2.235
	pi236		192.168.2.236
	pi237		192.168.2.237
	pi238		192.168.2.238
	pi239		192.168.2.239
	pi240		192.168.2.240
	pi241		192.168.2.241
	pi242		192.168.2.242
	pi243		192.168.2.243
	pi244		192.168.2.244
	pi245		192.168.2.245
	pi246		192.168.2.246
	pi247		192.168.2.247
	pi248		192.168.2.248
	pi249		192.168.2.249
	pi250		192.168.2.250
	pi251		192.168.2.251
	pi252		192.168.2.252
	pi253		192.168.2.253
	pi254		192.168.2.254
}
# Spread will feel free to use broadcast messages within a sub-network.
# if you do not want this to happen, you should specify your machines on
# different logical sub-networks.

# IP-Multicast addresses can also be used as the multicast address for
# the logical sub-network as in this example. If IP-multicast is =
supported
# by the operating system, then the messages will only be received
# by those machines who are in the group and not by all others in the =
same
# sub-network as happens with broadcast addresses

#Spread_Segment 225.0.1.1:3333 {
#	mcast1			1.2.3.4
#	mcast2			1.2.3.6
#}

# Multi-homed host setup
#
# If you run Spread on hosts with multiple interfaces you may want to=20
# control which interfaces Spread uses for client connections and for
# the daemon-to-daemon (and monitor control) messages. This can be done
# by adding an extra stanza to each configured machine.=20
#
#Sample:
#
#Spread_Segment 225.0.1.1 {
# 	multihomed1		1.2.3.4 {
#		D 192.168.0.4
#		C 1.2.3.4 }
#	multihomed2		1.2.3.5 {
#		D 192.168.0.5
#		C 1.2.3.5
#		C 127.0.0.1 }
#	multihomed3		1.2.3.6 {
#		192.168.0.6
#		1.2.3.6 }
#}
# This configuration sets up three multihomed machines into a Spread =
segment.
# The first host has a 'main' IP address of 1.2.3.4 and listens for =
client
# connections only on that interface. All daemon-to-daemon UDP =
multicasts and
# the tokens and any monitor messages must use the 192.168.0.4 =
interface.
# The second host multihomed2 has a similar setup, except it also =
listens for
# client connections on the localhost interface as well as the 1.2.3.5 =
interface.
# If you make any use of the extra interface stanza ( a { } block ) then =
you must
# explicitly configure ALL interfaces you want as Spread removes all =
defaults when
# you use the explicit notation.
# The third multihomed3 host uses a shorthand form of omitting the D or =
C option and
# just listening for all types of traffic and events on both the =
192.168.0 and 1.2.3=20
# networks. If no letter is listed before the interface address then ALL =
types of=20
# events are handled on that interface.

# AcceleratedRing indicates which protocol to use. If false, then the =
regular Spread
# ring protocol is used. If true, then the accelerated ring protocol is =
used. If left
# unspecified, then Spread tries to guess if you are running on a WAN or =
LAN and uses
# the more appropriate protocol: the regular protocol on WANs and the =
accelerated protocol=20
# on LANs.  Spread uses the heuristic that if all your daemon addresses =
are within the=20
# same /16 network then it assumes it is a LAN, otherwise it is a WAN.  =
This same heurstic=20
# is used to pick the default timeouts (WAN or LAN) for the protocols =
too.
#
# Note that daemons can only talk with daemons that run the same =
protocol - they
# will refuse to talk with daemons that run the other protocol. The =
accelerated ring
# protocol uses a flow control algorithm similar to the normal protocol, =
with the
# exception that the token is sent before up to AcceleratedWindow =
packets of the=20
# PersonalWindow (the token still reflects these packets).  In general, =
the closer=20
# AcceleratedWindow is to PersonalWindow the more acceleration can be =
expected -- up to=20
# a point.  In our testing on 1Gb/s and 10Gb/s networks, raising =
AcceleratedWindow=20
# above 20 had significant negative side effects and actually lowered =
throughput.
#
#AcceleratedRing =3D true

# Flow Control Parameters
#
#Window =3D 160
#PersonalWindow =3D 20
#AcceleratedWindow =3D 15

# Membership Timeouts (in terms of milliseconds)
#=20
# If you specify any of these timeouts then you must specify all of them
# (and ensure that they make sense collectively)
#
#TokenTimeout =3D 1250
#HurryTimeout =3D 500
#AliveTimeout =3D 250
#JoinTimeout =3D 250
#RepTimeout =3D 625
#SegTimeout =3D 500
#GatherTimeout =3D 1250
#FormTimeout =3D 1250
#LookupTimeout =3D 30000

------=_NextPart_000_02A3_01D29BF9.543D9650
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Spread-users mailing list
[email protected]
http://lists.spread.org/mailman/listinfo/spread-users

------=_NextPart_000_02A3_01D29BF9.543D9650--