I’m currently using Zeek in clustering mode and discovered that the pin_cpus option allows me to specify which CPU cores the worker nodes should run on. Here is my config
[zeek]
type = logger
host = localhost
[manager]
type = manager
host = localhost
[proxy]
type = proxy
host = localhost
[worker-1]
type = worker
host = localhost
interface = dpdk::0
pin_cpus=5,6,7
I configured worker-1 to use CPU cores 5 through 7, but it always ends up running only on core 5
Someone please correct me if I’m wrong since I haven’t done it this way in awhile, but…
I think what you’re seeing is a combination of workers being single threaded and the multiple cpu option w/ ‘pin_cpus’ generally be combined with ‘lb_procs’. I would expect to see a separate worker process per cpu you are pinning.
I tried the configuration you shared — it worked initially, but after about 1–2 minutes, the worker stops automatically. I’m not sure why this happens, but I suspect it might be related to using DPDK as the capture device.
In this setup, is there a specific load balancing method I should be using?
Ah, I didn’t realize you were running the ESnet dpdk package. That is currently unmaintained without nobody available to support it. I’d recommend switching to AF_PACKET which is built-in now.