Bug #53459
closedBug #40002: mds: not trim log under heavy load
mds: start a new MDLog segment if new coming event possibly exceeds the expected segment size
0%
Description
The following is one example of the mds side logs:
59051 2021-12-02T13:29:13.087+0800 154d2ff24700 5 mds.0.log _submit_thread 60430327~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59052 2021-12-02T13:29:13.087+0800 154d2ff24700 5 mds.0.log _submit_thread 60431219~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59053 2021-12-02T13:29:13.088+0800 154d2ff24700 5 mds.0.log _submit_thread 60444624~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59054 2021-12-02T13:29:13.088+0800 154d2ff24700 5 mds.0.log _submit_thread 60445516~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59055 2021-12-02T13:29:13.088+0800 154d2ff24700 5 mds.0.log _submit_thread 60458921~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59056 2021-12-02T13:29:13.088+0800 154d2ff24700 5 mds.0.log _submit_thread 60459813~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59057 2021-12-02T13:29:13.088+0800 154d2ff24700 5 mds.0.log _submit_thread 60473218~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59058 2021-12-02T13:29:13.088+0800 154d2ff24700 5 mds.0.log _submit_thread 60474110~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59059 2021-12-02T13:29:13.088+0800 154d2ff24700 5 mds.0.log _submit_thread 60487515~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59060 2021-12-02T13:29:13.089+0800 154d2ff24700 5 mds.0.log _submit_thread 60488407~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59061 2021-12-02T13:29:13.089+0800 154d2ff24700 5 mds.0.log _submit_thread 60501812~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59062 2021-12-02T13:29:13.089+0800 154d2ff24700 5 mds.0.log _submit_thread 60502704~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59063 2021-12-02T13:29:13.089+0800 154d2ff24700 5 mds.0.log _submit_thread 60516109~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59064 2021-12-02T13:29:13.089+0800 154d2ff24700 5 mds.0.log _submit_thread 60517001~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59065 2021-12-02T13:29:13.089+0800 154d2ff24700 5 mds.0.log _submit_thread 60530406~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59066 2021-12-02T13:29:13.089+0800 154d2ff24700 5 mds.0.log _submit_thread 60531298~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59067 2021-12-02T13:29:13.090+0800 154d2ff24700 5 mds.0.log _submit_thread 60544703~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59068 2021-12-02T13:29:13.090+0800 154d2ff24700 5 mds.0.log _submit_thread 60545595~13385 : EUpdate cap update [metablob 0x1, 1 dirs] 59069 2021-12-02T13:29:13.090+0800 154d2ff24700 5 mds.0.log _submit_thread 60559000~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59070 2021-12-02T13:29:13.090+0800 154d2ff24700 5 mds.0.log _submit_thread 60559892~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59071 2021-12-02T13:29:13.090+0800 154d2ff24700 5 mds.0.log _submit_thread 60573298~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59072 2021-12-02T13:29:13.090+0800 154d2ff24700 5 mds.0.log _submit_thread 60574190~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59073 2021-12-02T13:29:13.090+0800 154d2ff24700 5 mds.0.log _submit_thread 60587596~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59074 2021-12-02T13:29:13.091+0800 154d2ff24700 5 mds.0.log _submit_thread 60588488~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59075 2021-12-02T13:29:13.091+0800 154d2ff24700 5 mds.0.log _submit_thread 60601894~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59076 2021-12-02T13:29:13.091+0800 154d2ff24700 5 mds.0.log _submit_thread 60602786~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59077 2021-12-02T13:29:13.091+0800 154d2ff24700 5 mds.0.log _submit_thread 60616192~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59078 2021-12-02T13:29:13.091+0800 154d2ff24700 5 mds.0.log _submit_thread 60617084~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59079 2021-12-02T13:29:13.091+0800 154d2ff24700 5 mds.0.log _submit_thread 60630490~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59080 2021-12-02T13:29:13.091+0800 154d2ff24700 5 mds.0.log _submit_thread 60631382~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59081 2021-12-02T13:29:13.091+0800 154d2ff24700 5 mds.0.log _submit_thread 60644788~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59082 2021-12-02T13:29:13.092+0800 154d2ff24700 5 mds.0.log _submit_thread 60645680~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59083 2021-12-02T13:29:13.092+0800 154d2ff24700 5 mds.0.log _submit_thread 60659086~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59084 2021-12-02T13:29:13.092+0800 154d2ff24700 5 mds.0.log _submit_thread 60659978~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59085 2021-12-02T13:29:13.092+0800 154d2ff24700 5 mds.0.log _submit_thread 60673384~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59086 2021-12-02T13:29:13.092+0800 154d2ff24700 5 mds.0.log _submit_thread 60674276~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59087 2021-12-02T13:29:13.092+0800 154d2ff24700 5 mds.0.log _submit_thread 60687682~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59088 2021-12-02T13:29:13.093+0800 154d2ff24700 5 mds.0.log _submit_thread 60688574~13386 : EUpdate cap update [metablob 0x1, 1 dirs] 59089 2021-12-02T13:29:13.093+0800 154d2ff24700 5 mds.0.log _submit_thread 60701980~872 : ESubtreeMap 2 subtrees , 0 ambiguous [metablob 0x1, 2 dirs] 59090 2021-12-02T13:29:13.093+0800 154d2ff24700 5 mds.0.log _submit_thread 60702872~13386 : EUpdate cap update [metablob 0x1, 1 dirs]
I believe in some cases, such a very large directory case, the log event size could be larger than '13386' as above, possibly 100KB ? If so, the real segment size could reach to 128 * 100KB = 12MB, while the expected segment size is 4M, the default Rados object's size, as default. The possible worst case is that if the MDLog:_submit_thread() is stuck or delayed for some reasons, the real segment size could be very large, like 100GB or so in overload case.
Updated by Xiubo Li over 2 years ago
- Status changed from In Progress to Fix Under Review
- Pull request ID set to 44180
Updated by Xiubo Li over 2 years ago
Yeah, by creating a number of directories and set the distributed pin on each of them, the ESubtreeMap event can reach up to 100+ KB.
2021-12-08T09:41:52.822+0800 1510f1a34700 5 mds.0.log _submit_thread 178819473~111201 : ESubtreeMap 88 subtrees , 86 ambiguous [metablob 0x1, 129 dirs]
Updated by Xiubo Li over 2 years ago
- Status changed from Fix Under Review to Won't Fix
Will fix it in another tracker https://tracker.ceph.com/issues/53623. Closing this one.