Arjen de Korte ha scritto:
Citeren Marco Chiappero <[email protected]>:
Yes, if we do care about detailed info. The summary page can be enough
for that, but at this point we should introduce changes in the
netxml-driver and a new configuration key (such as "extended = true")
which is not good.
The summary page can be also quite large (depending on the model you
have) so this doesn't really help to reduce the load on the NMC. Since
the way we get information from the NMC is quite different between the
polling mode that is used by the netxml-ups driver and the subscribed
mode for NSM clients, I really don't want to combine these in one driver.
Well, from the practical point of view they are indeed very similar:
when the driver is required to provide updated data through the
upsdrv_updateinfo call, it just reads XML data from both the http and
nsm tcp sockets (more or less directly - I used libneon for both), if
data are available. But this is true for the NSM tcp protocol, where,
apart from the initial key, the client it is not supposed to interact
with the NMC, as far as I've seen. While, if I remember correctly, with
the udp protocol, the client is required to reply, for example when
scanning for managed/subscribed clients. This can be a complication and
it is another reason why I preferred to implement the tcp protocol at
the moment.
This is what I have seen sniffing the network traffic, and I'm not
totally totally sure it works always like I said.
Nonetheless there's no way out if we want many variables, we have to
read a "lot" of data from every single UPS involved and stress the
NMC, even though UDP can help.
For various reasons, using UDP for collecting data from the UPS is not a
good idea.
Ok, so let's discard the NSM protocol through udp... but at this point
the subdriver approach can be interesting.
BTW, why not a good idea?
Maybe we can use the summary page, by default, when the management is
enabled, or use different poll intervals for management and data...
Newer versions of the netxml-ups driver already do so by default.
?
I'm talking about reading the get_object.xml data less often than the
data sent by the management communication.
Later you replied:
" This might be an option, but for logging purposes a full poll every 60
seconds is probably not nearly enough."
Maybe a little misunderstanding...
Yet,
this still doesn't fully solve the problem and you really should not run
more than one netxml-ups driver on any single NMC (regardless of which
version you have).
Sorry, I don't understand what you mean, please explain a little bit.
Please do follow up on the NSM driver, but make this a separate one (so
don't include it in the netxml-ups driver). This not only reduces the
load on the NMC, but it will also make the code much cleaner, since you
don't have to deal with the differences between connected and
non-connected mode (it would always use connected mode). The mapping
between variables for values read from the UPS to NUT variables would
also be reduced significantly and basically you'd only have to parse the
ones from the ALARM messages.
Correct. But what about redundant configurations? Have to be managed
here? And lastly, I'm not that sure, but if some replies are needed from
the client I'm afraid that we are unable to reply due to the relatively
high poll interval (a blocking read should be used instead, and we can't
without creating a new process). I've never thought about that before...
I have to study the udp protocol a little bit.
Regards,
Marco
_______________________________________________
Nut-upsdev mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/nut-upsdev