From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Larger GC thresholds for non-interactive Emacs Date: Sun, 19 Jun 2022 18:11:40 -0400 Message-ID: References: <877d5mqmkh.fsf@localhost> <83y1y2utnd.fsf@gnu.org> <87r13up587.fsf@localhost> <83o7yyur0l.fsf@gnu.org> <87leu2p3nu.fsf@localhost> <83leu2uewn.fsf@gnu.org> <87r13qv701.fsf@localhost> <83bkuursya.fsf@gnu.org> <87h74l9jk8.fsf@localhost> <83bkutqb3z.fsf@gnu.org> <9778F176-E724-4E61-B0FB-327BCDD316C0@acm.org> <87sfo4epeo.fsf@localhost> <87bkurrc5e.fsf@localhost> <87bkur72b7.fsf@gnus.org> <874k0j40e7.fsf@gnus.org> <874k0hxb0g.fsf@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="34565"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: Lars Ingebrigtsen , Mattias =?windows-1252?Q?Engdeg?= =?windows-1252?Q?=E5rd?= , Eli Zaretskii , Tim Cross , rms@gnu.org, Alan Mackenzie , emacs-devel To: Ihor Radchenko Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Jun 20 00:12:30 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o339i-0008lH-A2 for ged-emacs-devel@m.gmane-mx.org; Mon, 20 Jun 2022 00:12:30 +0200 Original-Received: from localhost ([::1]:38750 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o339h-0007AV-EV for ged-emacs-devel@m.gmane-mx.org; Sun, 19 Jun 2022 18:12:29 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40176) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o3393-0006Px-Tr for emacs-devel@gnu.org; Sun, 19 Jun 2022 18:11:49 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:46156) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o3391-0000dy-39; Sun, 19 Jun 2022 18:11:48 -0400 Original-Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id E0C561006DD; Sun, 19 Jun 2022 18:11:44 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 5899D100346; Sun, 19 Jun 2022 18:11:43 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1655676703; bh=UT07pAOPFxMRkFjclUaCBQGylOlvigGDh6RHHEmBCJk=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=jrmZ8/1l1AFFYLMatZzwTcC60xPlN+fDL6wWr0JdvkNLw4JqUURG6N3ERMSoZJPk9 ixpyNQ+5osOLSNx1YFSSqxQUS8MBvn4q+sh3lKo51C7Ujat/RT4rr4UK23lgYhRYoY ewdl4/idcg2RQXjGSK0GaT2o9F+dKvvXrb31UeT3smnrFr7+vOzi75iGYpLofn0dOZ YstUoAVQa9FqZusLHC2swzxtQHEyHEDZaVbvx49WafIr6/2s8//WD/6GpwgQTwO+1r r3x7WiX2VanwSjBFj1Plfnti20riJouT8ScdS8aqi57miF+7aAY8PniSbSwzraEiKi lGrBcU0MJBVHw== Original-Received: from alfajor (196.214.25.93.rev.sfr.net [93.25.214.196]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E60141204E9; Sun, 19 Jun 2022 18:11:41 -0400 (EDT) In-Reply-To: <874k0hxb0g.fsf@localhost> (Ihor Radchenko's message of "Sun, 19 Jun 2022 17:23:11 +0800") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:291439 Archived-At: > When we increase the threshold, free increases up to some value, but > that value is limited by the underlying code: A clarification: when you see [...] GC-898 p=3D1.0 total=3D18.7M free=3D7.3M thresold=3D18.7M GC-898 p=3D1.0 total=3D18.8M free=3D7.3M thresold=3D18.8M [...] what it means is that after the first of the two GCs, the threshold until the next GC was set at 18.7M, so when the next GC is called, the heap has grown to at least 18.7M+18.7M=3D37.4M (possibly more), then GC took place, it found 18.8M of live data and of the remaining =E2=89=A518.6M= it managed to return =E2=89=A511.3M back to the malloc library but it had to k= eep 7.3M as "free memory" because these are contained in malloc'd blocks which still also contain *some* live data (typically, we malloc blocks of say 16kB and then split them into the corresponding number of cons cells, or floats, or strings, so we can only free a block of floats if all the floats it contains are dead). > In the first series of benchamarks with p=3D0.1 and total=3D18.8M, free is > roughly equal to threshold. This likely means that we basically neither called `malloc` in between the two GCs (we instead managed to satisfy all the allocations from the set of free objects we still had around) nor called `free` at the end of the GC (because those 1.9M of free memory are spread around in such a way that we can't return any of that memory to the malloc library). The difference between the two cases is that when you have half of the heap made up of dead objects, there's a higher probability that some of those objects are clustered such that they make up a few complete 16kB blocks, whereas when only the dead objects represent only 10% of the heap, almost all 16kB blocks will contain a mis of dead and live objects and hence can't be returned to the malloc library. Stefan