Re: linux kernel parameters

  • From: Mikhail Velikikh <mvelikikh@xxxxxxxxx>
  • To: Mladen Gogala <gogala.mladen@xxxxxxxxx>
  • Date: Mon, 15 Mar 2021 12:41:01 +0000

And it does, if you you want SEMMSL and SEMMNI to make sense. With the
setting of 3000 32000 3000 128 instance can create 11 semaphore sets, the
last one containing only 2000 semaphores. Setting maximum number of sets to
3000 doesn't make any sense if you cannot allocate more than 11 of them.

Bringing up the old thread, but it is kind of related to what I am working
on. Oracle does not always allocate semaphores in SEMMSL batches. It
actually uses an algorithm described in: Why Is The OS Allocating Fewer
Semaphores Per Set Even If SEMMSL Is Set To A Higher Value (Doc ID
1670642.1)
As an example, I was getting 156 semaphores per set for an instance with
processes=10000. SEMMSL was 250.
156 is 10000/2/2/2/2/2/2.

That is the reason why we can end up with more than 11 semaphore sets -
Oracle can allocate semaphores in smaller than SEMMSL batches.
Therefore, it does make sense to have SEMMNI more than SEMMNS/SEMMSL in the
discussed example.


On Sat, 13 Feb 2021 at 19:13, Gogala, Mladen <gogala.mladen@xxxxxxxxx>
wrote:

Replies in-line
On 2/13/2021 1:46 PM, dimensional.dba@xxxxxxxxxxx wrote:

You evidently haven’t had your coffee this morning.

Let's keep it polite, shall we?


You specifically stated that “SEMMNS has to be *larger or equal to”*

And it does, if you you want SEMMSL and SEMMNI to make sense. With the
setting of 3000 32000 3000 128 instance can create 11 semaphore sets, the
last one containing only 2000 semaphores. Setting maximum number of sets to
3000 doesn't make any sense if you cannot allocate more than 11 of them.
--
Mladen Gogala
Oracle DBA
Tel: (347) 321-1217
Blog: https://dbwhisperer.wordpress.com

Other related posts: