info on semaphores

hi friends,

may i know what is semaphores?

how do i find limit and status in solaris 10?

please advise...thanks alot:confused:

Semapahores are shared memory objects that multiple processes update to allow communication. They are used for process control - Interprocess Communication, IPC.

A solaris admin type can let you know about shared memory resources and how to set them and see them.

use ipcs:

ipcs -s

thanks guys.but how do i find " the semaphore values that exhausted and
it recommended values? "

The Solaris 10 Operating System introduces the following new resource controls to replace the old /etc/system tunables:

                              Old             Old       New         New
    Resource control          tunable         default   Max value   default
    ----------------------    -------------   -------   ---------   ----------
    process.max-msg-qbytes    msginfo_msgmnb  4096      ULONG_MAX   65536
    process.max-msg-messages  msginfo_msgtql  40        UINT_MAX    8192
    process.max-sem-ops       seminfo_semopm  10        INT_MAX     512
    process.max-sem-nsems     seminfo_semmsl  25        SHRT_MAX    512
    project.max-shm-memory    shminfo_shmmax  0x800000  UINT64_MAX  1/4 physmem
    project.max-shm-ids       shminfo_shmmni  100       2**24       128
    project.max-msg-ids       msginfo_msgmni  50        2**24       128
    project.max-sem-ids       seminfo_semmni  10        2**24       128

As the names suggest, these rctls are attributes of either processes or projects.

The following tunables are now obsolete in the Solaris 10 Operating System:

    Shared Memory        Semaphores             Message-Queue
    --------------       --------------         ---------------
    shminfo_shmseg       seminfo_semmns         msginfo_msgmax 
    shminfo_shmmin       seminfo_semvmx         msginfo_msgssz 
    shminfo_shmmax*      seminfo_semmnu         msginfo_msgmni*
    shminfo_shmmni*      seminfo_semaem         msginfo_msgtql*
                         seminfo_semume         msginfo_msgmnb*
                         seminfo_semusz         msginfo_msgmap
                         seminfo_semmap         msginfo_msgseg
                         seminfo_semmsl*
                         seminfo_semopm*
                         seminfo_semmni*


   values ending in * are technically obsolete, but if they are present
   in the /etc/system file then at boot the kernel will translate the
   values into global resource controls. 

have a look at: "prctl $$"

small example, i will add your process.max-sem-ops:

root@mp-wst01 # su - pressy 
pressy@mp-wst01 #
pressy@mp-wst01 # prctl -n process.max-sem-ops $$
process: 16510: -ksh
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
process.max-sem-ops
        privileged        512       -   deny                                 -
        system          2,15G     max   deny                                 -
pressy@mp-wst01 # exit
root@mp-wst01 # projmod -a -K "process.max-sem-ops=(priv,1024,deny)" user.pressy
root@mp-wst01 # su - pressy 
pressy@mp-wst01 #
pressy@mp-wst01 # prctl -n process.max-sem-ops $$
process: 16574: -ksh
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
process.max-sem-ops
        privileged      1,02K       -   deny                                 -
        system          2,15G     max   deny                                 -
pressy@mp-wst01 #

should work....

regards PRESSY