Wireshark-bugs: [Wireshark-bugs] [Bug 11944] libwireshark too big
Date: Sat, 18 Jun 2016 17:37:41 +0000
Comment # 11
on bug 11944
from Balint Reczey
I suggest measuring before cutting. Tshark from latest master consumes up to ~33 MB heap on my system which is not much at all and most of them coming from reserving initial blocks for wmem: $ WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 valgrind --tool=massif --alloc-fn=wmem_alloc -- run/tshark -r ~/projects/wireshark.git/test/captures/dhcp.pcapng $ms_print -------------------------------------------------------------------------------- Command: run/tshark -r /home/rbalint/projects/wireshark.git/test/captures/dhcp.pcapng Massif arguments: --alloc-fn=wmem_alloc ms_print arguments: massif.out.24247 -------------------------------------------------------------------------------- MB 33.27^ # | # | # | # | # | # | # | # | @ :::::::@::::@:::::@::::::::# | @:::::::::::::@::::::::@::::@:::::@:: :# | @::::::::: :::@::::::::@::::@:::::@:: :# | ::::@@::::::::: :::@::::::::@::::@:::::@:: :# | ::::: @@::::::::: :::@::::::::@::::@:::::@:: :# | ::::::::: @@::::::::: :::@::::::::@::::@:::::@:: :# | :::::::::: @@::::::::: :::@::::::::@::::@:::::@:: :# | :@::@@::::::::::: @@::::::::: :::@::::::::@::::@:::::@:: :# | ::@:@::@::@@::::::::::: @@::::::::: :::@::::::::@::::@:::::@:: :# | ::@:@::@::@@::::::::::: @@::::::::: :::@::::::::@::::@:::::@:: :# | ::@:@::@::@@::::::::::: @@::::::::: :::@::::::::@::::@:::::@:: :# | ::@:@::@::@@::::::::::: @@::::::::: :::@::::::::@::::@:::::@:: :# 0 +----------------------------------------------------------------------->Mi 0 626.6 Number of snapshots: 85 Detailed snapshots: [5, 7, 10, 13, 14, 28, 29, 43, 55, 65, 75, 81, 82, 83 (peak)] ... -------------------------------------------------------------------------------- n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) -------------------------------------------------------------------------------- 83 652,019,185 34,885,760 33,686,493 1,199,267 0 96.56% (33,686,493B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->71.58% (24,972,498B) 0xAA1DA57: g_malloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.0) | ->48.09% (16,777,216B) 0x71F8D6B: wmem_block_alloc (wmem_allocator_block.c:777) | | ->48.09% (16,777,216B) 0x71FC10C: wmem_tree_new (wmem_tree.c:214) | | ->24.05% (8,388,608B) 0x664259F: guids_init (guid-utils.c:175) | | | ->24.05% (8,388,608B) 0x663CFA0: epan_init (epan.c:106) | | | ->24.05% (8,388,608B) 0x115D61: main (tshark.c:1210) | | | | | ->24.05% (8,388,608B) 0x6DD4316: tcp_init (packet-tcp.c:6093) | | ->24.05% (8,388,608B) 0xAA35AAB: g_slist_foreach (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.0) | | ->24.05% (8,388,608B) 0x66473CB: init_dissection (packet.c:282) | | ->24.05% (8,388,608B) 0x663D201: epan_new (epan.c:193) | | ->24.05% (8,388,608B) 0x11D981: cf_open (tshark.c:2563) | | ->24.05% (8,388,608B) 0x117BC1: main (tshark.c:2256) | | | ->12.02% (4,194,304B) 0x71F968C: wmem_block_fast_alloc (wmem_allocator_block_fast.c:87) | | ->06.01% (2,097,152B) 0x71FA24C: wmem_list_new (wmem_list.c:177) | | | ->06.01% (2,097,152B) 0x6648D84: dissect_record (packet.c:519) | | | ->06.01% (2,097,152B) 0x663D602: epan_dissect_run_with_taps (epan.c:378) | | | ->06.01% (2,097,152B) 0x11D114: process_packet (tshark.c:3807) | | | ->06.01% (2,097,152B) 0x118051: main (tshark.c:3563) | | | ... The following small change decreases it to ~25MB max.: diff --git a/epan/wmem/wmem_allocator_block.c b/epan/wmem/wmem_allocator_block.c index c487db6..1eb853f 100644 --- a/epan/wmem/wmem_allocator_block.c +++ b/epan/wmem/wmem_allocator_block.c @@ -151,7 +151,7 @@ * 8MB is a pretty arbitrary value - it's big enough that it should last a while * and small enough that a mostly-unused one doesn't waste *too* much. It's * also a nice power of two, of course. */ -#define WMEM_BLOCK_SIZE (8 * 1024 * 1024) +#define WMEM_BLOCK_SIZE (1 * 1024 * 1024) /* The header for an entire OS-level 'block' of memory */ typedef struct _wmem_block_hdr_t { There are other other interesting places the attached log points at, such as the t125 dissector.
You are receiving this mail because:
- You are watching all bug changes.
- Prev by Date: [Wireshark-bugs] [Bug 11944] libwireshark too big
- Next by Date: [Wireshark-bugs] [Bug 5681] Context menu key not supported
- Previous by thread: [Wireshark-bugs] [Bug 11944] libwireshark too big
- Next by thread: [Wireshark-bugs] [Bug 11944] libwireshark too big
- Index(es):