public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH][RFC] Signal-per-fd for RT signals
@ 2001-09-15  1:33 Dan Kegel
  2001-09-15  5:04 ` Vitaly Luban
  0 siblings, 1 reply; 11+ messages in thread
From: Dan Kegel @ 2001-09-15  1:33 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org, Vitaly Luban

Vitaly Luban <vitaly@luban.org> wrote:
> Attached patch is an implementation of "signal-per-fd" 
> enhancement to kernel RT signal mechanism, AFAIK first 
> proposed by A. Chandra and D. Mosberger ...
> which should dramatically increase linux based network 
> servers scalability. 
> [ Patch lives at http://www.luban.org/GPL/gpl.html ]

I have been using variations on this patch while trying
to benchmark an FTP server at a load of 10000 simultaneous
sessions (at 1 kilobyte/sec each), and noticed a few issues:

1. If a SIGINT comes in, t->files may be null, so where
   send_signal() says
         if( (info->si_fd < files->max_fds) &&
   it should say
         if( files && (info->si_fd < files->max_fds) &&
   otherwise there will be a null pointer oops.

2. If a signal has come in, and a reference to it is left
   in filp->f_infoptr, and for some reason the signal is
   removed from the queue without going through collect_signal(),
   a stale pointer may be left in filp->f_infoptr, which could
   cause a wild pointer oops.  There are two places this can happen:
   a. if send_signal() returns -EAGAIN because we're out of memory or queue space
   b. if user sets the signal handler to SIG_IGN, triggering a call 
   to rm_sig_from_queue()

I have seen the above problems in the field in my version of the patch, 
and written and tested fixes for them.  (Ah, the joys of ksymoops.)

3. Any reference to t->files probably needs to be protected by
   acquiring t->files->file_lock, else when the file table is
   expanded, any filp in use will become stale.

I have seen this problem in my version of the patch, but have not yet tackled it.
Is there any good guidance out there for how the various spinlocks
interact?  Documentation/spinlocks.txt and Documentation/DocBook/kernel-locking.tmpl 
are the best I've seen so far, but they don't get into specifics about, say,
files->file_lock and task->sigmask_lock.  Guess I'll just have to read the source.

Also, while I have verified that the patch significantly reduces 
reliable signal queue usage, I have not yet been able to measure
a reduction in CPU time in a real app.  Presumably the benefits
are in response time, which I am not set up to measure yet.

This is my first excursion into the kernel, so please be gentle.
- Dan

^ permalink raw reply	[flat|nested] 11+ messages in thread
* [PATCH][RFC] Signal-per-fd for RT signals
@ 2001-05-19  2:04 Vitaly Luban
  2001-05-19 21:38 ` Gerold Jury
  0 siblings, 1 reply; 11+ messages in thread
From: Vitaly Luban @ 2001-05-19  2:04 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org, linux-net

[-- Attachment #1: Type: text/plain, Size: 1222 bytes --]

Hi,

I'm sorry, the previous message slipped out w/o subj.

Attached patch is an implementation of "signal-per-fd"
enhancement to kernel RT signal mechanism, AFAIK first
proposed by A. Chandra and D. Mosberger :

http://www.hpl.hp.com/techreports/2000/HPL-2000-174.html

which should dramatically increase linux based network
servers scalability.

Patch is made against 2.4.4 tree.

This patch allows to set signal-per-fd mode per each
file descriptor by introducing new fcntls "F_SETAUXFL"
and "F_GETAUXFL" with one possible argument "O_ONESIGFD"
to F_SETAUXFL defined.

When set, no additional siginfo will be queued for an
RT signal, generated by event on file descriptor, while
there is already one queued, though event report field
in already queued struct siginfo - "si_band" is updated.

I'd also like to hear an opinion on the signal filtering
capability. I.e, it's relatively easy to filter signals
upon an interest mask, supplied by the same F_SETAUXFL in
the form of POLL_... This will bring functionality of RT
signals event notification on the level with 'select' or
'poll' one, while more efficient and scalable. If there's
an interest in such a feature, I'd be eager to publish a
patch.

Thanks,
    Vitaly.

[-- Attachment #2: one-sig-perfd-2.4.4.patch.gz --]
[-- Type: application/x-gzip, Size: 15758 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2001-09-22 23:30 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-09-15  1:33 [PATCH][RFC] Signal-per-fd for RT signals Dan Kegel
2001-09-15  5:04 ` Vitaly Luban
2001-09-15  5:39   ` Dan Kegel
2001-09-15 12:59     ` spin_lock_bh() usage check, please (was: [PATCH][RFC] Signal-per-fd for RT signals) Dan Kegel
2001-09-15 21:20       ` Vitaly Luban
2001-09-15 22:07         ` Dan Kegel
2001-09-16  2:35           ` [PATCH][RFC] Signal-per-fd for RT signals Vitaly Luban
2001-09-16  3:51             ` Dan Kegel
2001-09-22 23:30             ` [PATCH][RFC] Signal-per-fd for RT signals; write_lock_bh(file_lock)? Dan Kegel
  -- strict thread matches above, loose matches on Subject: below --
2001-05-19  2:04 [PATCH][RFC] Signal-per-fd for RT signals Vitaly Luban
2001-05-19 21:38 ` Gerold Jury

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox