Disable Discovery

3 posts / 0 new
Last post
Offline
Last seen: 6 years 5 months ago
Joined: 11/20/2012
Posts: 4
Disable Discovery

Is there a way to programmatically disable discovery?

During start-up initialization our executables block until discovery of all endpoints is complete on all domains and partitions. After initialization there are no late joiners. There seems to be a lot of on-going discovery related traffic. Is there a way to disable discovery, we can safely do so after initialization?

Thank you.

rose's picture
Offline
Last seen: 1 day 11 hours ago
Joined: 08/22/2011
Posts: 147

Hello techgeek, 

There is no way to disable discovery entirely, because there would be no way to know if an application was restarted.  However, there are several ways to minimize discovery traffic, some of which may make initial discovery take longer:

  1. Make sure you are using the smallest number of DomainParticipants that is reasonable for your applications.  DomainParticipants are responsible for the discovery process, so if you instantiate more than you need per-application, this will increase the discovery traffic.
  2. Change your initial peers to ensure your DomainParticipants only contact machines you are interested in:  By default, your initial peers include: 4@udpv4://127.0.0.1 , 4@udpv4://239.255.0.1, 4@shmem://.  This means that you are contacting 5 different ports at each of these addresses. (More information on the peer descriptor format that is used for configuring initial peers is in the user manual here).  Also, one these addresses is multicast, which may be treated like broadcast, depending on your switch configuration.  
    1. If you have a very well-known system, you can configure only the host IPs you will be using in your initial peers: 10.10.1.2, myhostname, etc.  This is harder to configure than using multicast, but if your switch is treating multicast like broadcast this can reduce traffic.
    2. If you will have only a single application per host, you can change your initial peers to use 0@127.0.0.1, 0@239.255.0.1, 0@myhostname, etc.  (Note, however, that if you add more applications-per-host in the future, this might prevent full discovery, so document this carefully).
    3. You can also check your switch configuration to ensure that you have IGMP snooping enabled, which will prevent discovery data from being sent to hosts that are not listening on that multicast group.
  3. You can tune the DomainParticipant discovery messages to send less frequently using the discovery_config.participant_liveliness_assert_period and participant_liveliness_lease_duration QoS.  Note that these QoS control how quickly DomainParticipants discover that other DomainParticipants have lost liveliness (due to being shut down improperly, becoming disconnected, etc.)  You can tune the announcements to be less frequent and the lease duration to be longer, but this means that your applications will take longer to detect that a DomainParticipant has gone away.
  4. Switch to using the low-bandwidth discovery plug-ins.  These require more up-front configuration of your applications, because less data is being sent during discovery.  I believe you have to contact your account manager to download these.

Thank you!

Rose

Offline
Last seen: 6 years 5 months ago
Joined: 11/20/2012
Posts: 4

Hi Rose,

Many thanks for the suggestions.  I will try option 2 to see if it increases the application run-time speed.