summaryrefslogtreecommitdiffstats
path: root/2023/info/gc-after.md
diff options
context:
space:
mode:
Diffstat (limited to '2023/info/gc-after.md')
-rw-r--r--2023/info/gc-after.md353
1 files changed, 353 insertions, 0 deletions
diff --git a/2023/info/gc-after.md b/2023/info/gc-after.md
index d878219a..90c0a853 100644
--- a/2023/info/gc-after.md
+++ b/2023/info/gc-after.md
@@ -605,6 +605,359 @@
[[!template text="""and you can reproduce all the statistic graphs if you wish""" start="00:33:11.840" video="mainVideo-gc" id="subtitle"]]
[[!template text="""and thank you for attention""" start="00:33:17.080" video="mainVideo-gc" id="subtitle"]]
+<a name="gc-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: And then, hi everyone.""" start="00:00:01.620" video="qanda-gc" id="subtitle"]]
+[[!template text="""Thank you for your nice talk,""" start="00:00:03.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""I can say it's the Emacs GC.""" start="00:00:05.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""We have some questions on the pad and maybe""" start="00:00:09.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""before I would like to ask you something to""" start="00:00:11.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""the last 1 you have said,""" start="00:00:12.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""concerning changing the GC strategy,""" start="00:00:15.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""that it's unlikely that it will be happening""" start="00:00:18.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""in the next time. Yeah.""" start="00:00:20.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""Is there any discussion going on or why does""" start="00:00:22.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""the case it's not changing the strategy?""" start="00:00:24.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's mostly because it's difficult.""" start="00:00:26.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""I think, yesterday you heard from,""" start="00:00:29.439" video="qanda-gc" id="subtitle"]]
+[[!template text="""1 of the dev talks that like there was 1""" start="00:00:33.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""small, short comment that,""" start="00:00:34.980" video="qanda-gc" id="subtitle"]]
+[[!template text="""oh yeah, it would be nice to change this""" start="00:00:36.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""algorithm but it's hard.""" start="00:00:39.059" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I""" start="00:00:40.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: mean it's hard not because the algorithm is""" start="00:00:43.260" video="qanda-gc" id="subtitle"]]
+[[!template text="""that hard but because it's a very low level""" start="00:00:45.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""code and it must be like very carefully""" start="00:00:48.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""weighted. So that can be,""" start="00:00:49.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""it needs to be made sure that the carousel""" start="00:00:53.239" video="qanda-gc" id="subtitle"]]
+[[!template text="""will work. It's all bugs.""" start="00:00:55.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""If you have bugs and you can see that,""" start="00:00:57.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""so it's nothing to work anymore.""" start="00:00:58.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So We have a lot of RAM usage.""" start="00:01:00.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah. Maybe sometime.""" start="00:01:02.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: There was like years ago,""" start="00:01:06.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""there was a branch on generational DC,""" start="00:01:09.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""if I remember correctly,""" start="00:01:11.100" video="qanda-gc" id="subtitle"]]
+[[!template text="""but they didn't go anywhere,""" start="00:01:13.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""unfortunately.""" start="00:01:14.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's a pity. But let's come to the""" start="00:01:18.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""questions on the pad. So the first 1 is,""" start="00:01:21.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""are the GC duration statistics correlated""" start="00:01:24.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""with users? I mean, does the same user""" start="00:01:27.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""experience GC of various durations?""" start="00:01:29.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""Or Do some users experience GC of a greater""" start="00:01:32.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""0.26 exclusively, while others never""" start="00:01:36.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""experience them? So is it correlated to user""" start="00:01:40.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""behavior? I guess you said it in your talk.""" start="00:01:43.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, If you talk formally,""" start="00:01:46.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""then almost every user has like 1 or 2""" start="00:01:49.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""occasions when GC takes more than 0.2""" start="00:01:51.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""seconds, but it's like,""" start="00:01:53.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""maybe something else is using CPU and that's""" start="00:01:56.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""why, but in practice, there are users who""" start="00:02:00.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""don't have problem. Half of them that that's""" start="00:02:04.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""who that's what I looked from statistics.""" start="00:02:05.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""And dry users who have like really big""" start="00:02:10.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""problems, like 1 second GC time.""" start="00:02:12.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: This is dependent on you make some comments""" start="00:02:17.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""on us in the talk, but could you like extract""" start="00:02:19.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""on if it's a package, that's a problem or we""" start="00:02:23.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""as a user behavior are there.""" start="00:02:24.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Usually it's something that is,""" start="00:02:30.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""okay. I'm sharing my screen now,""" start="00:02:33.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: It's coming on, give it like 2 to 3 seconds.""" start="00:02:37.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: right? Yeah. So I can just click through""" start="00:02:41.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""different user statistics.""" start="00:02:42.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""So like you can see this duration for each""" start="00:02:48.840" video="qanda-gc" id="subtitle"]]
+[[!template text="""individual user basically.""" start="00:02:49.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""So you can see like here for example it's""" start="00:02:54.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""like averages around 0.25""" start="00:02:56.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""seconds which is noticeable and here is like""" start="00:03:00.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""0.1 like someone is all over the place,""" start="00:03:03.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""probably some. Then like,""" start="00:03:09.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""what else can we see here?""" start="00:03:11.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah, some users like have sub 0.1,""" start="00:03:15.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""no problem at all. And I have seen some that""" start="00:03:23.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""really, really bad. I mean,""" start="00:03:30.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: if it's noticeable, it's all bad.""" start="00:03:31.880" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: So yeah. For example, here it's like 0.8""" start="00:03:36.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""seconds, 0.5 seconds. I don't know how that""" start="00:03:41.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""guy uses ZMax. Yeah. you can see it varies.""" start="00:03:48.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So It varies quite a lot.""" start="00:03:51.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: What it depends on, like,""" start="00:03:52.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""usually the number of packages,""" start="00:03:54.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""like all kinds of timers going on under the""" start="00:03:58.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""hood. I think I tried to list...""" start="00:04:01.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""I'll go through this. I briefly outlined some""" start="00:04:12.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""important parts. Here,""" start="00:04:15.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you have something like an org agenda,""" start="00:04:18.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""it will most likely trigger a lot of GCs.""" start="00:04:20.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""When you have a lot of timers,""" start="00:04:23.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you have something calculated on""" start="00:04:27.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""modline, it will be frequently triggered.""" start="00:04:29.700" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well,""" start="00:04:30.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: yeah. When you have so many packages and""" start="00:04:34.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""these packages are using a lot of memory.""" start="00:04:35.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""Like I remember I was surprised by this,""" start="00:04:41.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""package, home org that was,""" start="00:04:44.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""caching all the results.""" start="00:04:46.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""And for large org files,""" start="00:04:48.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""it was like several hundred megabytes of""" start="00:04:51.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""data. Well, it just becomes slower.""" start="00:04:55.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah.""" start="00:04:55.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah. Maybe, maybe a short side note.""" start="00:05:00.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""Someone asks, what software you're using for""" start="00:05:02.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""flipping through the PNGs.""" start="00:05:03.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""Maybe you could shortly throws it in.""" start="00:05:06.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: What do you mean? Here,""" start="00:05:08.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: I guess it was just simply,""" start="00:05:11.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: this, It's it's far. Yeah.""" start="00:05:13.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""So""" start="00:05:16.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: yeah. So, question 1 and 2 answered.""" start="00:05:23.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""To 1 statement you have made,""" start="00:05:35.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""there was a question concerning the timings.""" start="00:05:37.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""So you said, okay, everything above 0.1""" start="00:05:41.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""second is fine. Maybe There's a short story""" start="00:05:45.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""of someone who asked a question.""" start="00:05:48.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I see the question is about scrolling,""" start="00:05:50.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, exactly.""" start="00:05:51.820" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: right? Again, there's not much you can do in""" start="00:05:55.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""terms of trying to adjust the GC time.""" start="00:05:58.620" video="qanda-gc" id="subtitle"]]
+[[!template text="""I mean, if you make GCs less frequent,""" start="00:06:02.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""you increase the individual GC time.""" start="00:06:07.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""If you make them more frequent,""" start="00:06:08.860" video="qanda-gc" id="subtitle"]]
+[[!template text="""you decrease the individual GC time,""" start="00:06:11.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""but then they are more frequent.""" start="00:06:12.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""So what is the point? I think the way to go""" start="00:06:15.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""here is you can rise to see the short for the""" start="00:06:19.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""duration of scrolling,""" start="00:06:20.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""like just for a comment.""" start="00:06:22.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""I think it's a recommendation from Emacs""" start="00:06:26.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""devs. So like You do something along the""" start="00:06:31.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""lines.""" start="00:06:31.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah, I'm surely doing something on my screen""" start="00:06:53.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""and I forgot that I'm not sharing anything.""" start="00:06:55.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Exactly.""" start="00:06:56.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Simply something like this.""" start="00:07:00.700" video="qanda-gc" id="subtitle"]]
+[[!template text="""So, basically, if you have some command that""" start="00:07:08.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""is very important that it should run very""" start="00:07:10.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""quickly. You temporary increase that""" start="00:07:13.860" video="qanda-gc" id="subtitle"]]
+[[!template text="""threshold, you run that comment,""" start="00:07:15.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""then that's all. That's probably the best.""" start="00:07:19.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""So basically, the best you can do is to delay""" start="00:07:21.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""it after the command.""" start="00:07:23.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So afterwards, it takes a lot of time to do""" start="00:07:27.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""its stuff. OK. The third 1 has been already""" start="00:07:36.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""answered, but I just want to get your""" start="00:07:40.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""information from it. Opinions on the GCMH""" start="00:07:42.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""mode.""" start="00:07:43.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay. Yeah, I see that problem,""" start="00:07:48.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""but that's more like a technical problem.""" start="00:07:49.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""But there's another problem there.""" start="00:07:52.360" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah, I prepared a small snippet here.""" start="00:07:57.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""So if you look at the GCMH mode,""" start="00:08:02.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""it has this concept of low threshold and high""" start="00:08:05.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""threshold and most of the time it's running""" start="00:08:08.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""high threshold and then when Emacs is idle,""" start="00:08:14.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""it falls back to lower threshold and then it""" start="00:08:17.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""does the GC while Emacs is not used.""" start="00:08:19.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""That's a good idea, of course.""" start="00:08:22.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""That's the core idea of GCMH mode.""" start="00:08:24.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""Unfortunately, the most annoying GC is when""" start="00:08:30.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""you're actively using max.""" start="00:08:31.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""And then you have this huge value of GC""" start="00:08:37.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""counter show and look at the doc stream.""" start="00:08:38.799" video="qanda-gc" id="subtitle"]]
+[[!template text="""This would be sector value that makes GC""" start="00:08:41.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""unlikely but does not cost OSP Asian.""" start="00:08:43.980" video="qanda-gc" id="subtitle"]]
+[[!template text="""So yeah, no wonder like if you don't do GC,""" start="00:08:46.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""your arm usage will skyrocket.""" start="00:08:49.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""So they don't, they cannot put it too much,""" start="00:08:54.360" video="qanda-gc" id="subtitle"]]
+[[!template text="""but this is like already like,""" start="00:08:57.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""how much was it?""" start="00:08:59.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""1 gigabyte, that's the default.""" start="00:09:10.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""And the problem is when you have 1 gigabyte""" start="00:09:15.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""to garbage collect, it causes really long GC""" start="00:09:18.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""time. So in GC image mode,""" start="00:09:22.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you're actually using Emacs,""" start="00:09:23.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""really heavily, the GCs become terrible,""" start="00:09:28.860" video="qanda-gc" id="subtitle"]]
+[[!template text="""terribly slow. So it may help in case you""" start="00:09:34.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""don't have too much problems with GC,""" start="00:09:37.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""but I will say that in such situation,""" start="00:09:39.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""you can simply increase GC cost percentage,""" start="00:09:41.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""as I recommend, and it should do it.""" start="00:09:44.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""But in case of really big problems with""" start="00:09:48.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""garbage collection, no,""" start="00:09:50.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""I don't think that will help much.""" start="00:09:51.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""I used it myself and it didn't help much for""" start="00:09:54.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""my stuff.""" start="00:09:55.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right. The next question is concerning""" start="00:09:59.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""freeing up memory. Is there some way to free""" start="00:10:04.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""up memory such as via unload feature on""" start="00:10:07.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""Emacs? Often I only need a package loaded for""" start="00:10:09.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""a single task or short period by the""" start="00:10:12.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""persistent memory afterwards.""" start="00:10:13.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: So the packages are usually not that much of""" start="00:10:19.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""a problem. I mean, the libraries,""" start="00:10:22.060" video="qanda-gc" id="subtitle"]]
+[[!template text="""the problem is some extra,""" start="00:10:25.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""like some variable contents or some""" start="00:10:30.060" video="qanda-gc" id="subtitle"]]
+[[!template text="""histories, some caches.""" start="00:10:31.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""That's what's eating most of the memory.""" start="00:10:35.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""There is a package called memory usage and""" start="00:10:40.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""built in MX memory report.""" start="00:10:45.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""They allow to see which variables take a lot""" start="00:10:50.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""of memory. And that way you can try to see""" start="00:10:56.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""which packages are actually problematic.""" start="00:10:58.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""So for example, I recall,""" start="00:11:03.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""and that was not exactly,""" start="00:11:05.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""I remember there was a package that was""" start="00:11:09.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""literally in command line,""" start="00:11:11.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""like prompt history. I think it was in""" start="00:11:14.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""command. And when you do like,""" start="00:11:17.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you save every message in your chart""" start="00:11:20.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""into prompt history, that can grow very fast""" start="00:11:25.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""and can go to several hundred megabytes just""" start="00:11:29.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""in that history. And that can cause major""" start="00:11:31.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""problems. So, yes, profiling the largest""" start="00:11:37.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""variables with the largest buffers that might""" start="00:11:41.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""give some clues. Again,""" start="00:11:42.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""there is no silver bullet.""" start="00:11:43.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. I think the last question on the""" start="00:11:49.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""patterns. At first, very nice presentation.""" start="00:11:51.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I can""" start="00:11:51.620" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: also only agree with that.""" start="00:11:53.980" video="qanda-gc" id="subtitle"]]
+[[!template text="""I just experienced with a threshold and""" start="00:11:56.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""lowered my GCE lapse from 1.1""" start="00:11:58.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""to 0.06 seconds during startup.""" start="00:12:01.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""Interestingly, going to 10 megabytes""" start="00:12:03.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""increased the time. 4 megabytes was a sweet""" start="00:12:06.100" video="qanda-gc" id="subtitle"]]
+[[!template text="""spot for my system. What is the recommended""" start="00:12:07.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""way to lower the value back to the default""" start="00:12:10.840" video="qanda-gc" id="subtitle"]]
+[[!template text="""value after startup is completed?""" start="00:12:12.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think you just use after init hook.""" start="00:12:16.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: This was a relatively fast answer.""" start="00:12:23.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: So basically for example Doom does this,""" start="00:12:29.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""it temporary writes a gcconcert hold during""" start="00:12:31.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""startup and yeah after init hook the code is""" start="00:12:37.260" video="qanda-gc" id="subtitle"]]
+[[!template text="""like it's 1 of the commonly suggested""" start="00:12:39.880" video="qanda-gc" id="subtitle"]]
+[[!template text="""approaches and is I believe it's the right 1.""" start="00:12:43.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. To have joined us 1 was a microphone.""" start="00:12:49.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""So Peter, do you have any questions that you""" start="00:12:52.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""want to question? And maybe as a side note,""" start="00:12:55.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""we only have 4 minutes left and afterwards""" start="00:12:57.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""this happy weekend will still be open,""" start="00:12:59.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""but we will switch back to the talks.""" start="00:13:01.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, no more questions on garbage""" start="00:13:05.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""collection, but I just wanted to thank Ihor""" start="00:13:07.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""for his engagement in the community.""" start="00:13:10.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""And especially with, I'm a co-maintainer on""" start="00:13:15.300" video="qanda-gc" id="subtitle"]]
+[[!template text="""orgnotor and he's helped us a lot with""" start="00:13:17.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""getting us up to date with newer versions of""" start="00:13:21.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""org and stuff like that.""" start="00:13:22.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""So just wanted to thank you in person.""" start="00:13:24.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right.""" start="00:13:25.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Maybe 1 question for me,""" start="00:13:33.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""you had some bit talked about memory""" start="00:13:35.460" video="qanda-gc" id="subtitle"]]
+[[!template text="""fragmentation. So is there any way to or is""" start="00:13:40.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""it fixed by Emacs itself?""" start="00:13:42.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""So you have like""" start="00:13:43.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: a chunk of memory fragmentation is basically""" start="00:13:46.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""your OS. Yeah, Emacs releases the memory and""" start="00:13:51.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""then OS can rearrange it depending on the""" start="00:13:55.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""implementation of its memory manager.""" start="00:13:58.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, so the GC just releases it really and""" start="00:14:01.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""not so it could be that a mix is like""" start="00:14:04.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: doing it. You have like memory pages,""" start="00:14:07.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""right? Yeah. And you see,""" start="00:14:09.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""can release a part of this page just like""" start="00:14:12.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""here and there. And depending on the exact""" start="00:14:14.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""situation is your arm at each moment of time,""" start="00:14:17.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""or as may or may not be able to arrange""" start="00:14:20.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: so""" start="00:14:25.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: things. So, how the exact the data you cannot""" start="00:14:27.620" video="qanda-gc" id="subtitle"]]
+[[!template text="""really predict it. It really varies like you""" start="00:14:30.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""use Windows, you use Linux,""" start="00:14:31.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""you use like malloc, something else,""" start="00:14:33.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""but it has nothing to do with Emacs.""" start="00:14:36.260" video="qanda-gc" id="subtitle"]]
+[[!template text="""It's just something you have to deal with.""" start="00:14:38.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, but my question was in the way that we""" start="00:14:41.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""are giving the memory back to the operating""" start="00:14:43.460" video="qanda-gc" id="subtitle"]]
+[[!template text="""system, not just holding it as used and then""" start="00:14:46.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""to our own memory, like stuff as Emacs that""" start="00:14:49.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""we do not need to interact with the operating""" start="00:14:51.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. Emacs does not really hold anything.""" start="00:14:56.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: system. That was the question.""" start="00:14:59.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay. I was really hoping it does,""" start="00:15:01.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""but yeah, unfortunately,""" start="00:15:02.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""because nothing much can be done on Emacs.""" start="00:15:05.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. it's not Probably a lot faster if it's""" start="00:15:08.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""just holding it and when it needs more,""" start="00:15:10.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""then just get more from the OS.""" start="00:15:12.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: There are certain caveats,""" start="00:15:14.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""for example, there's something called image""" start="00:15:16.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""cache. And because Emacs stores images in""" start="00:15:20.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""uncompressed format, it can occupy quite a""" start="00:15:23.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""lot of memory. In particular,""" start="00:15:25.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you will like view PDFs,""" start="00:15:26.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""like you open 10, like 20 PDFs in 1 session,""" start="00:15:30.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""you may have like some image cache blowing""" start="00:15:33.460" video="qanda-gc" id="subtitle"]]
+[[!template text="""up, But that's not common for people.""" start="00:15:36.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So, guess we are on our time exactly.""" start="00:15:41.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""So in the next""" start="00:15:43.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think I was not exactly accurate.""" start="00:15:46.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""This 1 command, which is,""" start="00:15:49.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""I think, Nemax 30, is called a malloc trim.""" start="00:15:53.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""A max malloc trim. It's interactive.""" start="00:15:57.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""So that can help to release some memory.""" start="00:16:04.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""I think the way it works is like forces OS to""" start="00:16:08.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""make use of the released memory.""" start="00:16:12.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. That would be like,""" start="00:16:14.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""we are by the way, switch back to the next""" start="00:16:18.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""talk. But""" start="00:16:21.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: so basically what happens here is that OS may""" start="00:16:24.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""not release like, even Emacs says,""" start="00:16:27.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""okay, this memory is free,""" start="00:16:28.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""depending on the implementation,""" start="00:16:30.060" video="qanda-gc" id="subtitle"]]
+[[!template text="""I might think, okay, but I still hold that""" start="00:16:32.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""memory associated with Emacs just in case""" start="00:16:34.860" video="qanda-gc" id="subtitle"]]
+[[!template text="""Emacs needs more memories,""" start="00:16:35.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""and I can immediately put the data there""" start="00:16:38.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""without like more arrangement to allocate""" start="00:16:41.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""more. And this analog stream basically forces""" start="00:16:45.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""the OS to release it, like no matter what.""" start="00:16:48.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Because most people, when they are using""" start="00:16:52.360" video="qanda-gc" id="subtitle"]]
+[[!template text="""Emacs, I have the feeling they are only using""" start="00:16:54.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""Emacs. So it would be kind of interesting if""" start="00:16:56.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""you just take like, I don't know,""" start="00:16:57.880" video="qanda-gc" id="subtitle"]]
+[[!template text="""2 gigabytes or something of memory and Emacs""" start="00:17:00.060" video="qanda-gc" id="subtitle"]]
+[[!template text="""like does what it wants on that and the OS""" start="00:17:02.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""cannot really take it back.""" start="00:17:04.079" video="qanda-gc" id="subtitle"]]
+[[!template text="""This was my idea when I""" start="00:17:05.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: was So when you see 2 gigabytes in OS,""" start="00:17:08.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""it doesn't mean that OS cannot take it back.""" start="00:17:10.359" video="qanda-gc" id="subtitle"]]
+[[!template text="""It may still like allocate certain portion,""" start="00:17:13.859" video="qanda-gc" id="subtitle"]]
+[[!template text="""even technically free,""" start="00:17:15.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""but just for future. So this is where Malloc""" start="00:17:20.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""Dream works. It's like,""" start="00:17:22.339" video="qanda-gc" id="subtitle"]]
+[[!template text="""it says, yes, OS, I really not going to hold""" start="00:17:25.319" video="qanda-gc" id="subtitle"]]
+[[!template text="""this for this free memory.""" start="00:17:26.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""For sure. If you try this MX Malloc Gene,""" start="00:17:31.700" video="qanda-gc" id="subtitle"]]
+[[!template text="""you will see like a few times to hundreds of""" start="00:17:33.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""megabytes of read immediately.""" start="00:17:35.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Have a look when I have the time.""" start="00:17:38.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I""" start="00:17:41.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: guess if nobody has any questions,""" start="00:17:43.260" video="qanda-gc" id="subtitle"]]
+[[!template text="""I guess on the pad, there was Nothing else.""" start="00:17:45.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""I guess we can just close it.""" start="00:17:47.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""Thanks for the discussion.""" start="00:17:49.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""Thanks for answering the questions.""" start="00:17:50.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you for the great conference.""" start="00:17:56.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""And yeah, for your volunteer work.""" start="00:17:59.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""And yeah, for quietly panicking in the""" start="00:18:02.230" video="qanda-gc" id="subtitle"]]
+[[!template text="""background, right? Yeah,""" start="00:18:02.262" video="qanda-gc" id="subtitle"]]
+[[!template text="""I mean... You have to be quiet,""" start="00:18:02.337" video="qanda-gc" id="subtitle"]]
+[[!template text="""you're panicking in the background.""" start="00:18:02.560" video="qanda-gc" id="subtitle"]]
+
Questions or comments? Please e-mail [yantar92@posteo.net](mailto:yantar92@posteo.net?subject=Comment%20for%20EmacsConf%202023%20gc%3A%20emacs-gc-stats%3A%20Does%20garbage%20collection%20actually%20slow%20down%20Emacs%3F)