From: Ingo Molnar <mingo@elte.hu>
To: Davide Libenzi <davidel@xmailserver.org>
Cc: Evgeniy Polyakov <johnpol@2ka.mipt.ru>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Arjan van de Ven <arjan@infradead.org>,
Christoph Hellwig <hch@infradead.org>,
Andrew Morton <akpm@zip.com.au>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
Ulrich Drepper <drepper@redhat.com>,
Zach Brown <zach.brown@oracle.com>,
"David S. Miller" <davem@davemloft.net>,
Suparna Bhattacharya <suparna@in.ibm.com>,
Jens Axboe <jens.axboe@oracle.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: threadlets as 'naive pool of threads', epoll, some measurements
Date: Mon, 26 Feb 2007 12:48:58 +0100 [thread overview]
Message-ID: <20070226114858.GA28836@elte.hu> (raw)
In-Reply-To: <20070226104507.GA18470@elte.hu>
yet another performance update - with the fixed 'heaps of stupid
threads' evserver_threadlet.c code attached below i got:
> evserver_epoll: 9400 reqs/sec
> evserver_epoll_threadlet: 9400 reqs/sec
evserver_threadlet: 9000 reqs/sec
so the overhead, instead of the 10x slowdown Evgeniy predicted/feared,
is 4% for this particular, very event-centric workload.
why? because Evgeniy still overlooks what i've mentioned so many times:
that there is lots of inherent 'caching' possible even in this
particular '8000 clients' workload, which even the most stupid threadlet
queueing model is able to take advantage of. The maximum level of
parallelism that i've measured during this test was 161 threads.
Ingo
-----------{ evserver_threadlet.c }--------------->
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/wait.h>
#include <linux/futex.h>
#include <sys/time.h>
#include <sys/types.h>
#include <linux/unistd.h>
#include <netinet/tcp.h>
#include <stdio.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sched.h>
#include <sys/time.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/poll.h>
#include <sys/sendfile.h>
#include <sys/epoll.h>
#define DEBUG 0
#include "syslet.h"
#include "sys.h"
#include "threadlet.h"
struct request {
struct request *next_free;
/*
* The threadlet stack is part of the request structure
* and is thus reused as threadlets complete:
*/
unsigned long threadlet_stack;
/*
* These are all the request-specific parameters:
*/
long sock;
};
//#define ulog(f, a...) fprintf(stderr, f, ##a)
#define ulog(f, a...)
#define ulog_err(f, a...) printf(f ": %s [%d].\n", ##a, strerror(errno), errno)
static long handle_request(void *__req)
{
struct request *req = __req;
int s = req->sock, err, fd;
off_t offset;
int count;
char path[] = "/tmp/index.html";
char buf[4096];
struct timeval tm;
count = 40960;
offset = 0;
err = recv(s, buf, sizeof(buf), 0);
if (err < 0) {
ulog_err("Failed to read data from s=%d", s);
goto err_out_remove;
}
if (err == 0) {
gettimeofday(&tm, NULL);
ulog("%08lu:%06lu: Client exited: fd=%d.\n", tm.tv_sec, tm.tv_usec, s);
goto err_out_remove;
}
fd = open(path, O_RDONLY);
if (fd == -1) {
ulog_err("Failed to open '%s'", path);
err = -1;
goto err_out_remove;
}
#if 0
do {
err = read(fd, buf, sizeof(buf));
if (err <= 0)
break;
err = send(s, buf, err, 0);
if (err <= 0)
break;
} while (1);
#endif
err = sendfile(s, fd, &offset, count);
{
int on = 0;
setsockopt(s, SOL_TCP, TCP_CORK, &on, sizeof(on));
}
close(fd);
if (err < 0) {
ulog_err("Failed send %d bytes: fd=%d.\n", count, s);
goto err_out_remove;
}
close(s);
gettimeofday(&tm, NULL);
ulog("%08lu:%06lu: %d bytes has been sent to client fd=%d.\n", tm.tv_sec, tm.tv_usec, err, s);
return complete_threadlet_fn(req, &async_head);
err_out_remove:
printf("blah\n");
close(s);
return complete_threadlet_fn(req, &async_head);
}
/*
* Freelist to recycle requests:
*/
static struct request *freelist;
/*
* Allocate a request and set up its syslet atoms:
*/
static struct request *alloc_req(void)
{
struct request *req;
/*
* Occasionally we have to refill the new-thread stack
* entry:
*/
if (!async_head.new_thread_stack) {
async_head.new_thread_stack = thread_stack_alloc();
pr("allocated new thread stack: %08lx\n",
async_head.new_thread_stack);
}
if (freelist) {
req = freelist;
pr("reusing req %p, threadlet stack %08lx\n",
req, req->threadlet_stack);
freelist = freelist->next_free;
req->next_free = NULL;
return req;
}
req = calloc(1, sizeof(struct request));
pr("allocated req %p\n", req);
req->threadlet_stack = thread_stack_alloc();
pr("allocated thread stack %08lx\n", req->threadlet_stack);
return req;
}
/*
* Check whether there are any completions queued for user-space
* to finish up:
*/
static unsigned long complete(void)
{
unsigned long completed = 0;
struct request *req;
for (;;) {
req = (void *)completion_ring[async_head.user_ring_idx];
if (!req)
return completed;
completed++;
pr("completed req %p (threadlet stack %08lx)\n",
req, req->threadlet_stack);
req->next_free = freelist;
freelist = req;
/*
* Clear the completion pointer. To make sure the
* kernel never stomps upon still unhandled completions
* in the ring the kernel only writes to a NULL entry,
* so user-space has to clear it explicitly:
*/
completion_ring[async_head.user_ring_idx] = NULL;
async_head.user_ring_idx++;
if (async_head.user_ring_idx == MAX_PENDING)
async_head.user_ring_idx = 0;
}
}
static unsigned int pending_requests;
/*
* Handle a request that has just been submitted (either it has
* already been executed, or we have to account it as pending):
*/
static void handle_submitted_request(struct request *req, long done)
{
unsigned int nr;
if (done) {
/*
* This is the cached case - free the request:
*/
pr("cache completed req %p (threadlet stack %08lx)\n",
req, req->threadlet_stack);
req->next_free = freelist;
freelist = req;
return;
}
/*
* 'cachemiss' case - the syslet is not finished
* yet. We will be notified about its completion
* via the completion ring:
*/
assert(pending_requests < MAX_PENDING-1);
pending_requests++;
pr("req %p is pending. %d reqs pending.\n", req, pending_requests);
/*
* Attempt to complete requests - this is a fast
* check if there's no completions:
*/
nr = complete();
pending_requests -= nr;
/*
* If the ring is full then wait a bit:
*/
while (pending_requests == MAX_PENDING-1) {
pr("sys_async_wait()");
/*
* Wait for 4 events - to batch things a bit:
*/
sys_async_wait(4, async_head.user_ring_idx, &async_head);
nr = complete();
pending_requests -= nr;
pr("after wait: completed %d requests - still pending: %d\n",
nr, pending_requests);
}
}
static void webserver(int l_sock)
{
struct sockaddr addr;
struct request *req;
socklen_t addrlen;
long done;
int sock;
async_head_init();
/*
* We dont use syslets for the first request (or for oversized
* and/or erroneous requests):
*/
for (;;) {
req = alloc_req();
if (!req)
break;
sock = accept(l_sock, &addr, &addrlen);
if (sock < 0)
break;
req->sock = sock;
done = threadlet_exec(handle_request, req,
req->threadlet_stack, &async_head);
handle_submitted_request(req, done);
}
}
static int tcp_listen_socket(int *l_socket)
{
int ret;
int one = 1;
struct sockaddr_in ad;
/*
* Setup for server socket
*/
memset(&ad, 0, sizeof(ad));
ad.sin_family = AF_INET;
ad.sin_addr.s_addr = htonl(INADDR_ANY);
ad.sin_port = htons(2222);
*l_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (*l_socket < 0) {
perror("socket (server)");
return *l_socket;
}
ret = setsockopt(*l_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&one,
sizeof(int));
if (ret < 0) {
perror("setsockopt");
return ret;
}
ret = bind(*l_socket, (struct sockaddr *)&ad, sizeof(ad));
if (ret < 0) {
perror("bind");
return ret;
}
ret = listen(*l_socket, 1000);
if (ret < 0) {
perror("listen");
return ret;
}
return 0;
}
int main(int argc, char *argv[])
{
int ret;
int l_sock;
struct sched_param p = { sched_priority: 0 };
sched_setscheduler(getpid(), 3 /* SCHED_BATCH */, &p);
ret = tcp_listen_socket(&l_sock);
if (ret)
exit(ret);
printf("listening on port 2222\n");
printf("using threadlets\n");
webserver(l_sock);
async_head_exit();
exit(0);
}
next prev parent reply other threads:[~2007-02-26 11:55 UTC|newest]
Thread overview: 337+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-21 21:13 [patch 00/13] Syslets, "Threadlets", generic AIO support, v3 Ingo Molnar
2007-02-21 21:14 ` [patch 01/13] syslets: add async.h include file, kernel-side API definitions Ingo Molnar
2007-02-21 21:15 ` [patch 02/13] syslets: add syslet.h include file, user API/ABI definitions Ingo Molnar
2007-02-21 21:15 ` [patch 03/13] syslets: generic kernel bits Ingo Molnar
2007-02-21 21:15 ` [patch 04/13] syslets: core code Ingo Molnar
2007-02-23 23:08 ` Davide Libenzi
2007-02-24 7:04 ` Ingo Molnar
2007-02-24 21:10 ` Davide Libenzi
2007-02-24 22:08 ` Kyle Moffett
2007-02-24 22:25 ` Davide Libenzi
2007-02-25 7:59 ` Ingo Molnar
2007-02-21 21:15 ` [patch 05/13] syslets: core, documentation Ingo Molnar
2007-02-26 21:32 ` Randy Dunlap
2007-02-27 6:20 ` Ingo Molnar
2007-02-21 21:15 ` [patch 06/13] x86: split FPU state from task state Ingo Molnar
2007-02-21 21:15 ` [patch 07/13] syslets: x86, add create_async_thread() method Ingo Molnar
2007-02-21 21:15 ` [patch 08/13] syslets: x86, add move_user_context() method Ingo Molnar
2007-02-21 23:03 ` Davide Libenzi
2007-02-21 23:20 ` Ingo Molnar
2007-02-22 4:10 ` Davide Libenzi
2007-02-21 21:15 ` [patch 09/13] syslets: x86, mark async unsafe syscalls Ingo Molnar
2007-02-21 21:15 ` [patch 10/13] syslets: x86: enable ASYNC_SUPPORT Ingo Molnar
2007-02-21 21:15 ` [patch 11/13] syslets: x86, wire up the syslet system calls Ingo Molnar
2007-02-21 21:15 ` [patch 12/13] syslets: x86: optimized copy_uatom() Ingo Molnar
2007-02-21 21:16 ` [patch 13/13] syslets: x86: optimized sys_umem_add() Ingo Molnar
2007-02-21 22:46 ` [patch 00/13] Syslets, "Threadlets", generic AIO support, v3 Michael K. Edwards
2007-02-21 22:57 ` Ingo Molnar
2007-02-22 0:53 ` Michael K. Edwards
2007-02-22 1:33 ` Michael K. Edwards
2007-02-22 6:51 ` Ingo Molnar
2007-02-22 8:59 ` Michael K. Edwards
2007-02-22 19:52 ` x86 hardware and transputers (Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3) Oleg Verych
2007-02-22 20:45 ` Michael K. Edwards
2007-02-21 23:03 ` [patch 00/13] Syslets, "Threadlets", generic AIO support, v3 Ingo Molnar
2007-02-21 23:24 ` Ingo Molnar
2007-02-22 0:55 ` Michael K. Edwards
2007-02-21 23:31 ` Ingo Molnar
2007-02-21 23:46 ` Ulrich Drepper
2007-02-22 7:40 ` Ingo Molnar
2007-02-22 11:31 ` Evgeniy Polyakov
2007-02-22 11:52 ` Arjan van de Ven
2007-02-22 12:39 ` Evgeniy Polyakov
2007-02-22 13:41 ` David Miller
2007-02-22 14:31 ` Ingo Molnar
2007-02-22 14:47 ` David Miller
2007-02-22 15:02 ` Evgeniy Polyakov
2007-02-22 15:15 ` Ingo Molnar
2007-02-22 15:29 ` Ingo Molnar
2007-02-22 17:17 ` David Miller
2007-02-23 11:12 ` Ingo Molnar
2007-02-22 20:13 ` Davide Libenzi
2007-02-22 21:30 ` Zach Brown
2007-02-22 14:59 ` Ingo Molnar
2007-02-22 21:42 ` Michael K. Edwards
2007-02-22 14:53 ` Avi Kivity
2007-02-22 12:59 ` Ingo Molnar
2007-02-22 13:32 ` Evgeniy Polyakov
2007-02-22 19:46 ` Davide Libenzi
2007-02-23 12:15 ` Evgeniy Polyakov
2007-02-23 17:43 ` Davide Libenzi
2007-02-23 18:01 ` Evgeniy Polyakov
2007-02-23 20:43 ` Davide Libenzi
2007-02-23 11:51 ` Ingo Molnar
2007-02-23 12:22 ` Evgeniy Polyakov
2007-02-23 12:41 ` Evgeniy Polyakov
2007-02-25 17:45 ` Ingo Molnar
2007-02-25 18:09 ` Evgeniy Polyakov
2007-02-25 19:04 ` Ingo Molnar
2007-02-25 19:42 ` Evgeniy Polyakov
2007-02-25 20:38 ` Ingo Molnar
2007-02-26 12:39 ` Ingo Molnar
2007-02-26 14:05 ` Evgeniy Polyakov
2007-02-26 14:15 ` Ingo Molnar
2007-02-26 16:55 ` Evgeniy Polyakov
2007-02-26 20:35 ` Ingo Molnar
2007-02-26 22:06 ` Bill Huey
2007-02-27 10:09 ` Evgeniy Polyakov
2007-02-27 17:13 ` Pavel Machek
2007-02-27 2:18 ` Davide Libenzi
2007-02-27 10:13 ` Evgeniy Polyakov
2007-02-27 16:01 ` Davide Libenzi
2007-02-27 16:21 ` Evgeniy Polyakov
2007-02-27 16:58 ` Eric Dumazet
2007-02-27 17:06 ` Evgeniy Polyakov
2007-02-27 19:20 ` Davide Libenzi
2007-02-26 19:47 ` Davide Libenzi
2007-02-25 23:14 ` Michael K. Edwards
2007-02-22 14:17 ` Suparna Bhattacharya
2007-02-22 14:36 ` Ingo Molnar
2007-02-23 14:23 ` Suparna Bhattacharya
2007-02-22 21:24 ` Michael K. Edwards
2007-02-23 0:30 ` Alan
2007-02-23 2:47 ` Michael K. Edwards
2007-02-23 8:31 ` Michael K. Edwards
2007-02-23 10:22 ` Ingo Molnar
2007-02-23 12:37 ` Alan
2007-02-23 23:49 ` Michael K. Edwards
2007-02-24 1:08 ` Alan
2007-02-24 0:51 ` Michael K. Edwards
2007-02-24 2:17 ` Michael K. Edwards
2007-02-24 3:25 ` Michael K. Edwards
2007-02-23 12:17 ` Ingo Molnar
2007-02-24 19:52 ` Michael K. Edwards
2007-02-24 21:04 ` Davide Libenzi
2007-02-24 23:01 ` Michael K. Edwards
2007-02-25 22:44 ` Linus Torvalds
2007-02-26 13:11 ` Ingo Molnar
2007-02-26 17:37 ` Evgeniy Polyakov
2007-02-26 18:19 ` Arjan van de Ven
2007-02-26 18:38 ` Evgeniy Polyakov
2007-02-26 18:56 ` Chris Friesen
2007-02-26 19:20 ` Evgeniy Polyakov
2007-02-26 17:28 ` Evgeniy Polyakov
2007-02-26 17:57 ` Linus Torvalds
2007-02-26 18:32 ` Evgeniy Polyakov
2007-02-26 19:22 ` Linus Torvalds
2007-02-26 19:30 ` Evgeniy Polyakov
2007-02-26 20:04 ` Linus Torvalds
2007-02-27 8:09 ` Evgeniy Polyakov
2007-02-26 19:54 ` Ingo Molnar
2007-02-27 10:28 ` Evgeniy Polyakov
2007-02-27 11:52 ` Theodore Tso
2007-02-27 12:11 ` Evgeniy Polyakov
2007-02-27 12:13 ` Ingo Molnar
2007-02-27 12:40 ` Evgeniy Polyakov
2007-02-28 16:14 ` Pavel Machek
2007-03-01 8:18 ` Evgeniy Polyakov
2007-03-01 9:26 ` Pavel Machek
2007-03-01 9:47 ` Evgeniy Polyakov
2007-03-01 9:54 ` Ingo Molnar
2007-03-01 10:59 ` Evgeniy Polyakov
2007-03-01 11:00 ` Ingo Molnar
2007-03-01 11:16 ` Evgeniy Polyakov
2007-03-01 11:27 ` Ingo Molnar
2007-03-01 11:36 ` Evgeniy Polyakov
2007-03-01 11:41 ` Ingo Molnar
2007-03-01 11:47 ` Ingo Molnar
2007-03-01 12:10 ` Evgeniy Polyakov
2007-03-01 12:43 ` Ingo Molnar
2007-03-01 13:01 ` Evgeniy Polyakov
2007-03-01 13:11 ` Ingo Molnar
2007-03-01 13:30 ` Evgeniy Polyakov
2007-03-01 14:19 ` Eric Dumazet
2007-03-01 14:16 ` Ingo Molnar
2007-03-01 14:31 ` Eric Dumazet
2007-03-01 14:27 ` Ingo Molnar
2007-03-01 14:54 ` Evgeniy Polyakov
2007-03-01 15:09 ` Ingo Molnar
2007-03-01 15:36 ` Evgeniy Polyakov
2007-03-02 10:57 ` Ingo Molnar
2007-03-02 11:48 ` Evgeniy Polyakov
2007-03-02 17:32 ` Davide Libenzi
2007-03-02 19:39 ` Ingo Molnar
2007-03-02 20:18 ` Davide Libenzi
2007-03-02 20:29 ` Ingo Molnar
2007-03-02 20:53 ` Davide Libenzi
2007-03-02 21:21 ` Michael K. Edwards
2007-03-02 21:43 ` Nicholas Miell
2007-03-03 0:52 ` Davide Libenzi
2007-03-03 1:36 ` Nicholas Miell
2007-03-03 1:48 ` Benjamin LaHaise
2007-03-03 2:19 ` Davide Libenzi
2007-03-03 7:19 ` Ingo Molnar
2007-03-03 7:20 ` Ingo Molnar
2007-03-03 9:02 ` Davide Libenzi
2007-03-01 19:31 ` Davide Libenzi
2007-03-02 8:10 ` Evgeniy Polyakov
2007-03-02 17:13 ` Davide Libenzi
2007-03-02 19:13 ` Davide Libenzi
2007-03-03 10:06 ` Evgeniy Polyakov
2007-03-03 18:46 ` Davide Libenzi
2007-03-03 20:31 ` Evgeniy Polyakov
2007-03-03 21:57 ` Davide Libenzi
2007-03-03 22:10 ` Davide Libenzi
2007-03-04 16:23 ` Kirk Kuchov
2007-03-04 17:46 ` Kyle Moffett
2007-03-05 5:23 ` Michael K. Edwards
2007-03-04 21:17 ` Davide Libenzi
2007-03-04 22:49 ` Kirk Kuchov
2007-03-04 22:57 ` Davide Libenzi
2007-03-05 4:46 ` Magnus Naeslund(k)
2007-03-06 8:19 ` Pavel Machek
2007-03-07 12:02 ` Kirk Kuchov
2007-03-07 17:26 ` Linus Torvalds
2007-03-07 17:39 ` Ingo Molnar
2007-03-07 18:21 ` Kirk Kuchov
2007-03-07 18:24 ` Jens Axboe
2007-03-07 18:32 ` Evgeniy Polyakov
2007-03-01 12:01 ` Evgeniy Polyakov
2007-03-01 11:14 ` Eric Dumazet
2007-03-01 11:20 ` Evgeniy Polyakov
2007-03-01 11:28 ` Eric Dumazet
2007-03-01 11:47 ` Evgeniy Polyakov
2007-03-01 13:12 ` Eric Dumazet
2007-03-01 14:43 ` Evgeniy Polyakov
2007-03-01 14:47 ` Ingo Molnar
2007-03-01 15:23 ` Evgeniy Polyakov
2007-03-01 15:32 ` Eric Dumazet
2007-03-01 15:41 ` Eric Dumazet
2007-03-01 15:51 ` Evgeniy Polyakov
2007-03-01 15:47 ` Evgeniy Polyakov
2007-03-01 19:47 ` Davide Libenzi
2007-03-01 14:57 ` Evgeniy Polyakov
2007-03-01 12:19 ` Evgeniy Polyakov
2007-03-01 12:34 ` Ingo Molnar
2007-03-01 13:26 ` Evgeniy Polyakov
2007-03-01 13:32 ` Ingo Molnar
2007-03-01 14:24 ` Evgeniy Polyakov
2007-03-01 16:56 ` David Lang
2007-03-01 17:56 ` Evgeniy Polyakov
2007-03-01 18:41 ` David Lang
2007-03-01 19:19 ` Davide Libenzi
2007-03-01 10:11 ` Pavel Machek
2007-03-01 10:19 ` Ingo Molnar
2007-03-01 11:18 ` Evgeniy Polyakov
2007-03-02 10:27 ` Pavel Machek
2007-03-02 10:37 ` Evgeniy Polyakov
2007-03-02 10:56 ` Ingo Molnar
2007-03-02 11:08 ` Evgeniy Polyakov
2007-03-02 17:28 ` Davide Libenzi
2007-03-03 10:27 ` Evgeniy Polyakov
2007-03-01 19:24 ` Johann Borck
2007-03-01 19:37 ` David Lang
2007-03-01 20:34 ` Johann Borck
2007-02-27 12:34 ` Ingo Molnar
2007-02-27 13:14 ` Evgeniy Polyakov
2007-02-27 13:32 ` Avi Kivity
2007-02-28 3:03 ` Michael K. Edwards
2007-02-28 8:02 ` Evgeniy Polyakov
2007-02-28 17:01 ` Michael K. Edwards
2007-03-05 2:16 ` Discussing LKML community [OT from the Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3] Oleg Verych
2007-02-28 16:38 ` [patch 00/13] Syslets, "Threadlets", generic AIO support, v3 Phillip Susi
2007-02-22 19:38 ` Davide Libenzi
2007-02-28 9:45 ` Ingo Molnar
2007-02-28 16:17 ` Davide Libenzi
2007-02-28 16:42 ` Linus Torvalds
2007-02-28 17:26 ` Ingo Molnar
2007-02-28 18:22 ` Davide Libenzi
2007-02-28 18:42 ` Linus Torvalds
2007-02-28 18:50 ` Davide Libenzi
2007-02-28 19:03 ` Chris Friesen
2007-02-28 19:42 ` Davide Libenzi
2007-03-01 8:38 ` Evgeniy Polyakov
2007-03-01 9:28 ` Evgeniy Polyakov
2007-02-28 23:12 ` Ingo Molnar
2007-03-01 1:33 ` Andrea Arcangeli
2007-03-01 9:15 ` Evgeniy Polyakov
2007-03-01 21:27 ` Linus Torvalds
2007-02-28 20:21 ` Ingo Molnar
2007-02-28 21:09 ` Davide Libenzi
2007-02-28 21:23 ` Ingo Molnar
2007-02-28 21:46 ` Davide Libenzi
2007-02-28 22:22 ` Ingo Molnar
2007-02-28 22:47 ` Davide Libenzi
2007-02-22 21:23 ` Zach Brown
2007-02-22 21:32 ` Benjamin LaHaise
2007-02-22 21:44 ` Zach Brown
2007-02-22 1:04 ` Michael K. Edwards
2007-02-22 7:00 ` Ingo Molnar
2007-02-22 9:29 ` Michael K. Edwards
2007-02-22 10:01 ` Suparna Bhattacharya
2007-02-22 11:20 ` Ingo Molnar
2007-02-23 12:52 ` A quick fio test (was Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3) Jens Axboe
2007-02-23 13:55 ` Suparna Bhattacharya
2007-02-23 14:58 ` Ingo Molnar
2007-02-23 15:15 ` Suparna Bhattacharya
2007-02-23 16:25 ` Jens Axboe
2007-02-23 17:13 ` Suparna Bhattacharya
2007-02-23 18:35 ` Jens Axboe
2007-02-26 13:57 ` Jens Axboe
2007-02-26 14:13 ` Suparna Bhattacharya
2007-02-26 14:18 ` Ingo Molnar
2007-02-26 14:45 ` Jens Axboe
2007-02-27 4:33 ` Suparna Bhattacharya
2007-02-27 9:42 ` Jens Axboe
2007-02-27 11:12 ` Evgeniy Polyakov
2007-02-27 11:29 ` Jens Axboe
2007-02-27 12:19 ` Evgeniy Polyakov
2007-02-27 18:45 ` Jens Axboe
2007-02-27 19:08 ` Evgeniy Polyakov
2007-02-27 19:25 ` Jens Axboe
2007-02-27 12:39 ` Suparna Bhattacharya
2007-02-28 8:31 ` Jens Axboe
2007-02-28 8:38 ` Ingo Molnar
2007-02-28 9:07 ` Jens Axboe
2007-02-27 13:54 ` Avi Kivity
2007-02-27 15:25 ` Ingo Molnar
2007-02-27 16:15 ` Avi Kivity
2007-02-27 16:16 ` Ingo Molnar
2007-02-27 16:26 ` Avi Kivity
2007-02-27 18:49 ` Jens Axboe
2007-02-26 21:40 ` Davide Libenzi
2007-02-23 16:59 ` Ingo Molnar
2007-02-23 22:31 ` Joel Becker
2007-02-24 12:18 ` Jens Axboe
2007-02-24 7:41 ` [patchset] Syslets/threadlets, generic AIO support, v4 Ingo Molnar
2007-02-24 18:34 ` [patch 00/13] Syslets, "Threadlets", generic AIO support, v3 Evgeniy Polyakov
2007-02-25 17:23 ` Ingo Molnar
2007-02-25 17:44 ` Evgeniy Polyakov
2007-02-25 17:54 ` Ingo Molnar
2007-02-25 18:21 ` Evgeniy Polyakov
2007-02-25 18:22 ` Ingo Molnar
2007-02-25 18:37 ` Evgeniy Polyakov
2007-02-25 18:34 ` Ingo Molnar
2007-02-25 20:01 ` Frederik Deweerdt
2007-02-25 19:21 ` Ingo Molnar
[not found] ` <20070225194645.GB1353@2ka.mipt.ru>
[not found] ` <20070225195308.GC15681@elte.hu>
[not found] ` <Pine.LNX.4.64.0702251232350.6011@alien.or.mcafeemobile.com>
2007-02-25 21:34 ` threadlets as 'naive pool of threads', epoll, some measurements Ingo Molnar
2007-02-26 10:45 ` Ingo Molnar
2007-02-26 11:48 ` Ingo Molnar [this message]
2007-02-26 12:25 ` Evgeniy Polyakov
2007-02-26 12:50 ` Ingo Molnar
2007-02-26 14:32 ` Evgeniy Polyakov
2007-02-26 20:23 ` Ingo Molnar
2007-02-27 8:16 ` Evgeniy Polyakov
2007-02-27 8:27 ` Ingo Molnar
2007-02-27 10:37 ` Evgeniy Polyakov
2007-02-27 12:15 ` Ingo Molnar
2007-02-27 12:22 ` Evgeniy Polyakov
2007-02-26 21:22 ` Davide Libenzi
2007-02-26 8:16 ` [patch 00/13] Syslets, "Threadlets", generic AIO support, v3 Ingo Molnar
2007-02-26 9:25 ` Evgeniy Polyakov
2007-02-26 9:55 ` Ingo Molnar
2007-02-26 10:31 ` Ingo Molnar
2007-02-26 10:43 ` Evgeniy Polyakov
2007-02-26 20:02 ` Davide Libenzi
2007-02-26 10:33 ` Evgeniy Polyakov
2007-02-26 10:35 ` Ingo Molnar
2007-02-26 10:47 ` Evgeniy Polyakov
2007-02-26 12:51 ` Ingo Molnar
2007-02-26 16:46 ` Evgeniy Polyakov
2007-02-27 6:24 ` Ingo Molnar
2007-02-27 10:41 ` Evgeniy Polyakov
2007-02-27 10:49 ` Ingo Molnar
2007-02-25 18:25 ` Evgeniy Polyakov
2007-02-25 18:24 ` Ingo Molnar
2007-02-25 14:33 ` Threadlet/syslet v4 bug report Evgeniy Polyakov
2007-02-25 15:24 ` 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=20070226114858.GA28836@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@zip.com.au \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=arjan@infradead.org \
--cc=davem@davemloft.net \
--cc=davidel@xmailserver.org \
--cc=drepper@redhat.com \
--cc=hch@infradead.org \
--cc=jens.axboe@oracle.com \
--cc=johnpol@2ka.mipt.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=suparna@in.ibm.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=zach.brown@oracle.com \
/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