Solaris Resource Controls - Oracle DB Project - Solaris 11.4
Solaris Resource Controls - Oracle DB Project - Solaris 11.4
Last time I had to explain what this solaris project for oracle DBs means per line and why it is set. The better question
was – how can you see the usage if you have to increase the limit – again, per entry… I tried to write it together and
want to share my findings. If you have any more input I am open to share it.
Looking into that Oracle database project, running on a SuperCluster Solaris 11.4
user.oracle
projid : 105
comment: ""
users : (none)
groups : (none)
attribs: process.max-core-size=(privileged,1073741824,deny)
process.max-file-descriptor=(basic,65536,deny)
process.max-sem-nsems=(privileged,2048,deny)
process.max-sem-ops=(privileged,1024,deny)
process.max-stack-size=(basic,33554432,deny)
project.max-msg-ids=(privileged,4096,deny)
project.max-sem-ids=(privileged,65535,deny)
project.max-shm-ids=(privileged,4096,deny)
project.max-shm-memory=(privileged,2199023255552,deny)
Let's try to look into these settings what they mean, defaults, Sol10vs11, Oracle RDBMS docu, OCS recommendations
and usage:
Contents
1 max-file-descriptor
2 max-sem-nsems
3 max-sem-ops
4 max-stack-size
5 max-msg-ids
6 max-sem-ids
7 max-shm-ids
8 max-core-size
9 max-shm-memory
max-file-descriptor
https://www.solaris.wtf/blog/solaris-resource-controls-oracle-db-project/ 1/7
2/1/24, 11:19 AM Solaris Resource Controls - Oracle DB project - solaris... wtf?!?
CHECK setting
CHECK usage
In this example, 26298 is the number of file descriptors in use and 36848 the number of allocated file descriptors. Note
that in Solaris, there is no maximum open file descriptors setting for the system, only a single process might have open.
They are allocated on demand as long as there is free RAM available.
max-sem-nsems
CHECK setting
https://www.solaris.wtf/blog/solaris-resource-controls-oracle-db-project/ 2/7
2/1/24, 11:19 AM Solaris Resource Controls - Oracle DB project - solaris... wtf?!?
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
process.max-sem-nsems
privileged 2.05K - deny -
system 32.8K max deny -
oracle:~$
max-sem-ops
CHECK ? Good question, could not find how to check the current usage; documentation says that the application
should get errorsr; eturn code of E2BIG from a semop() call...
max-stack-size
CHECK settings
https://www.solaris.wtf/blog/solaris-resource-controls-oracle-db-project/ 3/7
2/1/24, 11:19 AM Solaris Resource Controls - Oracle DB project - solaris... wtf?!?
oracle:~$ ulimit -s
32768
oracle:~$ prctl -n process.max-stack-size -i process $$
process: 24517: -bash
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
process.max-stack-size
basic 32.0MB - deny -
privileged 8.00EB max deny -
system 8.00EB max deny -
oracle-@C01SC1C0L01Z01A:~$ ulimit -sS
The below example shows the process caused a pagefault at 0x0. The size of stack growth is the different between the
fault address and the current stack address, which is 0xffc00000 - 0x0 ~= 3.99GB while the process.max-stack-size is
8MB.
# tail -1 /var/adm/messages
Jun 9 06:56:26 hostname genunix: [ID 500092 kern.notice] basic rctl process.max-
stack-size (value 8388608) exceeded by process 6672.
max-msg-ids
https://www.solaris.wtf/blog/solaris-resource-controls-oracle-db-project/ 4/7
2/1/24, 11:19 AM Solaris Resource Controls - Oracle DB project - solaris... wtf?!?
Solaris 10 Default = 50
Solaris 11.4 Default = 128
OSC Setting = 4096
# ipcs -q
Seen Errors
max-sem-ids
CHECK: You can see the identifier for the facility entry using ipcs -s; i.m.a.o. the current usage should be seen with:
max-shm-ids
https://www.solaris.wtf/blog/solaris-resource-controls-oracle-db-project/ 5/7
2/1/24, 11:19 AM Solaris Resource Controls - Oracle DB project - solaris... wtf?!?
Solaris 11.4 Default = 128
OSC Setting = 4096
CHECK
# ipcs -b
# ipcs -bZ | grep -c ^m
max-core-size
process.max-core-size Maximum size of a core file that is created by this process. Default is unlimited!
max-shm-memory
Last but not least the maximum shared memory itself. Default is 1/4 of physical Memory in Solaris 11.4 - i guess the
best to see the usage is mdb and its OSM section (optimized shared memory):
BTW; never forget – you can always use “rctladm” to enable syslog for a lot of limits.
# rctladm -l
process.max-cpu-time syslog=off [ lowerable no-deny cpu-time inf seconds ]
process.max-file-size syslog=off [ lowerable deny file-size bytes ]
process.max-data-size syslog=off [ lowerable deny no-signal bytes ]
https://www.solaris.wtf/blog/solaris-resource-controls-oracle-db-project/ 6/7
2/1/24, 11:19 AM Solaris Resource Controls - Oracle DB project - solaris... wtf?!?
process.max-stack-size syslog=off [ lowerable deny no-signal bytes ]
process.max-core-size syslog=off [ lowerable deny no-signal bytes ]
process.max-file-descriptor syslog=off [ lowerable deny count ]
process.max-address-space syslog=off [ lowerable deny no-signal bytes ]
process.max-sem-nsems syslog=off [ deny count ]
process.max-sem-ops syslog=off [ deny count ]
process.max-msg-qbytes syslog=off [ deny bytes ]
process.max-msg-messages syslog=off [ deny count ]
process.max-port-events syslog=off [ deny count ]
process.max-itimers syslog=off [ deny count ]
process.max-sigqueue-size syslog=off [ lowerable deny count ]
process.max-deferred-posts syslog=off [ lowerable deny count ]
task.max-lwps syslog=off [ count ]
task.max-processes syslog=off [ count ]
task.max-cpu-time syslog=off [ no-deny cpu-time no-obs inf seconds ]
project.cpu-shares syslog=n/a [ no-basic no-deny no-signal no-syslog count ]
project.cpu-cap syslog=n/a [ no-basic deny no-signal inf no-syslog count ]
project.max-lwps syslog=off [ no-basic count ]
project.max-processes syslog=off [ no-basic count ]
project.max-tasks syslog=off [ no-basic count ]
project.max-sem-ids syslog=off [ no-basic deny count ]
project.max-msg-ids syslog=off [ no-basic deny count ]
project.max-shm-ids syslog=off [ no-basic deny count ]
project.max-shm-memory syslog=off [ no-basic deny bytes ]
project.max-mrp-ids syslog=off [ no-basic deny count ]
project.max-port-ids syslog=warning [ no-basic deny count ]
project.max-locked-memory syslog=off [ no-basic deny bytes ]
project.max-adi-metadata-memory syslog=off [ no-basic deny bytes ]
project.max-contracts syslog=off [ no-basic deny count ]
zone.cpu-shares syslog=n/a [ no-basic no-deny no-signal no-syslog count ]
zone.cpu-cap syslog=n/a [ no-basic deny no-signal inf no-syslog count ]
zone.max-lwps syslog=off [ no-basic count ]
zone.max-processes syslog=off [ no-basic count ]
zone.max-msg-ids syslog=off [ no-basic deny count ]
zone.max-sem-ids syslog=off [ no-basic deny count ]
zone.max-shm-ids syslog=off [ no-basic deny count ]
zone.max-shm-memory syslog=off [ no-basic deny bytes ]
zone.max-mrp-ids syslog=off [ no-basic deny count ]
zone.max-locked-memory syslog=off [ no-basic deny bytes ]
zone.max-adi-metadata-memory syslog=off [ no-basic deny bytes ]
zone.max-swap syslog=off [ no-basic deny bytes ]
zone.max-lofi syslog=off [ no-basic deny count ]
#
https://www.solaris.wtf/blog/solaris-resource-controls-oracle-db-project/ 7/7