LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Evgeniy Polyakov <email@example.com> To: Eric Dumazet <firstname.lastname@example.org> Cc: Ulrich Drepper <email@example.com>, lkml <firstname.lastname@example.org>, David Miller <email@example.com>, Ulrich Drepper <firstname.lastname@example.org>, Andrew Morton <email@example.com>, netdev <firstname.lastname@example.org>, Zach Brown <email@example.com>, Christoph Hellwig <firstname.lastname@example.org>, Chase Venters <email@example.com>, Johann Borck <firstname.lastname@example.org> Subject: Re: [take19 1/4] kevent: Core files. Date: Thu, 5 Oct 2006 16:37:15 +0400 [thread overview] Message-ID: <20061005123715.GA7475@2ka.mipt.ru> (raw) In-Reply-To: <email@example.com> On Thu, Oct 05, 2006 at 02:09:31PM +0200, Eric Dumazet (firstname.lastname@example.org) wrote: > On Thursday 05 October 2006 12:55, Evgeniy Polyakov wrote: > > On Thu, Oct 05, 2006 at 12:45:03PM +0200, Eric Dumazet (email@example.com) > > > > > > What is missing or not obvious is : If events are skipped because of > > > overflows, What happens ? Connections stuck forever ? Hope that > > > everything will restore itself ? Is kernel able to SIGNAL this problem to > > > user land ? > > > > Exisitng code does not overflow by design, but can consume a lot of > > memory. I talked about the case, when there will be some limit on > > number of entries put into mapped buffer. > > You still dont answer my question. Please answer the question. > Recap : You have a max of XXXX events queued. A network message come and > kernel want to add another event. It cannot because limit is reached. How the > User Program knows that this problem was hit ? Existing design does not allow overflow. If event was added into the queue (like user requested notification, when new data has arrived), it is guaranteed that there will be place to put that event into mapped buffer when it is ready. If user wants to add anotehr event (for example after accept() user wants to add another socket with request for notification about data arrival into that socket), it can fail though. This limit is introduced only because of mmap buffer. > > It is the same. > > What if reing buffer was grown upto 3 entry, and is now empty, and we > > need to put there 4 entries? Grow it again? > > It can be done, easily, but it looks like a workaround not as solution. > > And it is highly unlikely that in situation, when there are a lot of > > event, ring can be empty. > > I dont speak of re-allocation of ring buffer. I dont care to allocate at > startup a big enough buffer. > > Say you have allocated a ring buffer of 1024*1024 entries. > Then you queue 100 events per second, and dequeue them immediatly. > No need to blindly use all 1024*1024 slots in the ring buffer, doing > index = (index+1)%(1024*1024) But what if they are not dequeued immediateyl? What if rate is high and while one tries to dequeue, system adds another events? > > epoll() does not have mmap. > > Problem is not about how many events can be put into the kernel, but how > > many of them can be put into mapped buffer. > > There is no problem if mmap is turned off. > > So zap mmap() support completely, since it is not usable at all. We wont > discuss on it. Initial implementation did not have it. But I was requested to do it, and it is ready now. No one likes it, but no one provides an alternative implementation. We are stuck. -- Evgeniy Polyakov
next prev parent reply other threads:[~2006-10-05 12:37 UTC|newest] Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <firstname.lastname@example.org> 2006-09-12 8:41 ` [take18 0/4] kevent: Generic event handling mechanism Evgeniy Polyakov 2006-09-12 8:41 ` [take18 1/4] kevent: Core files Evgeniy Polyakov 2006-09-12 8:41 ` [take18 2/4] kevent: poll/select() notifications Evgeniy Polyakov 2006-09-12 8:41 ` [take18 3/4] kevent: Socket notifications Evgeniy Polyakov 2006-09-12 8:41 ` [take18 4/4] kevent: Timer notifications Evgeniy Polyakov 2006-09-20 9:35 ` [take19 0/4] kevent: Generic event handling mechanism Evgeniy Polyakov 2006-09-20 9:35 ` [take19 1/4] kevent: Core files Evgeniy Polyakov 2006-09-20 9:35 ` [take19 2/4] kevent: poll/select() notifications Evgeniy Polyakov 2006-09-20 9:35 ` [take19 3/4] kevent: Socket notifications Evgeniy Polyakov 2006-09-20 9:35 ` [take19 4/4] kevent: Timer notifications Evgeniy Polyakov 2006-10-04 6:34 ` [take19 1/4] kevent: Core files Ulrich Drepper 2006-10-04 6:48 ` Evgeniy Polyakov 2006-10-04 17:57 ` Ulrich Drepper 2006-10-05 8:57 ` Evgeniy Polyakov 2006-10-05 9:56 ` Eric Dumazet 2006-10-05 10:21 ` Evgeniy Polyakov 2006-10-05 10:45 ` Eric Dumazet 2006-10-05 10:55 ` Evgeniy Polyakov 2006-10-05 12:09 ` Eric Dumazet 2006-10-05 12:37 ` Evgeniy Polyakov [this message] 2006-10-15 23:22 ` Ulrich Drepper 2006-10-16 7:33 ` Evgeniy Polyakov 2006-10-16 10:16 ` Ulrich Drepper 2006-10-16 11:23 ` Evgeniy Polyakov 2006-10-17 5:10 ` Johann Borck 2006-10-17 5:59 ` Chase Venters 2006-10-17 10:42 ` Evgeniy Polyakov 2006-10-17 13:12 ` Chase Venters 2006-10-17 13:35 ` Evgeniy Polyakov 2006-10-17 10:39 ` Evgeniy Polyakov 2006-10-17 13:19 ` Eric Dumazet 2006-10-17 13:42 ` Evgeniy Polyakov 2006-10-17 13:52 ` Eric Dumazet 2006-10-17 14:07 ` Evgeniy Polyakov 2006-10-17 14:25 ` Eric Dumazet 2006-10-17 15:09 ` Evgeniy Polyakov 2006-10-17 15:32 ` Eric Dumazet 2006-10-17 16:01 ` Evgeniy Polyakov 2006-10-17 16:26 ` Eric Dumazet 2006-10-17 16:35 ` Evgeniy Polyakov 2006-10-17 16:45 ` Eric Dumazet 2006-10-18 4:10 ` Evgeniy Polyakov 2006-10-18 4:45 ` Eric Dumazet 2006-10-17 15:33 ` Hans Henrik Happe 2006-10-05 14:01 ` Hans Henrik Happe 2006-10-05 14:15 ` Evgeniy Polyakov 2006-10-05 15:07 ` Hans Henrik Happe 2006-09-22 19:22 ` [take19 0/4] kevent: Generic event handling mechanism Andrew Morton 2006-09-23 4:23 ` Evgeniy Polyakov 2006-10-04 6:09 ` Ulrich Drepper 2006-10-04 6:10 ` Ulrich Drepper 2006-10-04 6:27 ` Evgeniy Polyakov 2006-10-04 6:24 ` Evgeniy Polyakov 2006-09-26 15:54 ` Christoph Hellwig 2006-09-27 4:46 ` Evgeniy Polyakov 2006-09-27 15:09 ` Evgeniy Polyakov 2006-10-04 4:50 ` Ulrich Drepper 2006-10-04 4:55 ` Evgeniy Polyakov 2006-10-04 7:33 ` Ulrich Drepper 2006-10-04 7:48 ` Evgeniy Polyakov 2006-10-04 17:20 ` Ulrich Drepper 2006-10-05 9:02 ` Evgeniy Polyakov 2006-10-05 14:45 ` Ulrich Drepper 2006-10-06 8:36 ` Evgeniy Polyakov 2006-10-15 22:43 ` Ulrich Drepper 2006-10-16 7:23 ` Evgeniy Polyakov 2006-10-16 9:59 ` Ulrich Drepper 2006-10-16 10:38 ` Evgeniy Polyakov
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=20061005123715.GA7475@2ka.mipt.ru \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.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: linkBe 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; as well as URLs for NNTP newsgroup(s).