1, your application/library should be able to pin the process to the correct core, the resource definitions helps PBS to schedule jobs on to respective resources defined by the node configuration.
2. in your version 2 config file you can oversubscribe/under-subscribe the resources/HT enabled/disabled.
3. creating vnodes (your use case) does not guarantee that each node is mapped to one specific core in a Dual core system.
a. one needs to write scripts which will tells the specific core id and updates the version 2 config file
b. write PBS hooks to check which core-id is free like the concept of CUDA_VISIBLE_DEVICE) and update the node configuration
- user should request this core-id in the qsub statement and the application should use this core id to tag its process to the correct core on that processor
Also you can check out Cgroups: http://community.pbspro.org/t/adding-support-for-cgroups/172/2