Date: Fri, 11 Nov 2011 19:16:18 -0500 From: Mehmet Erol Sanliturk <m.e.sanliturk@gmail.com> To: Eitan Adler <lists@eitanadler.com> Cc: Daniil Cherednik <dcherednik@masterhost.ru>, hackers@freebsd.org Subject: Re: performance of fork() syscalls Message-ID: <CAOgwaMtNdu09W2pj%2BO-VV60S1Z=eTKjo8-EJS-5Y0YFdJcAhDA@mail.gmail.com> In-Reply-To: <CAF6rxgnNQ=0odmQ1MLgtENrxH9e4Ja0F9D9jQf9r8FomrrGOuw@mail.gmail.com> References: <4EAA8B4B.2090002@masterhost.ru> <CAF6rxgnNQ=0odmQ1MLgtENrxH9e4Ja0F9D9jQf9r8FomrrGOuw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Nov 11, 2011 at 6:09 PM, Eitan Adler <lists@eitanadler.com> wrote: > Sorry for the delayed reply. > > On Fri, Oct 28, 2011 at 7:00 AM, Daniil Cherednik > <dcherednik@masterhost.ru> wrote: > > Hello. > > I have some questions about performance fork syscall. > > Great! > > > Result in FreeBSD (8.2, amd62): > > > > real 0m2.010s > > user 0m0.053s > > sys 0m1.946s > > > > Result in Linux (2.6.32-5-amd64): > > > > real 0m1.210s > > user 0m0.008s > > sys 0m1.200s > > > > > Does this mean performance of fork() in Linux is better? > No. It may be true that Linux's fork is faster than ours, but these > numbers don't show that. > > >From my own (albeit limited) knowledge the numbers you gave above are > statistically meaningless. You have one iteration of the sum of using > time(1) on one machine 10000 times. > This data can only provide the average of a single test case with many > possible causes for the slowness. > > Additionally, time(1) includes time spent in system calls, running > other programs, processing interrupts, etc. "sys" is a lie, as not > every context switch is tracked for performance reasons. Use > getrusage() instead. > > In order to have a meaningful comparison you would need to > a) Run the results under the Student's T test to see if there is a > significant different at p=95%. > b) Do the benchmarks on a machine running nearly nothing else. Run > your tests on Single User Mode, disable all services, remove the > computer from the network, mount the disks read-only, etc. Without > doing this there is too much noise, and it isn't possible to determine > what is causing the slow down (if there is any difference at all, see > part a) > > I understand that the numbers look bad, and that this is a lot of work > to do to see if there is a difference, but benchmarking is a > non-trivial exercise :) > > If I'm wrong here, please correct me. I am always open to learning new > things. > > > > And can you explain why? > > See above ;) > > > -- > Eitan Adler > You may design an experiment like that : Take more than 15 FreeBSD ( the same operating system ) running computers with the same window manager . The computers need not to be similar . Take at least 60 ( to obtain a good Normal distribution approximation with respect to Central Limit Theorem ) Linux computers ( the same kernel , but different Linux distributions ) . Apply the same fork statement and measure the execution time . Apply the Student t test to check equality of means after applying a test of equality of variances . If the fork time means are different statistically , smaller mean fork time is better than the other ( FreeBSD versus Linux ) . If the variances are different , the systems are different . Smaller variance is better than the other . The computers need not to be similar . Thank you very much Mehmet Erol Sanliturk
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOgwaMtNdu09W2pj%2BO-VV60S1Z=eTKjo8-EJS-5Y0YFdJcAhDA>