Hi Dan and Mark, could you please let me know if you can read the files with the version info I provided in my previous e-mail? I'm in the process of collecting data with more FS activity and would like to send it in a format that is useful for investigation.
Right now I'm observing a daily growth of swap of ca. 100-200MB on servers with 16 OSDs each, 1SSD and 15HDDs. The OS+daemons operate fine, the OS manages to keep enough RAM available. Also the mempool dump still shows onode and data cached at a seemingly reasonable level. Users report a more stable performance of the FS after I increased the cach min sizes on all OSDs. Best regards, ================= Frank Schilder AIT Risø Campus Bygning 109, rum S14 ________________________________________ From: Frank Schilder <fr...@dtu.dk> Sent: 17 August 2020 09:37 To: Dan van der Ster Cc: ceph-users Subject: [ceph-users] Re: OSD memory leak? Hi Dan, I use the container docker.io/ceph/daemon:v3.2.10-stable-3.2-mimic-centos-7-x86_64. As far as I can see, it uses the packages from http://download.ceph.com/rpm-mimic/el7, its a Centos 7 build. The version is: # ceph -v ceph version 13.2.8 (5579a94fafbc1f9cc913a0f5d362953a5d9c3ae0) mimic (stable) On Centos, the profiler packages are called different, without the "google-" prefix. The version I have installed is # pprof --version pprof (part of gperftools 2.0) Copyright 1998-2007 Google Inc. This is BSD licensed software; see the source for copying conditions and license information. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is possible to install pprof inside this container and analyse the *.heap-files I provided. If this doesn't work for you and you want me to generate the text output for heap-files, I can do that. Please let me know if I should do all files and with what option (eg. against a base etc.). Best regards, ================= Frank Schilder AIT Risø Campus Bygning 109, rum S14 ________________________________________ From: Dan van der Ster <d...@vanderster.com> Sent: 14 August 2020 10:38:57 To: Frank Schilder Cc: Mark Nelson; ceph-users Subject: Re: [ceph-users] Re: OSD memory leak? Hi Frank, I'm having trouble getting the exact version of ceph you used to create this heap profile. Could you run the google-pprof --text steps at [1] and share the output? Thanks, Dan [1] https://docs.ceph.com/docs/master/rados/troubleshooting/memory-profiling/ On Tue, Aug 11, 2020 at 2:37 PM Frank Schilder <fr...@dtu.dk> wrote: > > Hi Mark, > > here is a first collection of heap profiling data (valid 30 days): > > https://files.dtu.dk/u/53HHic_xx5P1cceJ/heap_profiling-2020-08-03.tgz?l > > This was collected with the following config settings: > > osd dev osd_memory_cache_min > 805306368 > osd basic osd_memory_target > 2147483648 > > Setting the cache_min value seems to help keeping cache space available. > Unfortunately, the above collection is for 12 days only. I needed to restart > the OSD and will need to restart it soon again. I hope I can then run a > longer sample. The profiling does cause slow ops though. > > Maybe you can see something already? It seems to have collected some leaked > memory. Unfortunately, it was a period of extremely low load. Basically, with > the day of recording the utilization dropped to almost zero. > > Best regards, > ================= > Frank Schilder > AIT Risø Campus > Bygning 109, rum S14 > > ________________________________________ > From: Frank Schilder <fr...@dtu.dk> > Sent: 21 July 2020 12:57:32 > To: Mark Nelson; Dan van der Ster > Cc: ceph-users > Subject: [ceph-users] Re: OSD memory leak? > > Quick question: Is there a way to change the frequency of heap dumps? On this > page http://goog-perftools.sourceforge.net/doc/heap_profiler.html a function > HeapProfilerSetAllocationInterval() is mentioned, but no other way of > configuring this. Is there a config parameter or a ceph daemon call to adjust > this? > > If not, can I change the dump path? > > Its likely to overrun my log partition quickly if I cannot adjust either of > the two. > > Best regards, > ================= > Frank Schilder > AIT Risø Campus > Bygning 109, rum S14 > > ________________________________________ > From: Frank Schilder <fr...@dtu.dk> > Sent: 20 July 2020 15:19:05 > To: Mark Nelson; Dan van der Ster > Cc: ceph-users > Subject: [ceph-users] Re: OSD memory leak? > > Dear Mark, > > thank you very much for the very helpful answers. I will raise > osd_memory_cache_min, leave everything else alone and watch what happens. I > will report back here. > > Thanks also for raising this as an issue. > > Best regards, > ================= > Frank Schilder > AIT Risø Campus > Bygning 109, rum S14 > > ________________________________________ > From: Mark Nelson <mnel...@redhat.com> > Sent: 20 July 2020 15:08:11 > To: Frank Schilder; Dan van der Ster > Cc: ceph-users > Subject: Re: [ceph-users] Re: OSD memory leak? > > On 7/20/20 3:23 AM, Frank Schilder wrote: > > Dear Mark and Dan, > > > > I'm in the process of restarting all OSDs and could use some quick advice > > on bluestore cache settings. My plan is to set higher minimum values and > > deal with accumulated excess usage via regular restarts. Looking at the > > documentation > > (https://docs.ceph.com/docs/mimic/rados/configuration/bluestore-config-ref/), > > I find the following relevant options (with defaults): > > > > # Automatic Cache Sizing > > osd_memory_target {4294967296} # 4GB > > osd_memory_base {805306368} # 768MB > > osd_memory_cache_min {134217728} # 128MB > > > > # Manual Cache Sizing > > bluestore_cache_meta_ratio {.4} # 40% ? > > bluestore_cache_kv_ratio {.4} # 40% ? > > bluestore_cache_kv_max {512 * 1024*1024} # 512MB > > > > Q1) If I increase osd_memory_cache_min, should I also increase > > osd_memory_base by the same or some other amount? > > > osd_memory_base is a hint at how much memory the OSD could consume > outside the cache once it's reached steady state. It basically sets a > hard cap on how much memory the cache will use to avoid over-committing > memory and thrashing when we exceed the memory limit. It's not necessary > to get it right, it just helps smooth things out by making the automatic > memory tuning less aggressive. IE if you have a 2 GB memory target and > a 512MB base, you'll never assign more than 1.5GB to the cache on the > assumption that the rest of the OSD will eventually need 512MB to > operate even if it's not using that much right now. I think you can > probably just leave it alone. What you and Dan appear to be seeing is > that this number isn't static in your case but increases over time any > way. Eventually I'm hoping that we can automatically account for more > and more of that memory by reading the data from the mempools. > > > Q2) The cache ratio options are shown under the section "Manual Cache > > Sizing". Do they also apply when cache auto tuning is enabled? If so, is it > > worth changing these defaults for higher values of osd_memory_cache_min? > > > They actually do have an effect on the automatic cache sizing and > probably shouldn't only be under the manual section. When you have the > automatic cache sizing enabled, those options will affect the "fair > share" values of the different caches at each cache priority level. IE > at priority level 0, if both caches want more memory than is available, > those ratios will determine how much each cache gets. If there is more > memory available than requested, each cache gets as much as they want > and we move on to the next priority level and do the same thing again. > So in this case the ratios end up being sort of more like fallback > settings for when you don't have enough memory to fulfill all cache > requests at a given priority level, but otherwise are not utilized until > we hit that limit. The goal with this scheme is to make sure that "high > priority" items in each cache get first dibs at the memory even if it > might skew the ratios. This might be things like rocksdb bloom filters > and indexes, or potentially very recent hot items in one cache vs very > old items in another cache. The ratios become more like guidelines than > hard limits. > > > When you change to manual mode, you set an overall bluestore cache size > and each cache gets a flat percentage of it based on the ratios. With > 0.4/0.4 you will always have 40% for onode, 40% for omap, and 20% for > data even if one of those caches does not use all of it's memory. > > > > > > Many thanks for your help with this. I can't find answers to these > > questions in the docs. > > > > There might be two reasons for high osd_map memory usage. One is, that our > > OSDs seem to hold a large number of OSD maps: > > > I brought this up in our core team standup last week. Not sure if > anyone has had time to look at it yet though. > _______________________________________________ > ceph-users mailing list -- ceph-users@ceph.io > To unsubscribe send an email to ceph-users-le...@ceph.io > _______________________________________________ > ceph-users mailing list -- ceph-users@ceph.io > To unsubscribe send an email to ceph-users-le...@ceph.io _______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-le...@ceph.io _______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-le...@ceph.io