Project

General

Profile

Actions

Bug #44916

closed

client: syncfs flush is only fast with a single MDS

Added by Greg Farnum about 4 years ago. Updated 5 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Performance/Resource Usage
Target version:
% Done:

0%

Source:
Tags:
backport_processed
Backport:
pacific
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(FS):
Client
Labels (FS):
task(easy)
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

When we invoke Client::syncfs, we call into flush_caps_sync() and that invokes check_caps() for everything dirty, adding the internal flag CHECK_CAPS_SYNCHRONOUS to the last dirty cap in the list. check_caps() will set FLAG_SYNC on the MClientCaps message in that case.

But that method only sends the FLAG_SYNC on a single MDS session, and if we have dirty data for more than one MDS we will have to wait for all of them to decide to commit to disk! This may syncfs() quite slow on scale-out clusters.


Related issues 2 (0 open2 closed)

Related to CephFS - Bug #44988: client: track dirty inodes in a per-session list for effective cap flushingDuplicateXiubo Li

Actions
Copied to CephFS - Backport #62916: pacific: client: syncfs flush is only fast with a single MDSResolvedXiubo LiActions
Actions

Also available in: Atom PDF