You configure VS cores on the gateway object GUI and not cpconfig (that only adjust cores on VS0 and normally i would not enable CoreXL on VS0 at all). For example VS below is configured with 6 cores
Then you may use fw ctl affinity and sim affinity (for SXL) commands to adjust which cores handle which VS
Below is a sample of VSX with 7 VS and 20 core system. Cores 0-3 are reserved for SXL / Interfaces and rest is set depending on VS requirements. VS3 and VS6 in this case has dedicated cores for Identity Awareness btw.
fw ctl affinity -l
eth1-01: CPU 1
eth1-02: CPU 2
eth1-03: CPU 3
eth1-04: CPU 3
eth1-06: CPU 0
eth2-01: CPU 2
eth2-02: CPU 3
Mgmt: CPU 1
Sync: CPU 1
VS_0: CPU 4
VS_0 fwk: CPU 4
VS_1: CPU 4
VS_1 fwk: CPU 4
VS_2: CPU 4
VS_2 fwk: CPU 4
VS_3: CPU 7
VS_3 fwk: CPU 7
VS_3 pdpd: CPU 5 6
VS_3 pepd: CPU 5 6
VS_4: CPU 7
VS_4 fwk: CPU 7
VS_5: CPU 4
VS_5 fwk: CPU 4
VS_6: CPU 10 11 12 13 14 15 16 17 18 19
VS_6 fwk: CPU 10 11 12 13 14 15 16 17 18 19
VS_6 pdpd: CPU 5 6
VS_6 pepd: CPU 5 6
VS_7: CPU 7
VS_7 fwk: CPU 7
For config above you would run these commands
fw ctl affinity -s -d -vsid 6 -cpu 10-19
fw ctl affinity -s -d -vsid 0 -cpu 4
fw ctl affinity -s -d -vsid 1 -cpu 4
fw ctl affinity -s -d -vsid 2 -cpu 4
fw ctl affinity -s -d -vsid 5 -cpu 4
fw ctl affinity -s -d -vsid 3 -cpu 7
fw ctl affinity -s -d -vsid 4 -cpu 7
fw ctl affinity -s -d -vsid 7 -cpu 7
fw ctl affinity -s -d -pname pdpd -vsid 3 -cpu 5 6
fw ctl affinity -s -d -pname pepd -vsid 3 -cpu 5 6
fw ctl affinity -s -d -pname pdpd -vsid 6 -cpu 5 6
fw ctl affinity -s -d -pname pepd -vsid 6 -cpu 5 6
So you kind of have to look at your current CPU consumption and design it from there.
Remember there is no right or wrong answer - it all depends on your environment and requirements. We tend to allocate dedicated cores for "important" VSes and less important share the same cores so in case something goes terribly wrong on less important VSes, they do not affect important ones at all. Feel free to PM if you want to