Wireshark mailing list archives

Re: [Wireshark-commits] master b6d20a2: Optimize reseting epan_dissect_t when filtering.


From: Jakub Zawadzki <darkjames-ws () darkjames pl>
Date: Sat, 21 Jun 2014 22:12:48 +0200

Hi Evan,

On Thu, Jun 19, 2014 at 04:40:06PM -0700, Evan Huus wrote:
On Thu, Jun 19, 2014 at 4:33 PM, Wireshark code review <code-review-do-not-reply () wireshark org> wrote:

URL:
https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=b6d20a27a149c1b09f17561f972d0f45a41de992
Submitter: Anders Broman (a.broman58 () gmail com)
Changed: branch: master
Repository: wireshark

Commits:

b6d20a2 by Jakub Zawadzki (darkjames () darkjames pl):

    Optimize reseting epan_dissect_t when filtering.

    Don't destroy interesting_hfids hash table, just remove all values.

[cut]

Another possible improvement, rather than g_mallocing the elements in the
hash table, we could put them in the pinfo pool, which is always freed when
proto_tree_reset or proto_tree_free are called...

Sure, we can do it, but it looks for me < 1%.

18,116,612,393  PROGRAM TOTALS

wmem might reduce *a little* this 93M Ir below:

   266,173,051  *  ???:proto_tree_add_node [/tmp/wireshark/epan/.libs/libwireshark.so.0.0.0]
    63,201,727  >   ???:g_ptr_array_add (291740x) [/usr/lib64/libglib-2.0.so.0.3600.4]
    30,049,112  >   ???:g_ptr_array_new (291740x) [/usr/lib64/libglib-2.0.so.0.3600.4]

+ we will get rid of 74M Ir.

    79,962,317  *  ???:free_GPtrArray_value [/tmp/wireshark/epan/.libs/libwireshark.so.0.0.0]
    74,419,257  >   ???:g_ptr_array_free (291740x) [/usr/lib64/libglib-2.0.so.0.3600.4]

For now I'm not optimizating anything which gives < 1%, but I think Anders will be grateful for any optimizations.


If we're in topic of optimizing 'slower' [de]allocations in common functions:

- tvb allocation/deallocation (2.5%, or 3.4% when no filtering)

   243,931,671  *  ???:tvb_new [/tmp/wireshark/epan/.libs/libwireshark.so.0.0.0]
   202,052,290  >   ???:g_slice_alloc (2463493x) [/usr/lib64/libglib-2.0.so.0.3600.4]

   291,765,126  *  ???:tvb_free_chain [/tmp/wireshark/epan/.libs/libwireshark.so.0.0.0]
   256,390,635  >   ???:g_slice_free1 (2435843x) [/usr/lib64/libglib-2.0.so.0.3600.4]

- pinfo->proto_data, fd->pfd (~0.7%, or 1.2% when no filtering)

   194,007,044  *  ???:p_add_proto_data [/tmp/wireshark/epan/.libs/libwireshark.so.0.0.0]
   122,865,401  >   ???:g_slist_insert_sorted (893907x) [/usr/lib64/libglib-2.0.so.0.3600.4] [more than 50% in slice 
allocator]

   739,310,064  *  ???:epan_dissect_reset [/tmp/wireshark/epan/.libs/libwireshark.so.0.0.0]
    68,198,431  >   ???:g_slist_free (583479x) [/usr/lib64/libglib-2.0.so.0.3600.4]

    24,222,093  *  ???:frame_data_destroy [/tmp/wireshark/epan/.libs/libwireshark.so.0.0.0]
    21,616,060  >   ???:g_slist_free (187951x) [/usr/lib64/libglib-2.0.so.0.3600.4]


This, or next week I'll try to do tvb.


Cheers,
Jakub.
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: