From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Ihor Radchenko Newsgroups: gmane.emacs.bugs Subject: bug#38345: 27.0.50; Permanent increase in memory consumption after opening images (or pdfs) Date: Tue, 26 Nov 2019 23:21:11 +0800 Message-ID: <87lfs2mzo8.fsf@yantar92-laptop.i-did-not-set--mail-host-address--so-tickle-me> References: <87sgme1ww7.fsf@yantar92-laptop.i-did-not-set--mail-host-address--so-tickle-me> <83o8x0rl6d.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="97239"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 38345@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Nov 26 16:39:25 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iZcw0-000PAH-8F for geb-bug-gnu-emacs@m.gmane.org; Tue, 26 Nov 2019 16:39:25 +0100 Original-Received: from localhost ([::1]:56334 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iZcvy-0006Gv-TM for geb-bug-gnu-emacs@m.gmane.org; Tue, 26 Nov 2019 10:39:22 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58392) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iZcuu-00058s-Ax for bug-gnu-emacs@gnu.org; Tue, 26 Nov 2019 10:38:17 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iZch8-0003G8-1w for bug-gnu-emacs@gnu.org; Tue, 26 Nov 2019 10:24:07 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:46762) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iZch7-0003Fq-Qc for bug-gnu-emacs@gnu.org; Tue, 26 Nov 2019 10:24:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iZch7-0002l8-No for bug-gnu-emacs@gnu.org; Tue, 26 Nov 2019 10:24:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 26 Nov 2019 15:24:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38345 X-GNU-PR-Package: emacs Original-Received: via spool by 38345-submit@debbugs.gnu.org id=B38345.157478179010545 (code B ref 38345); Tue, 26 Nov 2019 15:24:01 +0000 Original-Received: (at 38345) by debbugs.gnu.org; 26 Nov 2019 15:23:10 +0000 Original-Received: from localhost ([127.0.0.1]:52735 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZcgH-0002jz-Vy for submit@debbugs.gnu.org; Tue, 26 Nov 2019 10:23:10 -0500 Original-Received: from mail-wm1-f48.google.com ([209.85.128.48]:52116) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZcgG-0002jn-Jm for 38345@debbugs.gnu.org; Tue, 26 Nov 2019 10:23:09 -0500 Original-Received: by mail-wm1-f48.google.com with SMTP id g206so3652385wme.1 for <38345@debbugs.gnu.org>; Tue, 26 Nov 2019 07:23:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=C5Pl+pHnDm8YpPinJAIk6zPR/0JVMcrNZTPzX8S6GLs=; b=azIRs2axe90iYxiiT6xspyZjs7JD4F7p588N0VxTik8mVu7kPeSem8hppmGWOVWnR3 CKXj9lrZoPfLSIomQdkLHAYS2tHZcbvx7nCiiDlZ1EaWlr9tmhHDWDr5UXb5g4W9vCXJ gwxcXSd//BfiG5YwRieAji7JEP8Z0s4NyLoVW5en8ypCSlQem+7rnbhdWUcdABfIvovW ca0R8PNPq4Z8vLvmwfE6yczszlT0RQYnYDuOHRrjrspPL05ytxQTymd0PElwGF+tHhC7 vMoZheuTrKZvbRkbSnb4qNB7sLI6dADU99QI+n4VgdKy8EQLESXw+LuAqo2JaNcGYEpa q8Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=C5Pl+pHnDm8YpPinJAIk6zPR/0JVMcrNZTPzX8S6GLs=; b=bMVmb7JKrqARP6RKj0u1gYXla8k2Hz20gGT7K5xjwY+rDm70GZirjxRUll8dx/DR1k uQHA7ltj7Q1aoAsO42oJdkz0fspy4ERF/Pht5HLoP95pMyVMmDwjdCOvnkWQJmeukafN 2qgPN6WHgTMLmatTwV2NyxfOaCDsuip5GlNBRcpH8aenyKJ9ZQIZ5cA2FiBQOx38YTZ4 j37n9kLU20qsvP9GcxHderokQNTsJFeZyeONpldTooNIQxU2/JcFJPK/9lM5e1Ov5+05 hRhv5iYf+50S0Pb9sK+woML7ANdteVvQubdO8FT1gwPFj/ZjC198x375fcxZgkTdFd4o jBaw== X-Gm-Message-State: APjAAAW8wKJxOja+L38LhG4vaj74kqKDkTa9mtODgnGbIwDoygjO/oSB wYCnaHXxE9B04g6KEdXkn9soG7I+B2o= X-Google-Smtp-Source: APXvYqwR5UvSzPD+FOZY+sn1sjRkC+F2ylyYlmSmDrhBflqXcYPHOdzQp2RxfIFJJ2l8XyaUgSQ1sA== X-Received: by 2002:a05:600c:506:: with SMTP id i6mr4958959wmc.153.1574781782450; Tue, 26 Nov 2019 07:23:02 -0800 (PST) Original-Received: from localhost ([5.226.137.4]) by smtp.gmail.com with ESMTPSA id x10sm15157890wrp.58.2019.11.26.07.22.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Nov 2019 07:23:01 -0800 (PST) In-Reply-To: <83o8x0rl6d.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:172439 Archived-At: --=-=-= Content-Type: text/plain Thanks for the links. I got to know more about memory management now. Now, it is clear why the memory is consumption is so high when I open a bunch of images at the same time. However, it still does not explain my observations during usual workflow. For my real usage, I open pdfs (or images) one by one most of the time and kill the buffers periodically. Then, if the memory is freed upon closing a pdf buffer, I expect it to be reused for opening a new buffer. Even though memory consumption is expected to grow in this case, it should be in order of the largest image I open (times maximum number of image buffers open at the same time). But it is not what I see. I did a small test by modifying my earlier lisp code to open and close the same image list sequentially: #+begin_src emacs-lisp (dolist (file (directory-files "~/Tosort/pictures&photos/" 'full ".*jpg")) (find-file file) (mapc #'kill-buffer (seq-filter (apply-partially #'string-match ".+.jpg$") (mapcar #'buffer-name (buffer-list))))) #+end_src The resulting memory usage graph is attached. What we can see is that the memory is indeed growing (as expected). Moreover, the memory consumption does not increase as much as if we open all the images together. However, the final heap size appears to be over 400Mb (from smaps), which is almost half of what was observed with all the images open at the same time. Since the largest .jpg file I have in the folder is just around 5.5Mb, 400Mb sounds strange for me. Googling on memory consumption issues, I found that there might be some memory fragmentation problem happening [1]. P.S. Were there any attempts to implement garbage collection for emacs in C code? I found an article [2] showing that using an actual GC may speed up an application in comparison with malloc/free approach. [1] https://stackoverflow.com/a/9069474/9196985 [2] https://www.linuxjournal.com/article/6679 Regards, Ihor --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=images-seq.png Content-Transfer-Encoding: base64 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 --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> From: Ihor Radchenko >> Date: Sat, 23 Nov 2019 22:37:44 +0800 >> >> If I open a large (>250) photos using the code below, the memory usage >> increases permanently even after I close all the image buffers and wait >> for some time. > > For some background on this, see > > https://unix.stackexchange.com/questions/53447/does-free-unmap-the-memory-of-a-process > https://stackoverflow.com/questions/1421491/does-calling-free-or-delete-ever-release-memory-back-to-the-system > > I think what you see is just normal behavior of memory allocation in > glibc. --=-=-=--