On Tue, 2009-11-10 at 21:15 +0100, Mark Kettenis wrote: > > From: Adam Jackson <[email protected]> > > Date: Tue, 10 Nov 2009 15:03:31 -0500 > > > > This one's slightly subtle, the fcntl(F_SETSIG) is required for ->si_fd > > to actually be filled in correctly, at least on Linux. I know this area > > has been sensitive to platform variation in the past, so I'd appreciate > > a second look from Solaris / BSD / Hurd people. > > Alas, OpenBSD doesn't have si_fd. So if you really want to go this > route, you'll need to add an additional configure check for it.
Harsh! > > siginfo_t gives us the file descriptor that raised the signal directly, > > so we don't need to select() for it. This gets evdev event processing > > down to exactly one syscall in the common case. > > Is that an optimizition that's really worth the added complexity? Seems straightforward to me. I just wrote it because it's clearly correct. But hey, why guess when you could measure. This: http://ajax.fedorapeople.org/ten-million-selects.c in a RHEL5.4 32-bit kvm guest (Fedora 12 host, Intel Core 2 Duo at 2.6GHz) runs about this fast: % time ./ten-million-selects ./ten-million-selects 1.35s user 4.28s system 94% cpu 5.981 total So, about 1500 cycles per select call, and if your mouse was absolutely screaming events at you, you'd max out at something like a thousand per second, which'd come to about half a millisecond. If you're a gamer, you might pretend to notice that. But, that's a fairly fast machine; how far down do you want to scale? Assuming identical syscall code paths (which is a bit spurious, I know) on a 300MHz chip that'd be 5ms, which is starting to get into losing frames territory. Other OSes, naturally, have different numbers. In an otherwise identical kvm guest setup, FreeBSD 7.2 gives: $ time ./ten-million-selects 9.15 real 1.27 user 7.31 sys OpenSolaris 0906 gives: $ time ./ten-million-selects real 0m4.319s user 0m2.488s sys 0m1.379s I'd have tried OpenBSD 4.6 but it failed to boot once installed and I couldn't be bothered to figure out if that was a kvm bug or not. - ajax
signature.asc
Description: This is a digitally signed message part
_______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
