Wireshark-bugs: [Wireshark-bugs] [Bug 9367] Enhancement of the packet-mq dissector (WMQ 7.1-7.5)
Date: Sat, 09 Nov 2013 02:51:21 +0000

Comment # 14 on bug 9367 from
(In reply to comment #12)
> (In reply to comment #11)
> Ok, is there a big benefits when using extended value string vs value string
> ?

Yes !

As a test, I did some performance analysis using 'valgrind / callgrind' for
tshark dissecting a capture file with ~ 7900 frames of which 70% contained the
mq protocol.

Test #1: packet-mq.c, packet-mq-base.c: as is;
Test #2: packet-mq.c, packet-mq-base.c: all value-string array entries '#if 0'd
                                        IOW: all mq value-string lookups fai l

The output of the tests is essentially a list the count of "Instruction Refs"
for the whole program and for each function called in the program.

The results:

Note: try_val_to_str_idx() is the function which actually does the value-string
lookup.


Test #1 (mq dissectors with full [non-empty] value-string arrays)
-------
  9,604,863,520  PROGRAM TOTALS

  1,513,737,948  epan/value_string.c:try_val_to_str_idx
    563,959,429  ???:vfprintf [/usr/lib/libc-2.17.so]
           ....

Test #2 (mq dissectors with "empty" value-string arrays
-------
  8,137,308,796  PROGRAM TOTALS
           ....
     18,653,825  epan/value_string.c:try_val_to_str_idx
           ....

So: for try_val_to_str_idx() calls:
  Test #1:  15  %  of total "Instruction Refs" (the highest count)
  Test #2:    .2%  of the total

Overall: The total "Instruction refs" were reduced by 15% when using the mq
dissectors with empty value string arrays.

Since some of the mq value-string arrays are *very* large, I'm not surprised at
the results of the test and I certainly would expect a large improvement once
extended value strings are used for the "larger" value-string arrays. (Accesses
to extended-value-strings are a either direct lookup or a binary search if the
value-string arrays are sorted in ascending order).

> 
> Is there a minimum of element to be defined to be more advantageous when
> using extended string ?
> 

I haven't done the test so I don't know a good minimum. (I need to run that
test and will do so sometime in the next several days. I've previously tended
to use more or less a size of 20 elements in an array as a minimum but that's
not based upon any tests).

In any case, for now I suggest starting by using extended value strings for all
the larger arrays (e.g., maybe those containing over 50 elements) and we'll see
how much improvement we get.

(Obviously the results are dependent upon how many references to a particular
value-string-array happen for a particular capture file). 

packet-mq/packet-mq-base value-string array sizes:
  1150  PrmId
   833  mqrc
   329  selector
   190  mqcmd
   165  Command
   142  MQCFINT_Parse
    77  StructID
    65  opcode
    35  mqat
    33  ApplType
    33  status
    31  objtype
    31  ObjType
    25  mqcft
    24  PrmTyp
    24  xaer
    20  ChannelSubStates
    15  notifcode
    12  FilterOP
    12  Platform
    10  ChannelStatus
        ...


You are receiving this mail because:
  • You are watching all bug changes.