Not more than one thread per CPU core.
Depending on how much time you want to invest in low level NIC, kernel and haproxy settings, you could pin haproxy and network interrupts to specific cores on the same NUMA node, but you only want to do that if it is really necessary.
Checkout this thread after post 16: