In my Linux machine I have 32 vcores.
lscpu, I can see same.
For my CPU, "Thread(s) per core" is 2.
So does it mean that I have actually 64 vcores?
lscpu output, the “CPU(s)” line gives the total number of logical CPUs (aka threads). If it’s run inside a VM, that’s the number of virtual cores assigned to the VM, in your case 32.
The other information provided by
lscpu gives more detail, and should end up matching the number of logical CPUs: “Thread(s) per core” × “Core(s) per socket” × “Socket(s)”. The characteristics of the physical CPUs in the host don’t have much bearing on the characteristics of the virtual CPUs inside the VM, and they don’t add to the allocations — if your host CPU has two threads per core, that doesn’t multiply the assigned cores inside the VM.
If you have 32 CPU Cores assigned to your Linux machine and each core have 2 threads then you would be having 64 Threads but not 64 cores.
Generally one core can run only thread at a time but these days most of the CPU supports hyper-threading concept where CPU finds idle stages of current thread pipeline to process another to define better multi processing.
But If your Linux machine is virtual then your VM will show logical threads instead of cores in your machine.