delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2024/11/18/23:02:03

DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 4AJ423Y62948369
Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com
Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com
DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 4AJ423Y62948369
Authentication-Results: delorie.com;
dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=QZhspQz8
X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 22C7D3858D21
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1731988921;
bh=oY9xSAEMpf4yedmixSuYRxNJMNwMile3sXNPxMYlTNs=;
h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe:
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:
From;
b=QZhspQz8/x0rhpd8lDer8Dyn8f0S3jAPV+GOqNmqLAmbh7oCIc7Wy5QuqpXuSd14h
ei9gL6F331V4e3lt6ARSoi3gFaY6EcifhS17kIM2/T8hZE+dEEVquw17hz4rL5WSJI
cArTTU4FqtrsFKBRYhkNmvvyt3ZwuoHzfx4j8K6g=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4680B3858D21
ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4680B3858D21
ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1731988856; cv=none;
b=rOxNPaGGTENBkSA4UOsyEdNFN3jJ/Epqr3JeO5cSMVAw9NEstM++EO6bdDrnvzSCmHvsqrE/pl3uQC6hCkOkHBVDZgh7UaRg+WbipG2+C/EE7JhGYEuN8IjowoZyw0fMCfZ3jZdBIDwRoKuphoQBkiv315vZ70hw+319ZUvLj70=
ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key;
t=1731988856; c=relaxed/simple;
bh=tk1rLhQ/J0M3AK6Q7KMnuBKaIakJdychxKMXV0vquck=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=KxUmzuFxZ2tZmn6Leqa0WJMQtThR/6XIX4qYfD+N/Zuy91ENbJC48R2LkvlOXfoLq+UqFYea7ROrzieLByGIkn8rdeP1evzonvo1gehrVYlTijGD9xvlYX0s18xMxAf6yTLW70S3qr+fSupbZ2Y4I/iDAjIrkyzpKSdq6ZDAp4Q=
ARC-Authentication-Results: i=1; server2.sourceware.org
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4680B3858D21
Message-ID: <0bec82b7-503d-4cfd-b940-cb66914b61f1@maxrnd.com>
Date: Mon, 18 Nov 2024 20:01:00 -0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Thread memory allocation issue
To: "cygwin AT cygwin DOT com" <cygwin AT cygwin DOT com>
References: <791865992 DOT 3601338 DOT 1731871978376 DOT ref AT mail DOT yahoo DOT com>
<791865992 DOT 3601338 DOT 1731871978376 AT mail DOT yahoo DOT com>
In-Reply-To: <791865992.3601338.1731871978376@mail.yahoo.com>
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.30
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Mark Geisert via Cygwin <cygwin AT cygwin DOT com>
Reply-To: Mark Geisert <mark AT maxrnd DOT com>
Errors-To: cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com>
X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 4AJ423Y62948369

Hello Teepean,

On 11/17/2024 11:32 AM, Teepean via Cygwin wrote:
> I raised this issue couple of years ago on cygwin-developer but now when the problem has manifested again with recent versions of Cygwin I decided to post this to general discussion list.

This (main Cygwin) list is the correct place for reports like this. 
There is no need to contact me (or other maintainers/devs) off-list.

Given that the result of the investigation a couple years ago was, 
essentially, no change to Cygwin's malloc*, why has the problem 
manifested again recently?  Have you been benchmarking/testing all 
along?  Can you be more specific about which recent Cygwin versions?

*My own benchmark, building the Cygwin tree, showed that there wasn't 
much difference between the half-dozen malloc implementations I tried 
and they were all spending more time in Windows' ntdll.dll than the 
current Cygwin malloc (==dlmalloc), though a little less time in Cygwin 
itself.

> Steps to Reproduce
> 
> 1. Compile BWA normally
> 
> https://github.com/lh3/bwa/

What's involved with that? Clone the repo, ./configure, make? Anything else?

> 2. Compile BWA with rpmalloc and the following patch:
> 
> 
> // In thread worker function:
> #ifdef __CYGWIN__
> rpmalloc_thread_initialize();
> #endif
> 
> 
> // ... thread work ...
> #ifdef __CYGWIN__
> rpmalloc_thread_finalize(1);
> #endif

Where does that patch go? Assume I know nothing about BWA.

> 3. Run both versions with the following command:
> time ./bwa mem -t 11 chr19_KI270866v1_alt.fasta test_1.fastq test_2.fastq > testorigsingle.sam
> 
> 
> Without Patch (Default malloc):
> 
> 
> [M::mem_process_seqs] Processed 120000 reads in 30.296 CPU sec, 3.743 real sec
> [main] Real time: 3.883 sec; CPU: 30.436 sec
> real    0m3.907s
> user    0m19.186s
> sys     0m11.265s
> 
> 
> With Patch (rpmalloc):
> 
> 
> [M::mem_process_seqs] Processed 120000 reads in 7.530 CPU sec, 0.702 real sec
> [main] Real time: 0.830 sec; CPU: 7.640 sec
> real    0m0.868s
> user    0m7.343s
> sys     0m0.327s

Are these examples of runs one would do "in production"? Or are you 
running much longer-lasting processing in the usual case?

> Analysis
> 
> 1. The default malloc implementation shows extremely high system time (11.265s) compared to the rpmalloc version (0.327s)
> 2. Total real time is about 4.5x slower with default malloc
> 3. The dramatic difference in system time suggests heavy contention in the memory allocation subsystem
> 4. The issue only manifests on Cygwin with bwa; the same code performs normally on native Linux and MacOS

Are you saying there is non-bwa code that runs on Cygwin comparably to 
Linux and Mac?

> 5. The issue manifests with recent versions of Cygwin but does work with older versions

Again, it would really help if you could give Cygwin versions or at 
least dates here...

> The issue becomes more pronounced with higher thread counts

That I believe; dlmalloc as it is currently set up for Cygwin is not the 
greatest performer for heavy thread usage.

> The patched code is located here in branch Cygwin:
> 
> 
> https://github.com/WGSExtract/bwa.git
> 
> 
> Simple testsuite. Run bash testsuite.sh. The testsuite includes a version compiled with an older version of Cygwin called bwa_working.exe
> 
> 
> https://drive.google.com/file/d/1jtbQVUAcCmpJM-8Exi0C6pzDXcEo4cV6/view?usp=drive_link

I'll glance at this stuff when I can but I hope to have some answers to 
my questions above from you to save me some time.

..mark


-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019