Hi Igor

Just to clarify:

>> I grepped the logs for "checksum mismatch" and "_verify_csum". The only
>> occurrences I could find where the ones that preceed the crashes.
> 
> Are you able to find multiple _verify_csum precisely?

There are no “_verify_csum” entries whatsoever. I wrote that wrongly.
I could only find “checksum mismatch” right when the crash happens.

Sorry for the confusion.

I will keep tracking those counters and have a look at monitor/osd memory 
tracking.

Cheers,

Denis

> On 27 Aug 2020, at 13:39, Igor Fedotov <ifedo...@suse.de> wrote:
> 
> Hi Denis
> 
> please see my comments inline.
> 
> 
> Thanks,
> 
> Igor
> 
> On 8/27/2020 10:06 AM, Denis Krienbühl wrote:
>> Hi Igor,
>> 
>> Thanks for your input. I tried to gather as much information as I could to
>> answer your questions. Hopefully we can get to the bottom of this.
>> 
>>> 0) What is backing disks layout for OSDs in question (main device type?, 
>>> additional DB/WAL devices?).
>> Everything is on a single Intel NVMe P4510 using dmcrypt with 2 OSDs per NVMe
>> device. There is no additional DB/WAL device and there are no HDDs involved.
>> 
>> Also note that we use 40 OSDs per host with a memory target of 6'174'015'488.
>> 
>>> 1) Please check all the existing logs for OSDs at "failing" nodes for other 
>>> checksum errors (as per my comment #38)
>> I grepped the logs for "checksum mismatch" and "_verify_csum". The only
>> occurrences I could find where the ones that preceed the crashes.
> 
> Are you able to find multiple _verify_csum precisely?
> 
> If so this means data read failures were observed at user data not RocksDB 
> one. Which backs the hypothesis about interim  disk read
> 
> errors as a root cause. User data reading has quite a different access stack 
> and is able to retry after such errors hence they aren't that visible.
> 
> But having checksum failures for both DB and user data points to the same 
> root cause at lower layers (kernel, I/O stack etc).
> 
> It might be interesting whether _verify_csum and RocksDB csum were happening 
> nearly at the same period of time. Not even for a single OSD but for 
> different OSDs of the same node.
> 
> This might indicate that node was suffering from some decease at that time. 
> Anything suspicious from system-wide logs for this time period?
> 
>> 
>>> 2) Check if BlueFS spillover is observed for any failing OSDs.
>> As everything is on the same device, there can be no spillover, right?
> Right
>> 
>>> 3) Check "bluestore_reads_with_retries" performance counters for all OSDs 
>>> at nodes in question. See comments 38-42 on the details. Any non-zero 
>>> values?
>> I monitored this over night by repeatedly polling this performance counter 
>> over
>> all OSDs on the mons. Only one OSD, which has crashed in the past, has had a
>> value of 1 since I started measuring. All the other OSDs, including the ones
>> that crashed over night, have a value of 0. Before and after the crash.
> 
> Even a single occurrence isn't expected - this counter should always be equal 
> to 0. And presumably these are peak hours when the cluster is exposed to the 
> issue at most. Night is likely to be not the the peak period though. So 
> please keep tracking...
> 
> 
>> 
>>> 4) Start monitoring RAM usage and swapping for these nodes. Comment 39.
>> The memory use of those nodes is pretty constant with ~6GB free, ~25GB 
>> availble of 256GB.
>> There are also only a handful of pages being swapped, if at all.
>> 
>>> a hypothesis why mon hosts are affected only  - higher memory utilization 
>>> at these nodes is what causes disk reading failures to appear. RAM leakage 
>>> (or excessive utilization) in MON processes or something?
>> Since the memory usage is rather constant I'm not sure this is the case, I 
>> think
>> we would see more of an up/down pattern. However we are not yet monitoring 
>> all
>> processes, and that would be somthing I'd like to get some data on, but I'm 
>> not
>> sure this is the right course of action at the moment.
> 
> Given the fact that colocation with monitors is probably the clue - suggest 
> to track  MON and OSD process at least.
> 
> And high memory pressure is just a working hypothesis for these disk failures 
> root cause. Something else (e.g. high disk utilization) might be another 
> trigger or it might just be wrong...
> 
> So please just pay some attention to this.
> 
>> 
>> What do you think, is it still plausible that we see a memory utilization
>> problem, even though there's little variance in the memory usage patterns?
>> 
>> The approaches we currently consider is to upgrade our kernel and to lower 
>> the memory
>> target somewhat.
>> 
>> Cheers,
>> 
>> Denis
>> 
>> 
>>> On 26 Aug 2020, at 15:29, Igor Fedotov <ifedo...@suse.de> wrote:
>>> 
>>> Hi Denis,
>>> 
>>> this reminds me the following ticket: https://tracker.ceph.com/issues/37282
>>> 
>>> Please note they mentioned co-location with mon in comment #29.
>>> 
>>> 
>>> Working hypothesis for this ticket is the interim disk read failures which 
>>> cause RocksDB checksum failures. Earlier we observed such a problem for 
>>> main device. Presumably it's heavy memory pressure which causes kernel to 
>>> be failing this way.  See my comment #38 there.
>>> 
>>> So I'd like to see answers/comments for the following questions:
>>> 
>>> 0) What is backing disks layout for OSDs in question (main device type?, 
>>> additional DB/WAL devices?).
>>> 
>>> 1) Please check all the existing logs for OSDs at "failing" nodes for other 
>>> checksum errors (as per my comment #38)
>>> 
>>> 2) Check if BlueFS spillover is observed for any failing OSDs.
>>> 
>>> 3) Check "bluestore_reads_with_retries" performance counters for all OSDs 
>>> at nodes in question. See comments 38-42 on the details. Any non-zero 
>>> values?
>>> 
>>> 4) Start monitoring RAM usage and swapping for these nodes. Comment 39.
>>> 
>>> 
>>> Thanks,
>>> 
>>> Igor
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On 8/26/2020 3:47 PM, Denis Krienbühl wrote:
>>>> Hi!
>>>> 
>>>> We've recently upgraded all our clusters from Mimic to Octopus (15.2.4). 
>>>> Since
>>>> then, our largest cluster is experiencing random crashes on OSDs attached 
>>>> to the
>>>> mon hosts.
>>>> 
>>>> This is the crash we are seeing (cut for brevity, see links in post 
>>>> scriptum):
>>>> 
>>>>    {
>>>>        "ceph_version": "15.2.4",
>>>>        "utsname_release": "4.15.0-72-generic",
>>>>        "assert_condition": "r == 0",
>>>>        "assert_func": "void 
>>>> BlueStore::_txc_apply_kv(BlueStore::TransContext*, bool)",
>>>>        "assert_file": "/build/ceph-15.2.4/src/os/bluestore/BlueStore.cc 
>>>> <http://bluestore.cc/>",
>>>>        "assert_line": 11430,
>>>>        "assert_thread_name": "bstore_kv_sync",
>>>>        "assert_msg": "/build/ceph-15.2.4/src/os/bluestore/BlueStore.cc 
>>>> <http://bluestore.cc/>: In function 'void 
>>>> BlueStore::_txc_apply_kv(BlueStore::TransContext*, bool)' thread 
>>>> 7fc56311a700 time 
>>>> 2020-08-26T08:52:24.917083+0200\n/build/ceph-15.2.4/src/os/bluestore/BlueStore.cc
>>>>  <http://bluestore.cc/>: 11430: FAILED ceph_assert(r == 0)\n",
>>>>        "backtrace": [
>>>>            "(()+0x12890) [0x7fc576875890]",
>>>>            "(gsignal()+0xc7) [0x7fc575527e97]",
>>>>            "(abort()+0x141) [0x7fc575529801]",
>>>>            "(ceph::__ceph_assert_fail(char const*, char const*, int, char 
>>>> const*)+0x1a5) [0x559ef9ae97b5]",
>>>>            "(ceph::__ceph_assertf_fail(char const*, char const*, int, char 
>>>> const*, char const*, ...)+0) [0x559ef9ae993f]",
>>>>            "(BlueStore::_txc_apply_kv(BlueStore::TransContext*, 
>>>> bool)+0x3a0) [0x559efa0245b0]",
>>>>            "(BlueStore::_kv_sync_thread()+0xbdd) [0x559efa07745d]",
>>>>            "(BlueStore::KVSyncThread::entry()+0xd) [0x559efa09cd3d]",
>>>>            "(()+0x76db) [0x7fc57686a6db]",
>>>>            "(clone()+0x3f) [0x7fc57560a88f]"
>>>>        ]
>>>>    }
>>>> 
>>>> Right before the crash occurs, we see the following message in the crash 
>>>> log:
>>>> 
>>>>        -3> 2020-08-26T08:52:24.787+0200 7fc569b2d700  2 rocksdb: 
>>>> [db/db_impl_compaction_flush.cc:2212 
>>>> <http://db_impl_compaction_flush.cc:2212/>] Waiting after background 
>>>> compaction error: Corruption: block checksum mismatch: expected 
>>>> 2548200440, got 2324967102  in db/815839.sst offset 67107066 size 3808, 
>>>> Accumulated background error counts: 1
>>>>        -2> 2020-08-26T08:52:24.852+0200 7fc56311a700 -1 rocksdb: 
>>>> submit_common error: Corruption: block checksum mismatch: expected 
>>>> 2548200440, got 2324967102  in db/815839.sst offset 67107066 size 3808 
>>>> code = 2 Rocksdb transaction:
>>>> 
>>>> In short, we see a Rocksdb corruption error after background compaction, 
>>>> when this happens.
>>>> 
>>>> When an OSD crashes, which happens about 10-15 times a day, it restarts and
>>>> resumes work without any further problems.
>>>> 
>>>> We are pretty confident that this is not a hardware issue, due to the 
>>>> following facts:
>>>> 
>>>> * The crashes occur on 5 different hosts over 3 different racks.
>>>> * There is no smartctl/dmesg output that could explain it.
>>>> * It usually happens to a different OSD that did not crash before.
>>>> 
>>>> Still we checked the following on a few OSDs/hosts:
>>>> 
>>>> * We can do a manual compaction, both offline and online.
>>>> * We successfully ran "ceph-bluestore-tool fsck --deep yes" on one of the 
>>>> OSDs.
>>>> * We manually compacted a number of OSDs, one of which crashed hours later.
>>>> 
>>>> The only thing we have noticed so far: It only happens to OSDs that are 
>>>> attached
>>>> to a mon host. *None* of the non-mon host OSDs have had a crash!
>>>> 
>>>> Does anyone have a hint what could be causing this? We currently have no 
>>>> good
>>>> theory that could explain this, much less have a fix or workaround.
>>>> 
>>>> Any help would be greatly appreciated.
>>>> 
>>>> Denis
>>>> 
>>>> Crash: 
>>>> https://public-resources.objects.lpg.cloudscale.ch/osd-crash/meta.txt 
>>>> <https://public-resources.objects.lpg.cloudscale.ch/osd-crash/meta.txt>
>>>> Log: https://public-resources.objects.lpg.cloudscale.ch/osd-crash/log.txt 
>>>> <https://public-resources.objects.lpg.cloudscale.ch/osd-crash/log.txt>
>>>> 
>>>> _______________________________________________
>>>> 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 <mailto:ceph-users@ceph.io>
> To unsubscribe send an email to ceph-users-le...@ceph.io 
> <mailto:ceph-users-le...@ceph.io>
_______________________________________________
ceph-users mailing list -- ceph-users@ceph.io
To unsubscribe send an email to ceph-users-le...@ceph.io

Reply via email to