Performance

Edit | View | Diffs | Info | Raw | Print

Performance

Some tips to fine tune Ethereal's performance.

There two main topics, where Performance currently is an issue: large capture files and packet drops while capturing.

Working with large capture files

If you have a large capture file e.g. > 100MB, Ethereal will become slow while loading, filtering and alike actions.

There are some things you can do, but unfortunately this will remove some decoding comfort:

  • disable Coloring Rules: this will significantly increase performance. To disable these rules, use View->Colorize Packet List. You'll could also delete all coloring rules or rename the coloring rules file.

Disabling some preference settings may save you a lot of memory consumption. Be aware that these features are probably required to detect the packets properly that you want to capture. So maybe you miss packets that are missinterpreted.

You can check if that's the case, by loading a capture file, setting a display filter of the packet types in question and see if the number of displayed packets are the same with and without these settings. You may need to reload the file after changing the settings (and don't forget to press the "Save" button :-).

Some good preference setting candidates:

  • IP/Reassembled fragmented IP datagrams

  • TCP/Allow subdissectors to reassemble TCP streams

Display system overview

If the above hints didn't help, you may need to advance your machine. To do this, the following gives some insights which parts are worth looking at.

A simplified look at the display system:

harddisk -> packet dissection -> display filter / coloring rule -> display

  • harddisk - uncritical

  • packet dissection - fine tune the Preferences

  • display filter

  • coloring rule

  • display - uncritical

The things that may help: Add more physical RAM and use a faster CPU (multi core CPU's won't help a lot, the dissection is done in a single task)

Packet drops while capturing

After you've finished a capture, you've noticed packet drops, indicated by the statusbar counter.

What has happened? Not all packets coming in from the network could be saved into the capture file. As your machine was too slow to handle the incoming packet rate some packets had to be discarded.

General considerations:

  • stop other programs running on that machine, to remove system load

  • buy a bigger, faster machine ;-)

  • as both Ethereal and Tethereal are not optimized for speed on specific operating systems, use a "capture only" program to capture packets and use Ethereal/Tethereal later to do the analysis. Since upcoming version 0.10.15 you could use dumpcap for this (or e.g. TcpDump / WinDump)

Optimized Ethereal settings:

  • don't use Update list of packets in real time in the capture options dialog, to remove system load

  • Win32 only: increase the Buffer size in the capture options dialog (set it to a reasonable value e.g. 20MB, depending of your systems memory size)

  • don't use read filters by not using the -R command line option; this would need processing time and a lot of memory

  • don't use capture filters as they need processing time (but if you're not interested in all packets, a capture filter that selects only the packets in which you're interested could reduce overall processing time, as packets can be discarded by the capture filter before being written to a capture file - and, on systems with in-kernel capture filtering, they'd be discarded before they're even copied up to Ethereal from the kernel)

Capturing system overview

If the above hints didn't help, you may need to advance your machine. To do this, the following gives some insights which parts are worth looking at.

A simplified look at the capturing system:

network card -> libpcap(capture filter) -> capture tool -> harddisk

  • network card - some cards need a lot more CPU power than others

  • libpcap - an optional capture filter will need additional CPU power

  • capture tool - won't do much processing (get the packets from libpcap and write it to the harddisk)

  • harddisk - as fast as possible, a fast RAID might be preferrable

  • CPU - the task processed is a single task, a multi-core CPU won't help a lot

The amount of memory isn't really critical for capturing.

Of course, the system itself should be reasonable configured, e.g. a very fast CPU doesn't make real sense with only very limited RAM.