From: Arvind Kandhare <arvind.kan@wipro.com>
To: linux-kernel@vger.kernel.org
Cc: indou.takao@jp.fujitsu.com, Arvind Kandhare <arvind.kan@wipro.com>
Subject: Changing SEMVMX to a tuneable parameter.
Date: Tue, 27 May 2003 14:12:05 +0530 [thread overview]
Message-ID: <3ED324DD.1050806@wipro.com> (raw)
We are planning to implement a set of Kernel Tunable Parameters and one
of these paramters is semvmx for IPC semaphores.
The existing SEMVMX is hash defined as 32768. We intend to make this a
tunable parameter.
Two alternatives are considered for making this limit tunable as
explained below.
A) Dynamically Tunable using /proc/sys interface.
Proposed implementation is to replace the hash defined SEMVMX in
try_atomic_semop (), semctl_main () and semctl_nolock () by the
configurable value.
This check returns -ERANGE if the current value of semaphore is more
than semvmx limit. *but* there are some logical inconsistancies if
semvmx limit is dynamically reduced below the value of the semaphore
(semval). They are :
1. Releasing the semaphore may fail whereas acquiring has gone
through.This is due to the existing check of semval against the limit in
try_atomic_semop ().
2. Acquiring a semaphore may fail even if the semval > 0:
If the resultant semaphore value (semval) after an acquire stays
above the limit,the check and hence acquire operation fails.
To Overcome these problems following approaches may be considered:
1. Apply the check against the tuned limit only in semctl_main () call.
If semctl and semop can be used interchangably to change the value of
the semaphore this approach will not work.
2. Apply check only when +ve semop is done. So acquiring and
decrementing the value will never fail. This approach solves the second
inconsistency but first one will prevail.
3. Retain similar/same checks against the tuned limit and return an
error to the caller on any inconsistancy (as mentioned in points 1 & 2
above).
A cleaner solution would be:
B) Statically Tunable using boot time parameter:
Most important problem with dynamic tuneability is on a possible
reduction of the limit when the system runs.Most of these could be
avoided if sysadmin is not permitted to modify this limit
dynamically.For this we can make this a static parameter.
A frame work for static tuning of parameters is not directly supported
in Linux.
We propose to make it a boot time tuneable (with boot time command line
interface). This limit can be viewed through /proc/sys interface as a
read only parameter.
Though we loose slightly on flexibility to change this value (possible
only at boot time), we gain on better run-time consistancies with a
static implementation.
Please let us know your suggestions on above alternatives.
Note: We are planning to implement SEMAEM also as a tuneable parameter.
A conclusion on above shall be considered while designing the same also.
Thanks and regards,
Arvind
reply other threads:[~2003-05-27 8:30 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3ED324DD.1050806@wipro.com \
--to=arvind.kan@wipro.com \
--cc=indou.takao@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox