From owner-freebsd-hackers@FreeBSD.ORG Fri Nov 11 23:38:00 2011 Return-Path: Delivered-To: hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A0946106564A for ; Fri, 11 Nov 2011 23:38:00 +0000 (UTC) (envelope-from lists@eitanadler.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 3CF918FC17 for ; Fri, 11 Nov 2011 23:37:59 +0000 (UTC) Received: by wyf23 with SMTP id 23so2951672wyf.13 for ; Fri, 11 Nov 2011 15:37:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eitanadler.com; s=0xdeadbeef; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=QDfWA7hUByE4K4yMUkJTdbbxd6H3H4X4dkH8sYQLryY=; b=AwopgmZAKfr5EWMMqshJW+dWcqsR67uuclhmUNDBzMMIShPlADojnxcZTtfxaDif9t l3wPzJP8PKhk9wWIl8c9h383Zw5d96qH8A9KvkzIiU0vN+95hRFa3ViKAD/3NlvWT8IR qo/Krt+jYuga6aDIijR1tH3wk+/+zJw2cCPDI= Received: by 10.227.205.130 with SMTP id fq2mr9649660wbb.17.1321053025108; Fri, 11 Nov 2011 15:10:25 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.21.133 with HTTP; Fri, 11 Nov 2011 15:09:54 -0800 (PST) In-Reply-To: <4EAA8B4B.2090002@masterhost.ru> References: <4EAA8B4B.2090002@masterhost.ru> From: Eitan Adler Date: Fri, 11 Nov 2011 18:09:54 -0500 Message-ID: To: Daniil Cherednik Content-Type: text/plain; charset=UTF-8 Cc: hackers@freebsd.org Subject: Re: performance of fork() syscalls X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Nov 2011 23:38:00 -0000 Sorry for the delayed reply. On Fri, Oct 28, 2011 at 7:00 AM, Daniil Cherednik 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