On Jul 23, 2008, at 7:44 PM, SODA Noriyuki wrote:Just because there aren't many apps that you know of doesn't mean there aren't any at all, nor that there is no potential for growth in this area. There are a lot of apps that use state threads, which is essentially a non-preemptive analog to scheduler activations. This is very useful for applications that have to handle a lot of small tasks that have to process work pipelines where each step in the pipeline involves a wait for some event to occur - either another thread to finish doing something, or for I/O to complete. It might seem like there's no benefit to the I/O completion bit, but the fact is that if you have a ton of I/O going on, it's likely that many I/Os will be complete at any given time. There's only a single context switch back from the kernel required to signal all of these completions if you are using something like select or poll, or even a kernel event queue socket. So although you do not reduce your thread- I/O-related context switches to zero in this case, you do cut them roughly in half. And it's actually *easier* to code for than the inside-out event loops you have to write for straight event-driven I/O. It may be that there are no applications that you know of that make use of this capability (and, to be honest, I am not sure that the NetBSD SA implementation itself even supports it). But there is major performance winnage to be had in multiplexing I/O using userland threads, and it certainly *could* be taken advantage of by a state threads implementation. Being a big fan of the whole OLPC/EEPC small computing revival, things that make multithreading really efficient on slow uniprocessor machines are important to me, but I realize that this is not the case for everybody, and I'm not trying to make a recommendation as to what path NetBSD should proceed upon. I'm just sayin', there is serious value in userland threads. They're certainly doing their part to pay my bills. And no, not with Erlang - with plain old C.
| Karl Meyer | PROBLEM: 2.6.23-rc "NETDEV WATCHDOG: eth0: transmit timed out" |
| David Miller | Slow DOWN, please!!! |
| Mark Fasheh | [PATCH 0/39] Ocfs2 updates for 2.6.28 |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
git: | |
| Shawn O. Pearce | Re: pack operation is thrashing my server |
| Pierre Habouzit | git send-email improvements |
| Matthieu Moy | git push to a non-bare repository |
| Shawn O. Pearce | libgit2 - a true git library |
| Elad Efrat | Integrating securelevel and kauth(9) |
| Hubert Feyrer | Re: Compressed vnd handling tested successfully |
| Lord Isildur | Re: Fork bomb protection patch |
| Matt Thomas | Re: FFS journal |
| Will Maier | cron doesn't run commands in /etc/crontab? |
| Richard Stallman | Real men don't attack straw men |
| Harald Dunkel | Re: Packet Filter: how to keep device names on hardware failure? |
| Jordi Espasa Clofent | Resolving dependencies with pkg_add |
| Question on swap as ramdisk partition | 2 hours ago | Linux kernel |
| Netfilter kernel module | 12 hours ago | Linux kernel |
| serial driver xmit problem | 15 hours ago | Linux kernel |
| Why Windows is better than Linux | 15 hours ago | Linux general |
| How can I see my kernel messages in vt12? | 22 hours ago | Linux kernel |
| Grub | 1 day ago | Linux general |
| vmalloc_fault handling in x86_64 | 1 day ago | Linux kernel |
| epoll_wait()ing on epoll FD | 1 day ago | Linux kernel |
| Framebuffer in x86_64 causes problems to multiseat | 1 day ago | Linux kernel |
| Difference between 2.4 and 2.6 regarding thread creation | 2 days ago | Linux general |
