Best practices are going to be dependent on your hardware configuration and what you are trying to achieve inside the VM. Let's dig into your processor to see what that tells us.
The CPU E5-2670 v2 is a 10-core processor from 2013. The processor supports symmetric multithreading (i.e., SMT). This means that the processor has 20 "threads." Note that a thread is NOT a core. A thread does not contribute additional execution resources. Instead, threads allow the core to "context-switch" between different execution pipelines to better use execution resources when the pipeline stalls on memory references. The impact of SMT on performance efficiency varies. I would assume no more than a 15% improvement vs. a single core on raw CPU throughput.
You have an R730. This is a dual CPU package system. You have two 10 core processors. Each processor is its own NUMA domain. You likely have 128G attached to each processor. Generally speaking, you want to do everything possible to constrain a workload to a single NUMA node since "remote" memory accesses over the inter-processor interconnect are slow relative to local NUMA access. Regarding virtual machine configuration, we should strive to ensure that all of the VCPUs execute on the same CPU package, not spanning NUMA domains. In some cases, the Linux scheduler will do a decent job at re-arranging resources to optimize for NUMA. But it's not perfect by any stretch.
Given your hardware configuration, if you are allocating singular VMs with 12 cores, one of two things is guaranteed to happen. You are either spanning NUMA domains, or your VCPUs are competing with one another via threads. Remember, you really only have 10 cores on a package.
Further, if performance is your primary concern, you should look at how much you are over-committing the CPU resources. Specifically, minimize the ratio of VCPU to actual CPU cores. I would recommend that you provision no more than 40 VCPUs total on that hardware, for enterprise applications. And reduce the number of VCPUs in a VM to ensure a good fit from a NUMA perspective.
Blockbridge : Ultra low latency all-NVME shared storage for Proxmox - https://www.blockbridge.com/proxmox