Changing the IP address range has an influence on the number of robots?

Dmitry Kurochkin dmitry.kurochkin at
Tue Dec 6 17:47:51 UTC 2011

Hi Gerrit.

I think you have some misunderstanding on how Polygraph calculates
configured Agent addresses and how these addresses are used.  I will try
to explain how the things work below.

There are several independent steps during Polygraph client and server

* calculating client and server addresses (serverAddrs() and
  robotAddrs() PGL functions)

* network alias creation

* starting up configured Agents

The first step is optional - nothing is calculated if serverAddrs() or
robotAddrs() PGL functions are not used.  These functions do not depend
on system configuration (e.g. configured network aliases) and they work
in the same way on both client and server.  I.e. for a given PGL file,
serverAddrs() and robotAddrs() would produce the same results on any
system in both polygraph-client and polygraph-server.  Note that these
functions are independent from the next two steps, you could replace
these function calls with their results (array of addresses) and
Polygraph would work in exactly the same way.  Results of these
functions depend only on the Bench configuration and the address scheme.

The network alias creation step is optional as well.  Polygraph creates
aliases only for addresses with interface name and network mask.  E.g.,
Polygraph would create alias for 'lo::' address but would
skip ''.  (IPv6 addresses do not need a netmask, in the
future we may remove netmask requirement for IPv4 as well.)  Polygraph
also requires configured hosts for the bench side to create aliases.  If
there are no hosts configured, Polygraph does not create any aliases.
You may see messages like these on the console:

  000.01| found 6252 Robot IP address(es) total (3126 unique address(es) with interface name and netmask).
  000.01| fyi: no real host addresses for Robot side specified

That means that there are total 3126 aliases needed but Polygraph does
not create them because no hosts are configured.  The hosts are needed
for Polygraph to decide what aliases it needs to create on the system.
All aliases are evenly distributed between the configured hosts.
E.g. if Robot has configured addresses ['lo::'] and
client-side hosts are [''], then polygraph-client would
create aliases when started on and aliases when started on  Polygraph would not create
any addresses when started on a system which does not have any interface
address matching the configured hosts addresses (but that is not an
error, Polygraph would continue as usual).  If you set hosts to a single
address, Polygraph would create all configured aliases on that host.
(One thing to note is that Polygraph removes all existing aliases before
creating new ones unless "--delete_old_addrs false" option is given.)

The next step is to start configured Agents.  It is independent from
both of the previous steps, i.e. it does not matter if you are using
robotAddrs()/serverAddrs() or how aliases are created.  At this point
Polygraph has a list of agents (robots on client and servers of agents)
with configured addresses.  These addresses may or may not be configured
on the system.  Polygraph can not start an agent if the system does not
have the corresponding network interface or alias.  So it starts only
the agents which have addresses configured on the system, others are
just ignored.  This allows you to run multiple client and server
processes on different systems.  E.g., you may set server addresses to
'' and run two polygraph-server processes on
and  Polygraph does not know whether you started servers on
all the systems so it can not warn you about it.  But you will get
errors from Robots trying to connect to Servers which are configured but
not started.  The same is true for Robots, except that you do not get
any errors during the test.

So when running a test, make sure you:

* Create all needed aliases on the systems you want to use or allow
  Polygraph to create aliases for you.

* Run Polygraph client (server) on each configured host.

* Pay attention to error messages printed on the console.  E.g.:

    found 6252 Robot IP address(es) total (3126 unique address(es) with interface name and netmask).
    fyi: no real host addresses for Robot side specified
    created 250 agents total

  shows that the host has network interfaces for only 250 agents, while
  there are 6252 Robots configured.  You either need to configure more
  aliases on the host, or start client processes on other systems which
  have these aliases.

Going back to your original question:

> Why does changing the IP address range have an effect on the number of
> robots? And how?

Changing Bench address space has no effect on the number of Robots,
i.e. the number of results returned by robotAddrs().  The number of
Robots changed because now Polygraph creates all aliases for you.
Before you did not create all the needed aliases and Polygraph did not
start all the configured Robots (so the test load was much less than
what you expected).


More information about the Users mailing list