Skip to content

Commit 360c8a4

Browse files
authored
[Filestore] implement availability counters for FUSE requests (#6826)
### Notes A Shared Filesystem is considered **unavailable** during any `N-minute` interval in which, for at least one filesystem request type, at least one request was **outstanding** and every such request either failed with an **EIO** error, or **hung**. **Note**: A request submitted during an interval and still outstanding when the interval ends is not classified for that interval. It does not contribute to determining whether the interval is available or unavailable In all `N-minute` intervals in which the unavailability condition is not met, a Shared Filesystem is considered **available**. Shared Filesystem availability for the measurement period shall be calculated as: Number of `N-minute` intervals in which the Shared Filesystem was Available / Total number of `N-minute` intervals in the measurement period × 100% ### Definitions A request is **outstanding** at a given point in time if it was submitted but had received no response, success or error, by that point. A request is **hung** if it was **outstanding** for the entire duration of the `N-minute` interval. Request type - a category of filesystem operation, Fuse request types: ``` readdir readdirplus opendir releasedir lookup getattr setattr write write_buf read open create release mkdir rmdir unlink rename link symlink readlink flush fsync ``` EIO error - POSIX EIO error code (see https://man7.org/linux/man-pages/man3/errno.3.html) ### Issue #6825
1 parent bdb2af8 commit 360c8a4

23 files changed

Lines changed: 2220 additions & 38 deletions

cloud/filestore/config/filesystem.proto

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,10 @@ message TFileSystemConfig
127127

128128
// Async processing of read-only create handle requests.
129129
optional bool AsyncCreateHandleEnabled = 37;
130+
131+
// Enables the per-client filesystem availability tracking.
132+
optional bool AvailabilityTrackingEnabled = 38;
133+
134+
// Availability interval duration (in ms); 0 means the default.
135+
optional uint32 AvailabilityTrackingInterval = 39;
130136
}

cloud/filestore/config/storage.proto

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -896,4 +896,10 @@ message TStorageConfig
896896

897897
// Sets the time after which latency of a node + request tuple will decrease by half.
898898
optional uint32 NodeLatencyHalfLife = 538; // measured in ms
899+
900+
// Enables the per-client filesystem availability tracking on the guest.
901+
optional bool AvailabilityTrackingEnabled = 539;
902+
903+
// Availability interval duration (in ms); 0 means the default.
904+
optional uint32 AvailabilityTrackingInterval = 540;
899905
}

0 commit comments

Comments
 (0)