Archived

This forum has been archived. Please start a new discussion on GitHub.

Server-side throughput performance measures?

The demo/Ice/throughput example is nice when checking thoughput performance, but
I'm wondering about it's accuracy with measuring oneway messaging, since all the
timings are client-side (and I'm getting wonderful performance numbers {especially
with NPTL} which always makes me think something has to be wrong...).

Has anyone written a more sophisticated throughput measure, which includes
server-side measures?

Comments

  • marc
    marc Florida
    Hmmm... you could add a througput->ping() at the end of the loop that sends the oneways in Client.cpp. This way, the last request is a twoway, so when the client measures the time, the server has completed processing all oneways. Therefore the time measured by the client reflects the time needed by the server to process the requests.
  • I need some clarification on this. Does sending a ping at the end of loop of oneway calls guarantee that all the oneways were processed by the server? Does this depend on whether one is using UDP or TCP?
  • marc
    marc Florida
    Upon the return of any twoway call (not just ping), it is guaranteed that all oneway calls that were sent using the same connection have been received by the server. You do not have any guarantee that the server has already processed the oneways, only that the server received them for processing.

    Note that with the current version of Ice, there is no way to compare connections, i.e., you cannot compare explicitly that the twoway uses the same connection as the oneways sent before. (A future version will allow you to compare connections.) However, without going into detail, even with the current version of Ice, if you do not set any special proxy properties, like different timeouts for the oneways and twoways, Ice will use the same connection.

    This applies only to oneways and twoways using TCP. There are no guarantees whatsoever for datagrams using UDP.