From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Keith David Bershatsky Newsgroups: gmane.emacs.devel Subject: Re: NS port: How to debug excessive garbage collection? Date: Fri, 12 Apr 2019 22:55:42 -0700 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="68144"; mail-complaints-to="usenet@blaine.gmane.org" Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Apr 13 07:56:43 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hFBec-000HdH-M8 for ged-emacs-devel@m.gmane.org; Sat, 13 Apr 2019 07:56:43 +0200 Original-Received: from localhost ([127.0.0.1]:47216 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hFBeb-00022E-MI for ged-emacs-devel@m.gmane.org; Sat, 13 Apr 2019 01:56:41 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:44038) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hFBe2-000227-I4 for emacs-devel@gnu.org; Sat, 13 Apr 2019 01:56:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hFBe0-0002rO-BH for emacs-devel@gnu.org; Sat, 13 Apr 2019 01:56:06 -0400 Original-Received: from gateway32.websitewelcome.com ([192.185.145.12]:14859) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hFBdz-0002dX-SM for emacs-devel@gnu.org; Sat, 13 Apr 2019 01:56:04 -0400 Original-Received: from cm10.websitewelcome.com (cm10.websitewelcome.com [100.42.49.4]) by gateway32.websitewelcome.com (Postfix) with ESMTP id 2591F9A823 for ; Sat, 13 Apr 2019 00:55:44 -0500 (CDT) Original-Received: from gator3053.hostgator.com ([50.87.144.69]) by cmsmtp with SMTP id FBdfhIv9f2PzOFBdghrr1t; Sat, 13 Apr 2019 00:55:44 -0500 X-Authority-Reason: nr=8 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com ; s=default; h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date: Sender:Reply-To:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=2xIEQz6fB8m5gR2WJIsOPZmXI8k8tEvo0m4uDLKGJy4=; b=OwA82089vA2QxaMYgb/uChuYCJ dQgjgzdfmNmlkqizGPj2E/CQGIB1g6KI0Bs9GFAc2t+4J69QXLynZY/21ddGLWjmhDo8jCh8l7XyI EuxRYejVXln5QfFbk2InByC9d2KKAV6iGDGYfamX9La5n7FBhRoj24VuVZ6s2H90IuAnl5Gkb8328 3vZE1TNuaEICuZ8FBLhOrWYwsgS6HNeL0P1oJMXfo+vcI4aUWgqKcMlG2y1oB1fDe5hvu/xtt5rEU l4NNUi2bYUshwzqW9288EtN5wI7xkPi5tXcw7i/ElwluKYcA10LxRZgyvXUbzUZuzJlugryDsIUU8 1jeINH4A==; Original-Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:50584 helo=server.local) by gator3053.hostgator.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.91) (envelope-from ) id 1hFBdf-002xuB-Dn; Sat, 13 Apr 2019 00:55:43 -0500 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator3053.hostgator.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lawlist.com X-BWhitelist: no X-Source-IP: 45.48.239.195 X-Source-L: No X-Exim-ID: 1hFBdf-002xuB-Dn X-Source-Sender: cpe-45-48-239-195.socal.res.rr.com (server.local) [45.48.239.195]:50584 X-Source-Auth: lawlist X-Email-Count: 1 X-Source-Cap: bGF3bGlzdDtsYXdsaXN0O2dhdG9yMzA1My5ob3N0Z2F0b3IuY29t X-Local-Domain: yes X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 192.185.145.12 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:235385 Archived-At: Thank you, Eli, for letting me know that my previous test was not the correct way to do it. I added a little bit of code from garbage-collect to garbage_collect_1 so that messages to stderr are automatically generated when garbage collection occurs. In all three (3) of the new tests, I used the following Lisp code at the outset and then held down the right arrow key (right-char) in the *GNU Emacs* welcome buffer: (progn (blink-cursor-mode -1) (global-eldoc-mode -1) (setq timer-list nil timer-idle-list nil)) ============================ ;;; begin STOCK / UNMODIFIED Emacs ((conses 16 12347 39900) (symbols 48 1746 1) (strings 32 4057 438) (string-bytes 1 117832) (vectors 16 3477) (vector-slots 8 52314 9400) (floats 8 7 17) (intervals 56 54 26) (buffers 992 9)) ;;; end STOCK UNMODIFIED Emacs ============================ ;;; begin MODIFIED Emacs -- CROSSHAIRS "OFF" ((conses 16 4624 17450) (symbols 48 1312 0) (strings 32 580 1807) (string-bytes 1 34827) (vectors 16 3638) (vector-slots 8 52667 12372) (floats 8 17 425) (intervals 56 51 29) (buffers 1072 8)) ;;; end MODIFIED Emacs -- CROSSHAIRS "OFF" ============================ ;;; begin MODIFIED Emacs -- CROSSHAIRS "ON" ((conses 16 6032 17006) (symbols 48 1314 1) (strings 32 595 1854) (string-bytes 1 36097) (vectors 16 3729) (vector-slots 8 53337 12722) (floats 8 264 805) (intervals 56 53 27) (buffers 1072 9)) ;;; end MODIFIED Emacs -- CROSSHAIRS "ON" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Here is the diff I used to automatically generate messages to stderr during garbage collection: diff --git a/src/alloc.c b/src/alloc.c index dd78386..b503b74 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -6206,6 +6206,53 @@ garbage_collect_1 (struct gcstat *gcst) *gcst = gcstat; + +/* *************************************************************************** */ +/* begin DEBUGGING */ + + Lisp_Object total[] = { + list4 (Qconses, make_fixnum (sizeof (struct Lisp_Cons)), + make_int (gcstat.total_conses), + make_int (gcstat.total_free_conses)), + list4 (Qsymbols, make_fixnum (sizeof (struct Lisp_Symbol)), + make_int (gcstat.total_symbols), + make_int (gcstat.total_free_symbols)), + list4 (Qstrings, make_fixnum (sizeof (struct Lisp_String)), + make_int (gcstat.total_strings), + make_int (gcstat.total_free_strings)), + list3 (Qstring_bytes, make_fixnum (1), + make_int (gcstat.total_string_bytes)), + list3 (Qvectors, + make_fixnum (header_size + sizeof (Lisp_Object)), + make_int (gcstat.total_vectors)), + list4 (Qvector_slots, make_fixnum (word_size), + make_int (gcstat.total_vector_slots), + make_int (gcstat.total_free_vector_slots)), + list4 (Qfloats, make_fixnum (sizeof (struct Lisp_Float)), + make_int (gcstat.total_floats), + make_int (gcstat.total_free_floats)), + list4 (Qintervals, make_fixnum (sizeof (struct interval)), + make_int (gcstat.total_intervals), + make_int (gcstat.total_free_intervals)), + list3 (Qbuffers, make_fixnum (sizeof (struct buffer)), + make_int (gcstat.total_buffers)), + +#ifdef DOUG_LEA_MALLOC + list4 (Qheap, make_fixnum (1024), + make_int ((mallinfo ().uordblks + 1023) >> 10), + make_int ((mallinfo ().fordblks + 1023) >> 10)), +#endif + }; + + Lisp_Object val = CALLMANY (Flist, total); + Lisp_Object string = Fprin1_to_string (val, Qnil); + char *char_string = SSDATA (string); + fprintf (stderr, "%s\n", char_string); + +/* end DEBUGGING */ +/* *************************************************************************** */ + + /* GC is complete: now we can run our finalizer callbacks. */ run_finalizers (&doomed_finalizers);