New Whisperers optimisation reduces CPU usage by 30%!
I got the idea to remove the processing of empty packets from the Whisperers, when you DON'T WANT / NEED to store those packets in the server.
And saved us 30% in CPU usage!
Ideaโ
After all recent optimisations, Whisperers CPU usage is a downside of the global Spider architecture.
I have several ideas in the roadmap to reduce this load, but they involved a major investment:
- moving to a compiled language (Rust or Go)
- using eBPF instead of libpcap
Meanwhile, I got the idea to remove the processing of empty packets from the Whisperers, when you DON'T WANT / NEED to store those packets in the server.
This is only valid for TCP sessions.
Those sessions require many 'session management' packets to ensure the delivery of packets over the network:
- [SYN] packet to establish connection
- [SYN, ACK] packet to confirm connection
- [ACK] packets to confirm reception of data, or connection termination
- [RST] packets to clear a connection on error
- [FIN] packet to end connection
- [FIN, ACK] packet to confirm end reception
Some of those packets are useful to capture to track TCP state: SYN, RST and ACK. But ACKs may be skipped.
This could lead to a good share of reduced capture and processing, and thus reducing the Whisperers load.