)
id 1OXOYf-0000iR-AP
for submit@debbugs.gnu.org; Fri, 09 Jul 2010 21:08:45 -0400
Received: from mx10.gnu.org ([199.232.76.166])
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OXOYc-0000iK-TE
for submit@debbugs.gnu.org; Fri, 09 Jul 2010 21:08:43 -0400
Received: from lists.gnu.org ([199.232.76.165]:49413)
by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from
) id 1OXOYZ-0003lg-0E
for submit@debbugs.gnu.org; Fri, 09 Jul 2010 21:08:39 -0400
Received: from [140.186.70.92] (port=57143 helo=eggs.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1OXOYX-0000Wc-Hi
for bug-coreutils@gnu.org; Fri, 09 Jul 2010 21:08:38 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org
X-Spam-Level:
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00
autolearn=unavailable version=3.3.1
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69)
(envelope-from
) id 1OXOYW-0003qp-5r
for bug-coreutils@gnu.org; Fri, 09 Jul 2010 21:08:37 -0400
Received: from mail1.slb.deg.dub.stisp.net ([84.203.253.98]:1061)
by eggs.gnu.org with smtp (Exim 4.69)
(envelope-from
) id 1OXOYV-0003qL-SU
for bug-coreutils@gnu.org; Fri, 09 Jul 2010 21:08:36 -0400
Received: (qmail 45007 invoked from network); 10 Jul 2010 01:08:33 -0000
Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218)
by mail1.slb.deg.dub.stisp.net with SMTP; 10 Jul 2010 01:08:33 -0000
Message-ID: <4C37C7D9.2030909@draigBrady.com>
Date: Sat, 10 Jul 2010 02:07:37 +0100
From: =?ISO-8859-1?Q?P=E1draig_Brady?=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3
MIME-Version: 1.0
To: Chen Guo
Subject: Re: [PATCH] sort: add --threads option to parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com>
<4B94CAE0.6000106@draigBrady.com>
<535984.88146.qm@web180006.mail.gq1.yahoo.com>
In-Reply-To: <535984.88146.qm@web180006.mail.gq1.yahoo.com>
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: FreeBSD 4.6-4.9
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
seldom 2.4 (older, 4)
X-Spam-Score: -3.5 (---)
X-Debbugs-Envelope-To: submit
Cc: Paul Eggert , Bug Coreutils ,
Glen Lenker , Mike Nichols ,
Gene Auyeung , Chris Dickens
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -4.8 (----)
On 08/03/10 10:39, Chen Guo wrote:
> Hi Padraig,
>
>> You previously mentioned a thread bug with memcoll. Is that worked around?
>
> That happened when more than one instance of memcoll is called on the same
> line at once, since memcoll replaces the eolchar with '\0'. Under our approach,
> the same line shouldn't ever be compared at the same time, so we're fine.
> On top of that, Professor Eggert suggested NUL delimiting all lines as they're
> read in, so memcoll doesn't have to; hence the patch to gnulib, which introduces
> xmemcoll_nul and memcoll_nul, for when input is known to be NUL delimited, thus
> no replacement of the eolchar is needed, making memcoll threadsafe.
Note the current xmemcoll0() in gnulib requires the length
_including_ the terminating NUL to be passed, whereas one
usually does not include the terminating char in the length
passed to xmemcoll(). I accordingly updated the lengths
passed to xmemcoll0() by your latest patch.
However there are still writes done to the source text
in the keycompare() function. So I'm thinking of dropping
the whole xmemcoll0() thing altogether assuming your
statement above is correct, that a particular line will
not be used at the same time by multiple threads.
I did try to copy the text to the stack before comparing,
but that introduced a significant overhead noted below.
Your patch is still performing well on a single core machine:
----------- before ---------------------
$ time ./src/sort < nums.list >/dev/null
real 0m8.644s
user 0m8.307s
sys 0m0.292s
$ time ./src/sort -g < nums.list >/dev/null
real 0m11.046s
user 0m10.652s
sys 0m0.295s
$ time ./src/sort -n < nums.list >/dev/null
real 0m4.909s
user 0m4.567s
sys 0m0.298s
$ time LANG=C ./src/sort < nums.list >/dev/null
real 0m1.959s
user 0m1.657s
sys 0m0.285s
------------ after ---------------------
$ time ./src/sort < nums.list >/dev/null
real 0m8.686s
user 0m8.300s
sys 0m0.232s
$ time ./src/sort -g < nums.list >/dev/null
real 0m10.196s
user 0m9.850s
sys 0m0.221s
$ time ./src/sort -n < nums.list >/dev/null
real 0m2.958s
user 0m2.664s
sys 0m0.221s
$ time LANG=C ./src/sort < nums.list >/dev/null
real 0m1.985s
user 0m1.750s
sys 0m0.217s
After copying the text to the stack as mentioned above
there is a significant performance drop:
$ time ./src/sort -n < nums.list >/dev/null
real 0m4.086s
user 0m3.848s
sys 0m0.218s
cheers,
Pádraig.
From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 09 22:54:44 2010
Received: (at submit) by debbugs.gnu.org; 10 Jul 2010 02:54:44 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OXQDD-0001OL-NQ
for submit@debbugs.gnu.org; Fri, 09 Jul 2010 22:54:44 -0400
Received: from mail.gnu.org ([199.232.76.166] helo=mx10.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OXQDB-0001OG-3d
for submit@debbugs.gnu.org; Fri, 09 Jul 2010 22:54:41 -0400
Received: from lists.gnu.org ([199.232.76.165]:39317)
by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from ) id 1OXQD7-0004nO-Lo
for submit@debbugs.gnu.org; Fri, 09 Jul 2010 22:54:37 -0400
Received: from [140.186.70.92] (port=55389 helo=eggs.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1OXQD6-000704-8o
for bug-coreutils@gnu.org; Fri, 09 Jul 2010 22:54:37 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org
X-Spam-Level:
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_RP_MATCHES_RCVD
autolearn=unavailable version=3.3.1
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69)
(envelope-from ) id 1OXQD5-0005WR-4Z
for bug-coreutils@gnu.org; Fri, 09 Jul 2010 22:54:36 -0400
Received: from kiwi.cs.ucla.edu ([131.179.128.19]:52653)
by eggs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OXQD4-0005W5-PV
for bug-coreutils@gnu.org; Fri, 09 Jul 2010 22:54:35 -0400
Received: from [131.179.64.200] (Penguin.CS.UCLA.EDU [131.179.64.200])
by kiwi.cs.ucla.edu (8.13.8+Sun/8.13.8/UCLACS-6.0) with ESMTP id
o6A2sQoF002843; Fri, 9 Jul 2010 19:54:27 -0700 (PDT)
Message-ID: <4C37E0E2.3060205@cs.ucla.edu>
Date: Fri, 09 Jul 2010 19:54:26 -0700
From: Paul Eggert
Organization: UCLA Computer Science Department
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.10) Gecko/20100527 Thunderbird/3.0.5
MIME-Version: 1.0
To: =?ISO-8859-1?Q?P=E1draig_Brady?=
Subject: Re: [PATCH] sort: add --threads option to parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com>
<4B94CAE0.6000106@draigBrady.com>
<535984.88146.qm@web180006.mail.gq1.yahoo.com>
<4C37C7D9.2030909@draigBrady.com>
In-Reply-To: <4C37C7D9.2030909@draigBrady.com>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by kiwi.cs.ucla.edu id
o6A2sQoF002843
X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta)
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
seldom 2.4 (older, 4)
X-Spam-Score: -4.8 (----)
X-Debbugs-Envelope-To: submit
Cc: Bug Coreutils , Chen Guo ,
Glen Lenker , Mike Nichols ,
Gene Auyeung , Chris Dickens
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -4.8 (----)
On 07/09/10 18:07, P=E1draig Brady wrote:
> Chen Guo wrote:
>> That happened when more than one instance of memcoll is called on the =
same
>> line at once, since memcoll replaces the eolchar with '\0'. Under our =
approach,
>> the same line shouldn't ever be compared at the same time, so we're fi=
ne.
Ah, sorry, I wasn't aware of that.
> I'm thinking of dropping
> the whole xmemcoll0() thing altogether assuming your
> statement above is correct, that a particular line will
> not be used at the same time by multiple threads.
Yes, that makes sense. We can revert that change from gnulib, since it
makes gnulib bigger unnecessarily.
From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 10 05:30:16 2010
Received: (at submit) by debbugs.gnu.org; 10 Jul 2010 09:30:16 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OXWO0-0003vH-Il
for submit@debbugs.gnu.org; Sat, 10 Jul 2010 05:30:16 -0400
Received: from mail.gnu.org ([199.232.76.166] helo=mx10.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OXWNx-0003vC-7J
for submit@debbugs.gnu.org; Sat, 10 Jul 2010 05:30:14 -0400
Received: from lists.gnu.org ([199.232.76.165]:47815)
by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from
) id 1OXWNt-00010x-AB
for submit@debbugs.gnu.org; Sat, 10 Jul 2010 05:30:09 -0400
Received: from [140.186.70.92] (port=53408 helo=eggs.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1OXWNp-00032U-LJ
for bug-coreutils@gnu.org; Sat, 10 Jul 2010 05:30:07 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org
X-Spam-Level:
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00
autolearn=unavailable version=3.3.1
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69)
(envelope-from
) id 1OXWNn-00053f-UJ
for bug-coreutils@gnu.org; Sat, 10 Jul 2010 05:30:05 -0400
Received: from mail1.slb.deg.dub.stisp.net ([84.203.253.98]:13450)
by eggs.gnu.org with smtp (Exim 4.69)
(envelope-from
) id 1OXWNn-00053F-LS
for bug-coreutils@gnu.org; Sat, 10 Jul 2010 05:30:03 -0400
Received: (qmail 96387 invoked from network); 10 Jul 2010 09:30:01 -0000
Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218)
by mail1.slb.deg.dub.stisp.net with SMTP; 10 Jul 2010 09:30:01 -0000
Message-ID: <4C383D5F.4090703@draigBrady.com>
Date: Sat, 10 Jul 2010 10:29:03 +0100
From: =?ISO-8859-1?Q?P=E1draig_Brady?=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3
MIME-Version: 1.0
To: Chen Guo
Subject: Re: [PATCH] sort: add --threads option to parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com> <4B94CAE0.6000106@draigBrady.com> <535984.88146.qm@web180006.mail.gq1.yahoo.com> <4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu>
In-Reply-To:
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: FreeBSD 4.6-4.9
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
seldom 2.4 (older, 4)
X-Spam-Score: -4.8 (----)
X-Debbugs-Envelope-To: submit
Cc: Paul Eggert , Bug Coreutils ,
Glen Lenker , Mike Nichols ,
Gene Auyeung , Chris Dickens
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -4.8 (----)
On 10/07/10 05:23, Chen Guo wrote:
> 2010/7/9 Paul Eggert :
>> On 07/09/10 18:07, Pádraig Brady wrote:
>>> Chen Guo wrote:
>>>> That happened when more than one instance of memcoll is called on the same
>>>> line at once, since memcoll replaces the eolchar with '\0'. Under our approach,
>>>> the same line shouldn't ever be compared at the same time, so we're fine.
>>
>> Ah, sorry, I wasn't aware of that.
>>
>>> I'm thinking of dropping
>>> the whole xmemcoll0() thing altogether assuming your
>>> statement above is correct, that a particular line will
>>> not be used at the same time by multiple threads.
>>
>> Yes, that makes sense. We can revert that change from gnulib, since it
>> makes gnulib bigger unnecessarily.
>>
>
> Actually, the '\0' saves about 5% off runtime last I checked. This is because
> EACH TIME sort compares two lines memcoll would replace the last byte. If we
> set them all to NUL anyway at the start, memcoll_nul wouldn't need to do that
> replacement for each compare. When we output, we'd simply put the \n back.
>
> I could be wrong though, this is going off memory from 4-5 months ago. But 5%
> is about what I remember, when sorting 1M lines on 8 cores.
Well for the whole line comparison where it works it's 2.9% faster
(or 2.3% adding in the NUL checks to xmemcoll0).
Also xmemcoll0() is probably generally useful since it's a readonly function.
So I'll leave it and fix up the keycompare() calls to it
(while documenting that keycompare() needs to work on a particular
line in line one thread.
thanks,
Pádraig.
From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 10 12:29:03 2010
Received: (at submit) by debbugs.gnu.org; 10 Jul 2010 16:29:04 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OXcvH-0007VL-0o
for submit@debbugs.gnu.org; Sat, 10 Jul 2010 12:29:03 -0400
Received: from mx10.gnu.org ([199.232.76.166])
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OXRbW-0001vV-OS
for submit@debbugs.gnu.org; Sat, 10 Jul 2010 00:23:55 -0400
Received: from lists.gnu.org ([199.232.76.165]:39306)
by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from ) id 1OXRbT-0005gB-8u
for submit@debbugs.gnu.org; Sat, 10 Jul 2010 00:23:51 -0400
Received: from [140.186.70.92] (port=52869 helo=eggs.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1OXRbR-0001Zb-DY
for bug-coreutils@gnu.org; Sat, 10 Jul 2010 00:23:50 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org
X-Spam-Level:
X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,
FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,
T_DKIM_INVALID autolearn=no version=3.3.1
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69)
(envelope-from ) id 1OXRbQ-0005sK-3s
for bug-coreutils@gnu.org; Sat, 10 Jul 2010 00:23:49 -0400
Received: from mail-pv0-f169.google.com ([74.125.83.169]:33082)
by eggs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OXRbP-0005sG-T2
for bug-coreutils@gnu.org; Sat, 10 Jul 2010 00:23:48 -0400
Received: by pvc30 with SMTP id 30so2510326pvc.0
for ; Fri, 09 Jul 2010 21:23:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:received:in-reply-to
:references:date:message-id:subject:from:to:cc:content-type
:content-transfer-encoding;
bh=AocMZLpSpYOpiyP9DgmzJn42whcvPIoDCOSGecskCMI=;
b=grt7ovdCLMC3bnsyh6O6/GfoWXmrM4qoIwj+yrRITjp6kPmUEcm2Vl+kxL/hu5zOC9
b0rERZ9QOhTrXBq40ktf/jX672mvaeFq8X060xmtNrqGhAQyEmKHu1vlfXVUlLB123L7
NjS4t4PO3CrsSAskN2H+1oEJgZsDVihmxUtlI=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:cc:content-type:content-transfer-encoding;
b=HRMEZg+CctXiLfjn8GciyoqJbgZmzLCveTdTc9khskP0WfuLK/MBs9B9LexpoaHsLY
G11OIz+qNnx2KD7njpkO62w5TI3UQod5qNQb7WUoFkXwDsDDRqH4B5PhC6XdAJ2D4gzP
12LBOBo2WVS0Mv9m1c8QvoFMtr7f/qVULpV4k=
MIME-Version: 1.0
Received: by 10.142.170.2 with SMTP id s2mr12850973wfe.243.1278735826309; Fri,
09 Jul 2010 21:23:46 -0700 (PDT)
Received: by 10.142.192.12 with HTTP; Fri, 9 Jul 2010 21:23:46 -0700 (PDT)
In-Reply-To: <4C37E0E2.3060205@cs.ucla.edu>
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com>
<4B94CAE0.6000106@draigBrady.com>
<535984.88146.qm@web180006.mail.gq1.yahoo.com>
<4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu>
Date: Fri, 9 Jul 2010 21:23:46 -0700
Message-ID:
Subject: Re: [PATCH] sort: add --threads option to parallelize internal sort.
From: Chen Guo
To: Paul Eggert
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2)
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
seldom 2.4 (older, 4)
X-Spam-Score: -5.9 (-----)
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Sat, 10 Jul 2010 12:29:01 -0400
Cc: Bug Coreutils , Glen Lenker ,
Mike Nichols , Gene Auyeung ,
Chris Dickens ,
=?ISO-8859-1?Q?P=E1draig_Brady?=
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -5.9 (-----)
2010/7/9 Paul Eggert :
> On 07/09/10 18:07, P=E1draig Brady wrote:
>> Chen Guo wrote:
>>> That happened when more than one instance of memcoll is called on the s=
ame
>>> line at once, since memcoll replaces the eolchar with '\0'. Under our a=
pproach,
>>> the same line shouldn't ever be compared at the same time, so we're fin=
e.
>
> Ah, sorry, I wasn't aware of that.
>
>> I'm thinking of dropping
>> the whole xmemcoll0() thing altogether assuming your
>> statement above is correct, that a particular line will
>> not be used at the same time by multiple threads.
>
> Yes, that makes sense. =A0We can revert that change from gnulib, since it
> makes gnulib bigger unnecessarily.
>
Actually, the '\0' saves about 5% off runtime last I checked. This is becau=
se
EACH TIME sort compares two lines memcoll would replace the last byte. If w=
e
set them all to NUL anyway at the start, memcoll_nul wouldn't need to do th=
at
replacement for each compare. When we output, we'd simply put the \n back.
I could be wrong though, this is going off memory from 4-5 months ago. But =
5%
is about what I remember, when sorting 1M lines on 8 cores.
From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 12 21:00:22 2010
Received: (at 6600-done) by debbugs.gnu.org; 13 Jul 2010 01:00:22 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OYTrC-00058O-7I
for submit@debbugs.gnu.org; Mon, 12 Jul 2010 21:00:22 -0400
Received: from mail1.slb.deg.dub.stisp.net ([84.203.253.98])
by debbugs.gnu.org with smtp (Exim 4.69)
(envelope-from ) id 1OYTr9-00058J-MX
for 6600-done@debbugs.gnu.org; Mon, 12 Jul 2010 21:00:20 -0400
Received: (qmail 15223 invoked from network); 13 Jul 2010 01:00:22 -0000
Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218)
by mail1.slb.deg.dub.stisp.net with SMTP; 13 Jul 2010 01:00:22 -0000
Message-ID: <4C3BBA60.9020201@draigBrady.com>
Date: Tue, 13 Jul 2010 01:59:12 +0100
From: =?ISO-8859-1?Q?P=E1draig_Brady?=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3
MIME-Version: 1.0
To: 6600-done@debbugs.gnu.org
Subject: Re: bug#6600: [PATCH] sort: add --threads option to
parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com> <4B94CAE0.6000106@draigBrady.com> <535984.88146.qm@web180006.mail.gq1.yahoo.com> <4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu>
<4C383D5F.4090703@draigBrady.com>
In-Reply-To: <4C383D5F.4090703@draigBrady.com>
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.8 (--)
X-Debbugs-Envelope-To: 6600-done
Cc: Paul Eggert , Chen Guo ,
Glen Lenker , Mike Nichols ,
Gene Auyeung , Chris Dickens
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -2.8 (--)
I've finally applied the patch.
http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=commit;h=9face836
I made a few comment tweaks and added
some dependencies for the heap module.
I also removed the xmemcoll0() calls
which are separate to this concurrent functionality.
I will add those back in Chen's name after updating to
the latest gnulib.
Thanks everyone for their work on this!
Pádraig.
From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 13 05:14:52 2010
Received: (at 6600) by debbugs.gnu.org; 13 Jul 2010 09:14:52 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OYbZj-0008O9-UR
for submit@debbugs.gnu.org; Tue, 13 Jul 2010 05:14:52 -0400
Received: from mail1.slb.deg.dub.stisp.net ([84.203.253.98])
by debbugs.gnu.org with smtp (Exim 4.69)
(envelope-from ) id 1OYbZh-0008O4-05
for 6600@debbugs.gnu.org; Tue, 13 Jul 2010 05:14:50 -0400
Received: (qmail 78612 invoked from network); 13 Jul 2010 09:14:53 -0000
Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218)
by mail1.slb.deg.dub.stisp.net with SMTP; 13 Jul 2010 09:14:53 -0000
Message-ID: <4C3C2E44.9050009@draigBrady.com>
Date: Tue, 13 Jul 2010 10:13:40 +0100
From: =?ISO-8859-1?Q?P=E1draig_Brady?=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3
MIME-Version: 1.0
To: 6600@debbugs.gnu.org
Subject: Re: bug#6600: [PATCH] sort: add --threads option
to parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com> <4B94CAE0.6000106@draigBrady.com> <535984.88146.qm@web180006.mail.gq1.yahoo.com> <4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu> <4C383D5F.4090703@draigBrady.com>
<4C3BBA60.9020201@draigBrady.com>
In-Reply-To: <4C3BBA60.9020201@draigBrady.com>
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.8 (--)
X-Debbugs-Envelope-To: 6600
Cc: Gene Auyeung , Paul Eggert ,
Chen Guo
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -2.8 (--)
Here's a small cleanup I missed.
Alternatively one could make heap() return NULL rather than aborting,
but since it already used xmalloc, I'm tending to this..
commit cec33eb226df63f406f7eb70cd46d960ee02a060
Author: Pádraig Brady
Date: Tue Jul 13 08:23:52 2010 +0100
maint: heap.c: simplify heap_alloc
* gl/lib/heap.c (heap_alloc): Use the fact that the xalloc
routines will not return NULL. Also remove the redundant
temporary variables.
diff --git a/gl/lib/heap.c b/gl/lib/heap.c
index a37224f..f148434 100644
--- a/gl/lib/heap.c
+++ b/gl/lib/heap.c
@@ -36,22 +36,12 @@ static void heapify_up (void **, size_t,
struct heap *
heap_alloc (int (*compare)(const void *, const void *), size_t n_reserve)
{
- struct heap *heap;
- void *xmalloc_ret = xmalloc (sizeof *heap);
- heap = (struct heap *) xmalloc_ret;
- if (!heap)
- return NULL;
+ struct heap *heap = xmalloc (sizeof *heap);
- if (n_reserve <= 0)
+ if (n_reserve == 0)
n_reserve = 1;
- xmalloc_ret = xmalloc (n_reserve * sizeof *(heap->array));
- heap->array = (void **) xmalloc_ret;
- if (!heap->array)
- {
- free (heap);
- return NULL;
- }
+ heap->array = xmalloc (n_reserve * sizeof *(heap->array));
heap->array[0] = NULL;
heap->capacity = n_reserve;
@@ -84,8 +74,7 @@ heap_insert (struct heap *heap, void *item)
if (heap->capacity - 1 <= heap->count)
{
size_t new_size = (2 + heap->count) * sizeof *(heap->array);
- void *realloc_ret = xrealloc (heap->array, new_size);
- heap->array = (void **) realloc_ret;
+ heap->array = xrealloc (heap->array, new_size);
From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 13 10:35:29 2010
Received: (at 6600) by debbugs.gnu.org; 13 Jul 2010 14:35:29 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OYga0-0002qv-QY
for submit@debbugs.gnu.org; Tue, 13 Jul 2010 10:35:29 -0400
Received: from smtp1-g21.free.fr ([212.27.42.1])
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OYgZy-0002ql-6V
for 6600@debbugs.gnu.org; Tue, 13 Jul 2010 10:35:27 -0400
Received: from mx.meyering.net (unknown [82.230.74.64])
by smtp1-g21.free.fr (Postfix) with ESMTP id 5D78A94012A;
Tue, 13 Jul 2010 16:35:26 +0200 (CEST)
Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000)
id E677EDEBA; Tue, 13 Jul 2010 16:35:24 +0200 (CEST)
From: Jim Meyering
To: =?utf-8?Q?P=C3=A1draig?= Brady
Subject: Re: bug#6600: [PATCH] sort: add --threads option
to parallelize internal sort.
In-Reply-To: <4C3C2E44.9050009@draigBrady.com> (=?utf-8?Q?=22P=C3=A1draig?=
Brady"'s message of "Tue, 13 Jul 2010 10:13:40 +0100")
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com>
<4B94CAE0.6000106@draigBrady.com>
<535984.88146.qm@web180006.mail.gq1.yahoo.com>
<4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu>
<4C383D5F.4090703@draigBrady.com> <4C3BBA60.9020201@draigBrady.com>
<4C3C2E44.9050009@draigBrady.com>
Date: Tue, 13 Jul 2010 16:35:24 +0200
Message-ID: <87hbk34fgz.fsf@meyering.net>
Lines: 83
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -3.3 (---)
X-Debbugs-Envelope-To: 6600
Cc: Gene Auyeung , 6600@debbugs.gnu.org,
Paul Eggert , Chen Guo
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -3.3 (---)
P=C3=A1draig Brady wrote:
> Here's a small cleanup I missed.
> Alternatively one could make heap() return NULL rather than aborting,
> but since it already used xmalloc, I'm tending to this..
>
> commit cec33eb226df63f406f7eb70cd46d960ee02a060
> Author: P=C3=A1draig Brady
> Date: Tue Jul 13 08:23:52 2010 +0100
>
> maint: heap.c: simplify heap_alloc
>
> * gl/lib/heap.c (heap_alloc): Use the fact that the xalloc
> routines will not return NULL. Also remove the redundant
> temporary variables.
>
> diff --git a/gl/lib/heap.c b/gl/lib/heap.c
> index a37224f..f148434 100644
> --- a/gl/lib/heap.c
> +++ b/gl/lib/heap.c
> @@ -36,22 +36,12 @@ static void heapify_up (void **, size_t,
> struct heap *
> heap_alloc (int (*compare)(const void *, const void *), size_t n_reserve)
> {
> - struct heap *heap;
> - void *xmalloc_ret =3D xmalloc (sizeof *heap);
> - heap =3D (struct heap *) xmalloc_ret;
> - if (!heap)
> - return NULL;
> + struct heap *heap =3D xmalloc (sizeof *heap);
>
> - if (n_reserve <=3D 0)
> + if (n_reserve =3D=3D 0)
> n_reserve =3D 1;
>
> - xmalloc_ret =3D xmalloc (n_reserve * sizeof *(heap->array));
> - heap->array =3D (void **) xmalloc_ret;
> - if (!heap->array)
> - {
> - free (heap);
> - return NULL;
> - }
> + heap->array =3D xmalloc (n_reserve * sizeof *(heap->array));
>
> heap->array[0] =3D NULL;
> heap->capacity =3D n_reserve;
> @@ -84,8 +74,7 @@ heap_insert (struct heap *heap, void *item)
> if (heap->capacity - 1 <=3D heap->count)
> {
> size_t new_size =3D (2 + heap->count) * sizeof *(heap->array);
> - void *realloc_ret =3D xrealloc (heap->array, new_size);
> - heap->array =3D (void **) realloc_ret;
> + heap->array =3D xrealloc (heap->array, new_size);
Thanks.
That looks good. Please push.
I noticed that heap_insert's reallocation was awkward and inefficient.
Using x2nrealloc rather than xrealloc makes the code
cleaner as well as more efficient in the face of a growing
heap, and also handles integer overflow.
diff --git a/gl/lib/heap.c b/gl/lib/heap.c
index a37224f..12a7767 100644
--- a/gl/lib/heap.c
+++ b/gl/lib/heap.c
@@ -82,15 +82,8 @@ int
heap_insert (struct heap *heap, void *item)
{
if (heap->capacity - 1 <=3D heap->count)
- {
- size_t new_size =3D (2 + heap->count) * sizeof *(heap->array);
- void *realloc_ret =3D xrealloc (heap->array, new_size);
- heap->array =3D (void **) realloc_ret;
- heap->capacity =3D (2 + heap->count);
-
- if (!heap->array)
- return -1;
- }
+ heap->array =3D x2nrealloc (heap->array, &heap->capacity,
+ sizeof *(heap->array));
heap->array[++heap->count] =3D item;
heapify_up (heap->array, heap->count, heap->compare);
From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 13 11:10:20 2010
Received: (at 6600) by debbugs.gnu.org; 13 Jul 2010 15:10:20 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OYh7k-00036V-BH
for submit@debbugs.gnu.org; Tue, 13 Jul 2010 11:10:20 -0400
Received: from mail1.slb.deg.dub.stisp.net ([84.203.253.98])
by debbugs.gnu.org with smtp (Exim 4.69)
(envelope-from ) id 1OYh7h-00036O-Dk
for 6600@debbugs.gnu.org; Tue, 13 Jul 2010 11:10:18 -0400
Received: (qmail 50470 invoked from network); 13 Jul 2010 15:10:22 -0000
Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218)
by mail1.slb.deg.dub.stisp.net with SMTP; 13 Jul 2010 15:10:22 -0000
Message-ID: <4C3C8194.9020008@draigBrady.com>
Date: Tue, 13 Jul 2010 16:09:08 +0100
From: =?UTF-8?B?UMOhZHJhaWcgQnJhZHk=?=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3
MIME-Version: 1.0
To: Jim Meyering
Subject: Re: bug#6600: [PATCH] sort: add --threads option
to parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com> <4B94CAE0.6000106@draigBrady.com> <535984.88146.qm@web180006.mail.gq1.yahoo.com> <4C37C7D9.2030909@draigBrady.com>
<4C37E0E2.3060205@cs.ucla.edu> <4C383D5F.4090703@draigBrady.com>
<4C3BBA60.9020201@draigBrady.com> <4C3C2E44.9050009@draigBrady.com>
<87hbk34fgz.fsf@meyering.net>
In-Reply-To: <87hbk34fgz.fsf@meyering.net>
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.8 (--)
X-Debbugs-Envelope-To: 6600
Cc: Gene Auyeung , 6600@debbugs.gnu.org,
Paul Eggert , Chen Guo
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -2.8 (--)
On 13/07/10 15:35, Jim Meyering wrote:
> I noticed that heap_insert's reallocation was awkward and inefficient.
> Using x2nrealloc rather than xrealloc makes the code
> cleaner as well as more efficient in the face of a growing
> heap, and also handles integer overflow.
>
> diff --git a/gl/lib/heap.c b/gl/lib/heap.c
> index a37224f..12a7767 100644
> --- a/gl/lib/heap.c
> +++ b/gl/lib/heap.c
> @@ -82,15 +82,8 @@ int
> heap_insert (struct heap *heap, void *item)
> {
> if (heap->capacity - 1 <= heap->count)
> - {
> - size_t new_size = (2 + heap->count) * sizeof *(heap->array);
> - void *realloc_ret = xrealloc (heap->array, new_size);
> - heap->array = (void **) realloc_ret;
> - heap->capacity = (2 + heap->count);
> -
> - if (!heap->array)
> - return -1;
> - }
> + heap->array = x2nrealloc (heap->array, &heap->capacity,
> + sizeof *(heap->array));
>
> heap->array[++heap->count] = item;
> heapify_up (heap->array, heap->count, heap->compare);
Much cleaner and increases with n *= 1.5 rather than n += 2
Testing here shows no change in performance.
Do you want me to roll that into my patch?
cheers,
Pádraig.
From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 13 11:16:24 2010
Received: (at 6600) by debbugs.gnu.org; 13 Jul 2010 15:16:24 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OYhDc-00039J-2F
for submit@debbugs.gnu.org; Tue, 13 Jul 2010 11:16:24 -0400
Received: from smtp1-g21.free.fr ([212.27.42.1])
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OYhDY-00039E-US
for 6600@debbugs.gnu.org; Tue, 13 Jul 2010 11:16:22 -0400
Received: from mx.meyering.net (unknown [82.230.74.64])
by smtp1-g21.free.fr (Postfix) with ESMTP id 5A9AC940051;
Tue, 13 Jul 2010 17:16:21 +0200 (CEST)
Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000)
id 2EE87E12C; Tue, 13 Jul 2010 17:16:20 +0200 (CEST)
From: Jim Meyering
To: =?utf-8?Q?P=C3=A1draig?= Brady
Subject: Re: bug#6600: [PATCH] sort: add --threads option
to parallelize internal sort.
In-Reply-To: <4C3C8194.9020008@draigBrady.com> (=?utf-8?Q?=22P=C3=A1draig?=
Brady"'s message of "Tue, 13 Jul 2010 16:09:08 +0100")
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com>
<4B94CAE0.6000106@draigBrady.com>
<535984.88146.qm@web180006.mail.gq1.yahoo.com>
<4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu>
<4C383D5F.4090703@draigBrady.com> <4C3BBA60.9020201@draigBrady.com>
<4C3C2E44.9050009@draigBrady.com> <87hbk34fgz.fsf@meyering.net>
<4C3C8194.9020008@draigBrady.com>
Date: Tue, 13 Jul 2010 17:16:20 +0200
Message-ID: <87aapv4dkr.fsf@meyering.net>
Lines: 38
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -3.3 (---)
X-Debbugs-Envelope-To: 6600
Cc: Gene Auyeung , 6600@debbugs.gnu.org,
Paul Eggert , Chen Guo
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -3.3 (---)
P=C3=A1draig Brady wrote:
> On 13/07/10 15:35, Jim Meyering wrote:
>> I noticed that heap_insert's reallocation was awkward and inefficient.
>> Using x2nrealloc rather than xrealloc makes the code
>> cleaner as well as more efficient in the face of a growing
>> heap, and also handles integer overflow.
>>
>> diff --git a/gl/lib/heap.c b/gl/lib/heap.c
>> index a37224f..12a7767 100644
>> --- a/gl/lib/heap.c
>> +++ b/gl/lib/heap.c
>> @@ -82,15 +82,8 @@ int
>> heap_insert (struct heap *heap, void *item)
>> {
>> if (heap->capacity - 1 <=3D heap->count)
>> - {
>> - size_t new_size =3D (2 + heap->count) * sizeof *(heap->array);
>> - void *realloc_ret =3D xrealloc (heap->array, new_size);
>> - heap->array =3D (void **) realloc_ret;
>> - heap->capacity =3D (2 + heap->count);
>> -
>> - if (!heap->array)
>> - return -1;
>> - }
>> + heap->array =3D x2nrealloc (heap->array, &heap->capacity,
>> + sizeof *(heap->array));
>>
>> heap->array[++heap->count] =3D item;
>> heapify_up (heap->array, heap->count, heap->compare);
>
> Much cleaner and increases with n *=3D 1.5 rather than n +=3D 2
> Testing here shows no change in performance.
Thanks for the perf. testing.
> Do you want me to roll that into my patch?
Sure, thanks.
From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 13 23:14:31 2010
Received: (at 6600) by debbugs.gnu.org; 14 Jul 2010 03:14:31 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OYsQY-0003Vr-JQ
for submit@debbugs.gnu.org; Tue, 13 Jul 2010 23:14:30 -0400
Received: from mail-px0-f172.google.com ([209.85.212.172])
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OYsQX-0003VS-2k
for 6600@debbugs.gnu.org; Tue, 13 Jul 2010 23:14:29 -0400
Received: by pxi20 with SMTP id 20so2477168pxi.3
for <6600@debbugs.gnu.org>; Tue, 13 Jul 2010 20:14:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:received:in-reply-to
:references:date:message-id:subject:from:to:cc:content-type
:content-transfer-encoding;
bh=QVLioVOqoNqbfQlvIbykD4xqldO3cuNQyyrqNNnqA68=;
b=AbhGZI0O8z6S9ln84eZ/0TzwONiw0zOywmJDXM8+6aJIguFC1VY2oFOJvKXGeN6nuu
QWLkz6JDVKtzou9RGGYpuuaAXs+GudwKiEMG7EyK1FhXnLegipFSPpU5l5PXroTeV//Z
2e4Y9vh6+GuTlFyRNc5bk1wTUP1pSX5JSprOA=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:cc:content-type:content-transfer-encoding;
b=EauTYLKEORJLSdjb0htvbpPHrxXRCfdEJiQrYtYUyVFS8JFQ6M8eT9KtgHWjsXpu6F
DZr+qwpCIfxVwWPUS3O9xUUgF8JfBl/EuPReghH9D9c1i2OHRhMLHA1nqAQGFgzDpIhr
6qOcXBRpjK5Ke1Gznm2rd2OdYVOkJIkOefY0U=
MIME-Version: 1.0
Received: by 10.142.134.13 with SMTP id h13mr20461638wfd.119.1279077275341;
Tue, 13 Jul 2010 20:14:35 -0700 (PDT)
Received: by 10.142.241.3 with HTTP; Tue, 13 Jul 2010 20:14:35 -0700 (PDT)
In-Reply-To: <87aapv4dkr.fsf@meyering.net>
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com>
<4B94CAE0.6000106@draigBrady.com>
<535984.88146.qm@web180006.mail.gq1.yahoo.com>
<4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu>
<4C383D5F.4090703@draigBrady.com> <4C3BBA60.9020201@draigBrady.com>
<4C3C2E44.9050009@draigBrady.com> <87hbk34fgz.fsf@meyering.net>
<4C3C8194.9020008@draigBrady.com> <87aapv4dkr.fsf@meyering.net>
Date: Tue, 13 Jul 2010 20:14:35 -0700
Message-ID:
Subject: Re: bug#6600: [PATCH] sort: add --threads option to parallelize
internal sort.
From: Chen Guo
To: Jim Meyering
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.6 (--)
X-Debbugs-Envelope-To: 6600
Cc: Gene Auyeung , 6600@debbugs.gnu.org,
Paul Eggert ,
=?ISO-8859-1?Q?P=E1draig_Brady?=
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -2.6 (--)
Thanks a lot for all the hard work reviewing and revising this, P=E1draig.
From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 14 20:08:31 2010
Received: (at 6600) by debbugs.gnu.org; 15 Jul 2010 00:08:31 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OZC07-00041Y-4d
for submit@debbugs.gnu.org; Wed, 14 Jul 2010 20:08:31 -0400
Received: from mail1.slb.deg.dub.stisp.net ([84.203.253.98])
by debbugs.gnu.org with smtp (Exim 4.69)
(envelope-from ) id 1OZC04-00041P-Cv
for 6600@debbugs.gnu.org; Wed, 14 Jul 2010 20:08:29 -0400
Received: (qmail 76922 invoked from network); 15 Jul 2010 00:08:36 -0000
Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218)
by mail1.slb.deg.dub.stisp.net with SMTP; 15 Jul 2010 00:08:36 -0000
Message-ID: <4C3E5134.3040700@draigBrady.com>
Date: Thu, 15 Jul 2010 01:07:16 +0100
From: =?ISO-8859-1?Q?P=E1draig_Brady?=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3
MIME-Version: 1.0
To: 6600@debbugs.gnu.org
Subject: Re: bug#6600: [PATCH] sort: add --threads option
to parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com> <4B94CAE0.6000106@draigBrady.com> <535984.88146.qm@web180006.mail.gq1.yahoo.com> <4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu> <4C383D5F.4090703@draigBrady.com>
<4C3BBA60.9020201@draigBrady.com>
In-Reply-To: <4C3BBA60.9020201@draigBrady.com>
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.7 (--)
X-Debbugs-Envelope-To: 6600
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -2.7 (--)
On 13/07/10 01:59, Pádraig Brady wrote:
> I've finally applied the patch.
> http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=commit;h=9face836
>
> I made a few comment tweaks and added
> some dependencies for the heap module.
>
> I also removed the xmemcoll0() calls
> which are separate to this concurrent functionality.
> I will add those back in Chen's name after updating to
> the latest gnulib.
>
> Thanks everyone for their work on this!
>
> Pádraig.
>
>
>
>
Here's the xmemcoll0 follow up:
From: Chen Guo
Date: Wed, 14 Jul 2010 07:41:05 +0100
Subject: [PATCH] sort: speed up default full line sorting
Don't write NUL after the comparison buffers on each compare,
which increases performance by about 3% for short lines
on a pentium-m with gcc-4.4.1
* src/sort.c: (fillbuf): Delimit input items with NUL.
(write_bytes): Restore the item delimiter char which was
replaced with NUL in fillbuf().
---
src/sort.c | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/src/sort.c b/src/sort.c
index 5ea1b34..45cb78f 100644
--- a/src/sort.c
+++ b/src/sort.c
@@ -1743,13 +1743,17 @@ fillbuf (struct buffer *buf, FILE *fp, char const *file)
if (buf->buf == ptrlim)
return false;
if (ptrlim[-1] != eol)
- *ptrlim++ = eol;
+ *ptrlim++ = '\0';
}
}
/* Find and record each line in the just-read input. */
while ((p = memchr (ptr, eol, ptrlim - ptr)))
{
+ /* Delimit the line with NUL. This eliminates the need to
+ temporarily replace the last byte with NUL when calling
+ xmemcoll(), which increases performance. */
+ *p = '\0';
ptr = p + 1;
line--;
line->text = line_start;
@@ -2642,7 +2646,13 @@ compare (const struct line *a, const struct line *b, bool show_debug)
else if (blen == 0)
diff = 1;
else if (hard_LC_COLLATE)
- diff = xmemcoll (a->text, alen, b->text, blen);
+ {
+ /* Note xmemcoll0 is a performance enhancement as
+ it will not unconditionally write '\0' after the
+ passed in buffers, which was seen to give around
+ a 3% increase in performance for short lines. */
+ diff = xmemcoll0 (a->text, alen + 1, b->text, blen + 1);
+ }
else if (! (diff = memcmp (a->text, b->text, MIN (alen, blen))))
diff = alen < blen ? -1 : alen != blen;
@@ -2652,9 +2662,11 @@ compare (const struct line *a, const struct line *b, bool show_debug)
static void
write_bytes (struct line const *line, FILE *fp, char const *output_file)
{
- char const *buf = line->text;
+ char *buf = line->text;
size_t n_bytes = line->length;
+ *(buf + n_bytes - 1) = eolchar;
+
/* Convert TABs to '>' and \0 to \n when -z specified. */
if (debug && fp == stdout)
{
--
1.6.2.5
From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 15 07:12:38 2010
Received: (at 6600) by debbugs.gnu.org; 15 Jul 2010 11:12:38 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OZMMn-0000cy-01
for submit@debbugs.gnu.org; Thu, 15 Jul 2010 07:12:38 -0400
Received: from mail1.slb.deg.dub.stisp.net ([84.203.253.98])
by debbugs.gnu.org with smtp (Exim 4.69)
(envelope-from ) id 1OZMMl-0000cq-Ho
for 6600@debbugs.gnu.org; Thu, 15 Jul 2010 07:12:36 -0400
Received: (qmail 65705 invoked from network); 15 Jul 2010 11:12:45 -0000
Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218)
by mail1.slb.deg.dub.stisp.net with SMTP; 15 Jul 2010 11:12:45 -0000
Message-ID: <4C3EECDB.9030907@draigBrady.com>
Date: Thu, 15 Jul 2010 12:11:23 +0100
From: =?ISO-8859-1?Q?P=E1draig_Brady?=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3
MIME-Version: 1.0
To: 6600@debbugs.gnu.org, =?ISO-8859-1?Q?Ludovic_Court=E8s?=
Subject: Re: bug#6600: [PATCH] sort: add --threads
option to parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com> <4B94CAE0.6000106@draigBrady.com> <535984.88146.qm@web180006.mail.gq1.yahoo.com> <4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu> <4C383D5F.4090703@draigBrady.com> <4C3BBA60.9020201@draigBrady.com>
<4C3E5134.3040700@draigBrady.com>
In-Reply-To: <4C3E5134.3040700@draigBrady.com>
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.7 (--)
X-Debbugs-Envelope-To: 6600
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -2.7 (--)
On 15/07/10 01:07, Pádraig Brady wrote:
> On 13/07/10 01:59, Pádraig Brady wrote:
>> I've finally applied the patch.
>> http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=commit;h=9face836
>>
>> I made a few comment tweaks and added
>> some dependencies for the heap module.
>>
>> I also removed the xmemcoll0() calls
>> which are separate to this concurrent functionality.
>> I will add those back in Chen's name after updating to
>> the latest gnulib.
>>
>> Thanks everyone for their work on this!
>>
>> Pádraig.
>
> Here's the xmemcoll0 follow up:
And a follow up fix to that which
fixes 2 test failures noticed on our integration server:
http://hydra.nixos.org/build/486508
commit aadc67dfdb47f28bb8d1fa5e0fe0f52e2a8c51bf
Author: Pádraig Brady
Date: Thu Jul 15 12:06:04 2010 +0100
sort: fix a bug when sorting unterminated lines
* src/sort.c (fillbuf): The previous commit incorrectly
terminated the buffer when the last line of input
didn't contain a terminating character.
diff --git a/src/sort.c b/src/sort.c
index 45cb78f..7d31878 100644
--- a/src/sort.c
+++ b/src/sort.c
@@ -1743,7 +1743,7 @@ fillbuf (struct buffer *buf, FILE *fp, char const *file)
if (buf->buf == ptrlim)
return false;
if (ptrlim[-1] != eol)
- *ptrlim++ = '\0';
+ *ptrlim++ = eol;
}
}
From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 15 10:08:28 2010
Received: (at 6600) by debbugs.gnu.org; 15 Jul 2010 14:08:28 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1OZP6y-0002To-2k
for submit@debbugs.gnu.org; Thu, 15 Jul 2010 10:08:28 -0400
Received: from smtp1-g21.free.fr ([212.27.42.1])
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1OZP6u-0002Td-PJ
for 6600@debbugs.gnu.org; Thu, 15 Jul 2010 10:08:26 -0400
Received: from mx.meyering.net (unknown [82.230.74.64])
by smtp1-g21.free.fr (Postfix) with ESMTP id A7D4894012E;
Thu, 15 Jul 2010 16:08:30 +0200 (CEST)
Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000)
id 47850E267; Thu, 15 Jul 2010 16:08:29 +0200 (CEST)
From: Jim Meyering
To: =?utf-8?Q?P=C3=A1draig?= Brady
Subject: Re: bug#6600: [PATCH] sort: add --threads option to parallelize
internal sort.
In-Reply-To: <4C3EECDB.9030907@draigBrady.com> (=?utf-8?Q?=22P=C3=A1draig?=
Brady"'s message of "Thu, 15 Jul 2010 12:11:23 +0100")
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com>
<4B94CAE0.6000106@draigBrady.com>
<535984.88146.qm@web180006.mail.gq1.yahoo.com>
<4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu>
<4C383D5F.4090703@draigBrady.com> <4C3BBA60.9020201@draigBrady.com>
<4C3E5134.3040700@draigBrady.com> <4C3EECDB.9030907@draigBrady.com>
Date: Thu, 15 Jul 2010 16:08:29 +0200
Message-ID: <87oce8u9b6.fsf_-_@meyering.net>
Lines: 51
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -3.3 (---)
X-Debbugs-Envelope-To: 6600
Cc: 6600@debbugs.gnu.org, Ludovic =?utf-8?Q?Court=C3=A8s?=
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -3.3 (---)
P=C3=A1draig Brady wrote:
> On 15/07/10 01:07, P=C3=A1draig Brady wrote:
>> On 13/07/10 01:59, P=C3=A1draig Brady wrote:
>>> I've finally applied the patch.
>>> http://git.savannah.gnu.org/gitweb/?p=3Dcoreutils.git;a=3Dcommit;h=3D9f=
ace836
>>>
>>> I made a few comment tweaks and added
>>> some dependencies for the heap module.
>>>
>>> I also removed the xmemcoll0() calls
>>> which are separate to this concurrent functionality.
>>> I will add those back in Chen's name after updating to
>>> the latest gnulib.
>>>
>>> Thanks everyone for their work on this!
>>>
>>> P=C3=A1draig.
>>
>> Here's the xmemcoll0 follow up:
>
> And a follow up fix to that which
> fixes 2 test failures noticed on our integration server:
> http://hydra.nixos.org/build/486508
>
> commit aadc67dfdb47f28bb8d1fa5e0fe0f52e2a8c51bf
> Author: P=C3=A1draig Brady
> Date: Thu Jul 15 12:06:04 2010 +0100
>
> sort: fix a bug when sorting unterminated lines
>
> * src/sort.c (fillbuf): The previous commit incorrectly
> terminated the buffer when the last line of input
> didn't contain a terminating character.
>
> diff --git a/src/sort.c b/src/sort.c
> index 45cb78f..7d31878 100644
> --- a/src/sort.c
> +++ b/src/sort.c
> @@ -1743,7 +1743,7 @@ fillbuf (struct buffer *buf, FILE *fp, char const *=
file)
> if (buf->buf =3D=3D ptrlim)
> return false;
> if (ptrlim[-1] !=3D eol)
> - *ptrlim++ =3D '\0';
> + *ptrlim++ =3D eol;
Thanks.
FYI, here's a simple demo of that bug:
$ printf a |src/sort
src/sort: memory exhausted
From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 21 04:13:27 2010
Received: (at 6600) by debbugs.gnu.org; 21 Jul 2010 08:13:28 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1ObUQg-0001QZ-PX
for submit@debbugs.gnu.org; Wed, 21 Jul 2010 04:13:27 -0400
Received: from mail-pv0-f172.google.com ([74.125.83.172])
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from ) id 1ObUQf-0001QU-DG
for 6600@debbugs.gnu.org; Wed, 21 Jul 2010 04:13:25 -0400
Received: by pvd12 with SMTP id 12so2590403pvd.3
for <6600@debbugs.gnu.org>; Wed, 21 Jul 2010 01:13:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:received:in-reply-to
:references:date:message-id:subject:from:to:content-type;
bh=74TACI6lPpY2ym3KSrkY7zBWztoghKjmizLn97t+OC8=;
b=d5/e/vPaZICl9DnLilPZci1gwT2KxjhGFsTmU7DlifHvXDXgWr4i4s0S0wngyAzik6
5x4fFfsqvzP0H0Jdls+udDQg5DKtohGELn1oEk44AEdWDy8NZRMEd0OVQSgC1TfgIm6G
Q0sgsCduV3jh2OtaU5Dk5x21z/w8rtpC5YakU=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:content-type;
b=wkAggI1WM3VD7/tZLVU8UBY49/OGCw7hi9AV5wvG5AiAK6YidLQSC5G1mXxENTWvUc
0gg/sFnTGwzB5ZGtkci1GzWLywMcMOLUEje3y4Wd5qXAqskF7Ee8srCaIOMYH86TwKS6
Sc8lbX6pb8+6Licp+plmoTHkY7HUtIZcA0z7c=
MIME-Version: 1.0
Received: by 10.142.157.8 with SMTP id f8mr11575685wfe.85.1279700030841; Wed,
21 Jul 2010 01:13:50 -0700 (PDT)
Received: by 10.142.216.2 with HTTP; Wed, 21 Jul 2010 01:13:50 -0700 (PDT)
In-Reply-To: <87oce8u9b6.fsf_-_@meyering.net>
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com>
<4B94CAE0.6000106@draigBrady.com>
<535984.88146.qm@web180006.mail.gq1.yahoo.com>
<4C37C7D9.2030909@draigBrady.com> <4C37E0E2.3060205@cs.ucla.edu>
<4C383D5F.4090703@draigBrady.com> <4C3BBA60.9020201@draigBrady.com>
<4C3E5134.3040700@draigBrady.com> <4C3EECDB.9030907@draigBrady.com>
<87oce8u9b6.fsf_-_@meyering.net>
Date: Wed, 21 Jul 2010 01:13:50 -0700
Message-ID:
Subject: Re: bug#6600: [PATCH] sort: add --threads option to parallelize
internal sort.
From: Chen Guo
To: 6600@debbugs.gnu.org
Content-Type: text/plain; charset=ISO-8859-1
X-Spam-Score: -3.0 (---)
X-Debbugs-Envelope-To: 6600
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -3.3 (---)
Hi all,
So the gcc compile farm just got a 24 core donation
from AMD (2x12 at 1.5 GHz), so I couldn't help but run
some results.
As a way of isolating sort time versus I/O time, I installed
a timer output, such that sort prints to stderr the elapsed
time during sort()'s call to sortlines().
There are other people using the machine, so the
timings wont be the most accurate, but I figure you guys
may still be interested. On 24 threads, the pure sort runs
in about 15% of the single threaded time, while with I/O
that figure's 17.5%.
$ for i in 1 2 4 8 12 16 24; do echo "T=$i: "; /usr/bin/time -f "%e"
sort --parallel=$i 1M > /dev/null; echo ""; done
T=1:
Sort without I/O: 11.074463
11.38
T=2:
Sort without I/O: 5.672202
5.96
T=4:
Sort without I/O: 3.453562
3.71
T=8:
Sort without I/O: 2.351003
2.65
T=12:
Sort without I/O: 2.100730
2.39
T=16:
Sort without I/O: 1.821079
2.09
T=24:
Sort without I/O: 1.674106
1.99
From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 21 04:58:13 2010
Received: (at 6600) by debbugs.gnu.org; 21 Jul 2010 08:58:14 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.69)
(envelope-from )
id 1ObV81-0001jF-0Q
for submit@debbugs.gnu.org; Wed, 21 Jul 2010 04:58:13 -0400
Received: from mail1.slb.deg.dub.stisp.net ([84.203.253.98])
by debbugs.gnu.org with smtp (Exim 4.69)
(envelope-from ) id 1ObV7y-0001j6-8N
for 6600@debbugs.gnu.org; Wed, 21 Jul 2010 04:58:11 -0400
Received: (qmail 93967 invoked from network); 21 Jul 2010 08:58:35 -0000
Received: from unknown (HELO ?192.168.2.25?) (84.203.137.218)
by mail1.slb.deg.dub.stisp.net with SMTP; 21 Jul 2010 08:58:35 -0000
Message-ID: <4C46B6A4.4020301@draigBrady.com>
Date: Wed, 21 Jul 2010 09:58:12 +0100
From: =?ISO-8859-1?Q?P=E1draig_Brady?=
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3
MIME-Version: 1.0
To: Chen Guo
Subject: Re: bug#6600: [PATCH] sort: add --threads option to
parallelize internal sort.
References: <362522.89643.qm@web180012.mail.gq1.yahoo.com> <4B94CAE0.6000106@draigBrady.com> <535984.88146.qm@web180006.mail.gq1.yahoo.com> <4C37C7D9.2030909@draigBrady.com>
<4C37E0E2.3060205@cs.ucla.edu> <4C383D5F.4090703@draigBrady.com>
<4C3BBA60.9020201@draigBrady.com> <4C3E5134.3040700@draigBrady.com>
<4C3EECDB.9030907@draigBrady.com> <87oce8u9b6.fsf_-_@meyering.net>
In-Reply-To:
X-Enigmail-Version: 1.0.1
Content-Type: multipart/mixed; boundary="------------020600060901050801070203"
X-Spam-Score: -2.4 (--)
X-Debbugs-Envelope-To: 6600
Cc: 6600@debbugs.gnu.org
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: debbugs-submit-bounces@debbugs.gnu.org
Errors-To: debbugs-submit-bounces@debbugs.gnu.org
X-Spam-Score: -2.4 (--)
This is a multi-part message in MIME format.
--------------020600060901050801070203
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
On 21/07/10 09:13, Chen Guo wrote:
> Hi all,
> So the gcc compile farm just got a 24 core donation
> from AMD (2x12 at 1.5 GHz), so I couldn't help but run
> some results.
> As a way of isolating sort time versus I/O time, I installed
> a timer output, such that sort prints to stderr the elapsed
> time during sort()'s call to sortlines().
> There are other people using the machine, so the
> timings wont be the most accurate, but I figure you guys
> may still be interested. On 24 threads, the pure sort runs
> in about 15% of the single threaded time, while with I/O
> that figure's 17.5%.
>
> $ for i in 1 2 4 8 12 16 24; do echo "T=$i: "; /usr/bin/time -f "%e"
> sort --parallel=$i 1M > /dev/null; echo ""; done
Cool! I had intended to do this at the weekend on the
gcc niagra (32 processor) machine but my DSL died.
I also intended to plot the cumulative CPU used,
and also with using mutexes rather than spinlocks.
Reformatting your results as:
1 11.074463 11.38
2 5.672202 5.96
4 3.453562 3.71
8 2.351003 2.65
12 2.100730 2.39
16 1.821079 2.09
24 1.674106 1.99
And using this gnuplot script:
set term pngcairo font 'Sans,10' size 640,480
set output 'sort-amd-24way.png'
set title "Multicore sort time on 12x2 AMD"
set ylabel "time (seconds)"
set xlabel "processors"
set xtics (2,4,6,8,12,16,24,32)
set xrange [0:32]
plot "amd" using 1:2 with lines title "no I/O", \
"amd" using 1:3 with lines title "with I/O"
Gives the attached plot.
cheers,
Pádraig.
--------------020600060901050801070203
Content-Type: image/png;
name="sort-amd-24way.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="sort-amd-24way.png"
iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAABmJLR0QA/wD/AP+gvaeTAAAg
AElEQVR4nOzdeVzVVf7H8ddlExBwg7ugmSJupablBqVZ1tjkNLZppeWomWM5LZZmZWXm2JjL
5LTbtO/aT8s0R80yLRNHLcMyEUHDFNcUIdn5/v5gvGmAAn7v/V7ufT953IfwXT/3jozvzvme
c2yGYRiIiIiISMAIsroAEREREfEuBUARERGRAKMAKCIiIhJgFABFREREAowCoIiIiEiAUQAU
ERERCTAKgCIiIiIBRgFQREREJMAoAIqIiIgEGAVAERERkQCjACgiIiISYBQARURERAKMAqCI
iIhIgFEAFBEREQkwCoAiIiIiAUYBUERERCTAKACKiIiIBBgFQBEREZEAowAoEoBSUlKw2Wzk
5eWZcpzosxKRukUBUKSOOB4wGjVqREFBwUn7MjIyCAoKwmazVdhXk2v//twLLriA7Oxs6tev
f0a1+7qq3n9NjvWXz2rUqFEkJycTExNT6fscP34855xzDmFhYcTFxTFy5EhycnKqff3anv/G
G29gs9mYOnVqhX01/d04frzNZiMoKIiGDRvSo0cPpk6dqgAvAUMBUKSOiYmJYf78+Sdte+WV
VzjrrLNMv1doaChOpxObzWb6tUtKSigrKzP9ulbV4MnPyptKSkoYOHAgkydPrnR/amoqU6ZM
Ydu2bSxevJgNGzYwbNiwal+/tue/8cYbdO3alTfffLPKY2r6u5GRkcGePXv473//y9ixY1mw
YAHdu3fnl19+qfb7EamzDBGpE9auXWsAxqOPPmpccskl7u0lJSVGfHy8MWnSJAMw8vPz3cfm
5uZWOL+y/UCF14nnHD+urKzMmDVrlpGYmGiEhoYaTqfTmDhxovseOTk5xuDBg4369esbTZo0
MR544AGjtLT0pGstWrTI6NChgxEcHGzs2bPHMAzDePbZZ422bdsaYWFhRrNmzYzJkye7z6vM
K6+8YjRv3twIDg424uPjjX/+859nVENV778y1fmsjn//6aefGp07dzbCw8ON5ORkIzMz0/j6
66+NCy64wKhXr57Ro0cPIzMz86Tr1/SzqM77XbFihXHeeecZYWFhRs+ePY2MjIwqr3fciX9f
TmXJkiVGSEiIUVpaauzevdto1KiR8frrr7v3z54923C5XMahQ4dOe35Vdu7caYSEhBjp6elG
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
ji+++AKA3Nxc5s2bx8yZMznvvPPo06cP999/Py+99FK1r11aWsrSpUvp378/mZmZlJaW0qlT
p0qP7dSpE9u3b9fMHCZTABQREZEKzj33XPf3drudgoICCgsLycjIoKSkhPPPP9+9v2vXrqSn
p1e7GzglJYWYmBjat29vXsE2m++/fIgCoIiIiFQQFFQxIpjVCrd48WL69+8PQEJCAsHBwaSm
plZ6bGpqKomJiRW6hyspzvdfPkQBUERERKqtVatWhISE8M0337i3bdiwgTZt2lQaGitz/Pk/
gOjoaK644gpmzpxZIWAeO3aM5557jhtuuMG8NyCAAqCIiIjUQHR0NIMGDWL8+PGkpqayatUq
pk+fzm233Vat87OyssjMzOSSSy5xb5s9ezbr16/nuuuuIyUlhV27drFixQouvfRSoqKimDBh
gqfeTsBSABQREZEaeeGFF+jQoQPJyclcd911jBw5knvuuada537yySf07duXevXqubclJiay
fv16oqOjGTBgAK1atWLkyJH07t2bVatWERkZ6am3ErC0FnAVtBawiIiI+fr378+AAQMYNWqU
1aXUKVoLuI7YxCZ60cvqMkRERHzKxRdfzIABA6wuI+CpBbAKZ5q0f+ZnkkhiF7tMrEpEREQC
kdktgAqAVTjTD7qIIqKJppBCE6sSERGRQKQu4DoijDBiiOEAB6wuRUREROQkCoAeZMfOfvZb
XYaIiIjISRQAPciFi73stboMERGR00pJScFms5GXl2fKceLbFAA9yIFDAVBEROqECy64gOzs
bOrXrw/8FvQKCgrO+NpVhcbevXszb948oHyC6OHDh+NyuQgLCyMhIYEJEyaQm5t7xveXihQA
PciJk33ss7oMERGR0woNDcXpdJ5+zV2THD58mPXr19OvXz8yMzPp2rUrOTk5LFiwgO3btzNn
zhy++OIL+vTpw7Fjx7xSUyCp0wFw1KhRJCcnExMTU+l/pZxuv6e5cJFNtlfvKSIictyHH35I
QkKC++c33ngDm83G8uXLASguLqZ+/fqsXbu2QitdUlISABEREdhstgrBcN26dXTu3Jl69eqR
lJREZmZmjWpbunQpPXv2pEGDBtxzzz107dqV+fPnk5SURPPmzbn88stZuXIlubm5TJ8+/Uw+
BqlEnQ6AJSUlDBw4kMmTJ9dqv6dpEIiIiFjpoosuYseOHezevRuAL7/8kiZNmvDll18C8M03
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
feUrX4md5DEn29e5bFFibklKek93uY35Ft29ZccuvVAoZLZs2WLKyspMSUmJaWlpMWNjYxmv
wxhjjh8/bu677z6Tl5dnioqKzLp168yFCxdsqcUOqdbPdOPtXn/nU7pl4qT1F/a5ms+Gndtb
2OPtt982q1atMoWFhcbn85mamhrz/e9/P2H9mIvtq+ejCQEAAMAlOAsYAADAZQiAAAAALkMA
BAAAcBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAA
cBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACcLVwOKxIJGJ3GXMm294PgPlBAASQVY4e
PSqPx6M9e/aotrZWhYWF2rRpkyYnJxPG79u3T3fccYcCgYD6+vo0NDSk9evXq6ioSIsWLdKT
Tz6ZEKSMMXr++edVV1cnv9+viooKbd26NWHeP/vZz7R8+XLl5eXplltu0fbt2xOm8dJLL6m6
ulo+n08f//jH9cILL8xq3Ey1pXo/M00PAHx2FwAA8+GFF17Q3r17NTAwoObmZtXU1Oh73/te
bPwzzzyjXbt2qaysTOXl5frmN7+p9957T++88476+/vV3NysxYsX6zvf+Y4k6amnntLOnTu1
c+dONTU16eLFi/r3v/+dML3XXntNP/3pT9XY2Kiuri499thj8ng8+tGPfqTe3l61tLTo2Wef
VXNzsy5evKje3l5JmnGcJG3atGnG2q58P2NjYzNODwBkACCLHDlyxEgyf/vb32LDnnvuOdPQ
0JAw/sCBA7HxQ0NDxufzmb/85S+xYTt27Ii9ZnR01BQUFJjf/va3Sec5Pj5uiouLzbFjxxKG
79mzx1RUVBhjjHnvvfeMJNPV1TXt9TONS1dbsvcz0/QAwBhj2AUMICutXLky9vjOO+9UMBhM
2B27YsWK2ONTp04pHA7rzjvvjA27++67Y685ceKELl++rPvvvz/pvLq6ujQ8PKxPfepTKioq
it3Xr1+v3t5ehUIh3XbbbWpqalJTU5M2bNigPXv2xOqZaVy62pK9n5mmBwASxwACcKnc3Nw5
m1Y0XB08eFDt7e2xe0dHh4LBoHw+n7xerw4fPqzf/OY3Ki0tVUtLi9avXy9JM467lvczF9MD
kN0IgACyUnt7e+zx8ePHVVdXp5yc5Ju82tpa+Xw+vfvuu7FhbW1tqq+vV05Ojurr61VQUKAD
Bw4kfX1DQ4OKiorU09OjZcuWTbt7PB5Jks/n05o1a/Tiiy/q5Zdf1u7du2PhMdW4dLWlMtO8
AICTQABkpe3bt+umm27S4OCgduzYoS1btqR8bnFxsR566CG1trZqyZIl6u/v144dO/Tkk09K
kgKBgB5//HF9+9vfls/n06pVq2IngXzjG99QIBDQ1q1btXHjRo2Ojuq+++5TKBTSsWPHFAwG
tXXrVrW1temf//ynHnjgAeXm5ur3v/+9qqurlZOTM+O4dLUlM9P0AEASJ4EAyC7RkyJef/11
c+utt5qCggLT0tJiQqFQwvjh4eGE1w0ODpqHH37YFBYWmhtvvNE88cQTZnJyMjY+EomYZ599
1tTU1Bifz2cqKirM1q1bE6axa9cu84lPfML4/X5TWFho7rnnHrNr1y5jjDGdnZ3m/vvvN8XF
xcbv95umpibT1taWdly62pK9n3TTAwCPMcbYnEEBYM4cPXpU9957r4aHh1VUVGR3OQDgSOwP
AAAAcBkCIAAAgMuwCxgAAMBl6AACAAC4DAEQAADAZQiAAAAALvN/HZta+PA/3FgAAAAASUVO
RK5CYII=
--------------020600060901050801070203--
From unknown Mon Jun 23 23:49:31 2025
Received: (at fakecontrol) by fakecontrolmessage;
To: internal_control@debbugs.gnu.org
From: Debbugs Internal Request
Subject: Internal Control
Message-Id: bug archived.
Date: Wed, 18 Aug 2010 11:24:03 +0000
User-Agent: Fakemail v42.6.9
# This is a fake control message.
#
# The action:
# bug archived.
thanks
# This fakemail brought to you by your local debbugs
# administrator