546
edits
No edit summary |
|||
Line 3: | Line 3: | ||
== About == | == About == | ||
This guide is about performance optimization of the Allegro for specific use cases. By default, the | This guide is about performance optimization of the '''Allegro Network Multimeter''' for specific use cases. By default, the device runs in a configuration that fits for the majority of users and you do not need to change any parameter of the configuration. Depending on the actual network traffic and measurement setup, it can be beneficial to adjust some performance-related parameters to achieve better overall performance. | ||
== High Level Allegro System Layout == | == High Level Allegro System Layout == | ||
The Allegro has various | The '''Allegro Network Multimeter''' has various components that processes the traffic. These components are: | ||
* I/O threads: responsible for all I/O operations between the | * I/O threads: responsible for all I/O operations between the network interface cards and the CPUs. | ||
* Analyzer threads: responsible for decoding and most of the database operations | * Analyzer threads: responsible for decoding network traffic and most of the database operations for the statistical values. | ||
* DB threads: optional threads | * DB threads: optional threads which offload memory intensive database operations, see [[DB mode]]. | ||
The Allegro uses queues to buffer packets and messages between the hardware instances ( interfaces chips, central processing unit, storage ) and threads. All threads measure their which | The '''Allegro Network Multimeter''' uses queues to buffer packets and messages between the hardware instances (interfaces chips, central processing unit, storage) and threads. All threads measure their load individually which can be monitored at '''Info''' → '''System Info''' → '''Load'''. | ||
The following queues can be monitored to see where | The utilization of the following queues can be monitored to see if and where changes to queue settings are helpful: | ||
== Interface hardware queues == | == Interface hardware queues == | ||
The interface hardware queue is between the interfaces and I/O threads of the central processing unit. Whenever the I/O threads are too slow to consume all packets from the built-in or extension interfaces, the '''hardware miss''' counter of the | The interface hardware queue is between the network interfaces and the I/O threads of the central processing unit. Whenever the I/O threads are too slow to consume all packets from the built-in or extension network interfaces, the '''hardware miss''' counter of the [[Interface statistics]] will increase over time. | ||
The load of the I/O threads can be checked at the '''Info''' → '''System Info''' → '''Load'''. | The load of the I/O threads can be checked at the '''Info''' → '''System Info''' → '''Load'''. | ||
Line 25: | Line 25: | ||
TODO: add overloaded Interface graph. | TODO: add overloaded Interface graph. | ||
If | If the load is near 100%, packet miss can occur and the following countermeasures can be tried: | ||
The bridge mode requires approximately 10 - 30 % more load on the I/O | # The bridge mode requires approximately 10% - 30% more load on the I/O threads than the sink mode. The I/O threads have to sent the incoming traffic to the corresponding outgoing network interface for forwarding. If packet forwarding is not necessary (for example when being deployed at a mirror port), switching to '''sink mode''' will improve the performance of the device. For configuration, please see [[Global_settings#Packet_processing_mode|Global settings]]. | ||
For configuration, please see | # The number of I/O threads can be adjusted at the cost of analyzer threads. This option is available on the Allegro 3000 and above due to the large number of internal CPU cores. Allegro Packets recommends to increase the analyzer threads only on the Allegro 3000 and above if necessary. | ||
#: This setting can be changed at '''Settings''' -> '''Global Settings''' → '''Expert Settings''' | |||
The number of I/O threads can be | #: [[File:Rx sockets io thread.png|600px]] | ||
#: Allegro Packets recommends to test with HT enabled and 2 or 4 threads for I/O. If you disable the load on the analyzers ( see [[#High analyzer load]] ), you can also test with 4 I/O Threads without HT for maximum performance. | |||
This setting can be changed at '''Settings''' -> '''Global Settings''' → '''Expert Settings''' | |||
[[File:Rx sockets io thread.png|600px]] | |||
Allegro recommends to test with HT enabled and 2 or 4 threads for I/O. If you disable the load on the analyzers ( see [[#High analyzer load]] ), you can also test with 4 I/O Threads without HT for maximum performance. | |||
== Analyzer queues == | == Analyzer queues == | ||
The Allegro has a packet queue between I/O threads and the analyzer threads. Please note that the increasing counters at the initial startup of the Allegro can be normal under high load scenarios for a few seconds. You can check at the '''Interface stats''' per interface all I/O threads could push all packets to the analyzer queues or not. The counter is '''Not processed due to overload'''. | The '''Allegro Network Multimeter''' has a packet queue between I/O threads and the analyzer threads. Please note that the increasing counters at the initial startup of the Allegro can be normal under high load scenarios for a few seconds. You can check at the '''Interface stats''' per interface all I/O threads could push all packets to the analyzer queues or not. The counter is '''Not processed due to overload'''. | ||
[[File:Interface analyzer packet drop.png|400px]] | [[File:Interface analyzer packet drop.png|400px]] |
edits