Hello! On Thu, Jun 02, 2016 at 11:19:26PM +0800, Sepherosa Ziehau wrote:
> On Thu, Jun 2, 2016 at 11:05 PM, Maxim Dounin <[email protected]> wrote: > > Hello! > > > > On Thu, Jun 02, 2016 at 08:48:19PM +0800, Sepherosa Ziehau wrote: > > > >> On DragonflyBSD only clock_gettime(*_FAST) avoids system call and time > >> counter read cost (kinda like Linux VDSO). This gives some > >> improvement for performance and reduces latency. > > > > At least FreeBSD also has clock_gettime(*_FAST), from where it was > > taken to DragonFly BSD. And Linux 2.6.32+ has > > clock_gettime(*_COARSE). > > > > We do have plans to use monotonic versions, see > > https://trac.nginx.org/nginx/ticket/189. > > Yeah, if we can use clock_gettime(REAL_FAST/REAL_COARSE) that would be great > :) > > Should I submit another patch for it? I think the clockid can be put > into the config file. > > I patched the Dfly specifically, mainly because its gettimeofday is > still a syscall and read time counter. While both FreeBSD-current and > Linux (which seems to have a sysctl to enable) has VDSO > gettimeofday(). I don't really think we really should introduce clock_gettime(CLOCK_REALTIME*) instead of gettimeofday(). It's not really needed as gettimeofday() isn't called often. Though we can consider doing this as a part of clock_gettime(CLOCK_MONOTONIC) work as we are going to add appropriate configure tests anyway. > >> My testing setup consists two clients and one nginx (recent head code) > >> server, two clients connected to the nginx server through two 10Ge > >> (82599). 15K concurrent connections from each client; client runs a > >> modified version of wrk and each connection only carries one request > >> for an 1KB file. > >> > >> Performance goes from 183Kreqs/s to 184Kreqs/s (admittedly pretty > >> minor). Average latency reduces 2ms (98ms -> 96ms). Latency stdev > >> reduces 6ms (198ms -> 192ms). > > > > This doesn't look statistically significant. Have you tried > > something like ministat(1) to test the results? > > I have wrk --latency data: > > Before: > Latency Distribution > 50% 26.03ms > 75% 73.95ms > 90% 285.33ms > 99% 1.04s > > After: > Latency Distribution > 50% 22.63ms > 75% 77.42ms > 90% 278.79ms > 99% 1.01s > > Admittedly, kinda like acceptable measurement errors :P. Doesn't look like a statistically significant difference for me, at least in the absense of a margin of error. If you think there is a difference, please try ministat, as already suggested. Not sure it's available on DragonFly BSD, but you can easily grab it here: https://svnweb.freebsd.org/base/head/usr.bin/ministat/ -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-devel mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-devel
