Solaris non-global zone cpu pinning

Am new on solaris :):confused:

Have below questions for dedicated-cpu cores

  1. For licensing I want to assign 2 core per non-global zone
    one from each processor. Am using below but seems it's not supported .
root@solaris-test:~# psrinfo
0       on-line   since 04/25/2016 01:54:36
1       on-line   since 04/25/2016 01:54:39
2       on-line   since 04/25/2016 01:54:39
3       on-line   since 04/25/2016 01:54:39
4       on-line   since 04/25/2016 01:54:39
5       on-line   since 04/25/2016 01:54:39
6       on-line   since 04/25/2016 01:54:39
7       on-line   since 04/25/2016 01:54:39
root@solaris-test:~# psrinfo -pv
The physical processor has 4 virtual processors (0,2,4,6)
  x86 (AuthenticAMD 100F23 family 16 model 2 step 3 clock 2000 MHz)
        Quad-Core AMD Opteron(tm) Processor 2350        [ Socket: F(1207) ]
The physical processor has 4 virtual processors (1,3,5,7)
  x86 (AuthenticAMD 100F23 family 16 model 2 step 3 clock 2000 MHz)
        Quad-Core AMD Opteron(tm) Processor 2350        [ Socket: F(1207) ]

Here I want to assign cores 2 and 5, but am getting below error. EXPERTS pls assist

zonecfg:ngz-101:dedicated-cpu> set cores=2,5
zonecfg:ngz-101:dedicated-cpu> end
zonecfg:ngz-101> commit
zonecfg:ngz-101> exit
root@solaris-test:~# zoneadm -z ngz-101 apply
zone 'ngz-101': Checking: Adding dedicated-cpu
zone 'ngz-101': error: failed to open pool configuration: Facility is not active
zoneadm: zone ngz-101: failed to apply the configuration: zoneadmd(1M) returned an error 1 (unspecified error)
root@solaris-test:~#

root@solaris-test:~# zonecfg -z ngz-101 info dedicated-cpu
dedicated-cpu:
        ncpus not specified
        cpus not specified
        cores: 2,5
        sockets not specified
root@solaris-test:~#

Basically my requirement is cpu pinning on non-global zones for licencing purpose, please suggest if there are any other options available .

Thanks in advance

We can use other process by way of creating resource pool with assigned CPUs through pooladm command.

One more way is to create LDOM on your server if your server belong to T-series.

Yes, pooladm is one approach.

Fair warning though, a lot of software companies, for example Oracle, license by the cpu (or core). But. The major gotcha is how they determine the core or cpu count. For Solaris and Linux, as an example, it is not for the virtual (zone) itself, but for the whole box. All cores/cpus on the box count. Not the zone's count. We had one zone (8 cores, pooladm) running several db's. No other oracle app anywhere on the box. We were audited. All 32 cores on the global zone is what we have to use for licensure now, for that machine.

Hi Jim

Thanks for sharing your experience on oracle licencing . It would be nice to further discuss on licensing topic which will help others to get confident on licensing term.

As per oracle doc on site

" Oracle recognizes capped Oracle Solaris Zones as licensable entities called hard partitions. There are several ways to implement CPU hard partitioning to comply with Oracle Database licensing policies (see the paper "Hard Partitioning With Oracle Solaris Zones"), including the following:

  • Using the capped-cpu property for the zone configuration command (zonecfg)

  • Using the dedicated-cpu property for zonecfg

  • Using a resource pool with assigned hardware threads (vCPUs) and assigning the pool to a zone (as in the example here)"

Out of above three process, it is recommended to configure a processor set procedure.
As from a performance point of view, allocating a full core to each database instance helps to optimize database performance because it gives database processes exclusive access to the pipelines, cache, and other resources within an individual core.

one more oracle site links says

"the Oracle licensing document referenced above states that the
acceptable way to configure Oracle Solaris Zones is using �capped
Zones/Containers only"