-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Detect a slow raidz child during reads #17227
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Because there will be a little bouncing between two PRs, and because there's two different authors involved, I'll be pushing fixup commits to this branch. Once everyone is happy with review, I will squash them down for merge. I'll close out the remaining review comments on #16900, and would like it if new comments could be added here. Thanks all for your patience; I know its a bit fiddly (it'd be nicer if Github would allow a PR to change branches, alas). |
905c466
to
4a1a3d3
Compare
I haven't looked into it, but I see all the FreeBSD runners have:
|
@robn this fixed the FreeBSD CI errors for me: tonyhutter@a491397. Try squashing that in and rebasing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for picking up this work! It'd be great if we can refine this a bit more and get it integrated.
tests/zfs-tests/tests/functional/replacement/attach_resilver_sit_out.ksh
Show resolved
Hide resolved
83d0de9
to
6fa275b
Compare
I've updated this branch to fix a few things. First, I've significantly reduced (hopefully eliminated almost entirely) the unnecessary sit-outs Brian was reporting. We reproduced them internally during our performance testing and the updated version doesn't display them at all. The changes here are to use the latency histogram stats instead of the EWMA as a better source of data. We also decrease the check frequency dramatically to reduce noise, decrease the number of outliers to compensate (along with adding a facility for extreme events to increase their outlier count more rapidly), increase the fence value significantly, and add a decay mechanism to prevent random noise from eventually causing a sit-out of healthy disks. Second, I've added an Third, I've made the sitout property writeable. This allows individual vdevs to be sat out from userland. This, in conjunction with the autosit property, allows the user to decide if they want no disk sit-outs, the kernel's automatic sit-outs, or to do something more complex. Using zpool iostat latency data, SMART stats, or any other data source they can think of, they could now create a userland daemon that monitors disk health and sits out disks that it feels are unhealthy. Giving the capability to this in userland has a number of advantages: easier access to high-level languages and their rich libraries, more safe and rapid iteration of complex logic, and the ability to improve the logic using new developments and advanced approaches without requiring a kernel upgrade or downtime. The kernel functionality is left in place as a simple plug-and-play approach. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree that histograms should indeed be a better source of data, comparing to EWMA, except as I mention below, we may take a closer look when we update the previous state. Same time, I wonder if histograms may actually give us even more statistical information about the distribution curves, so that we could better estimate the confidence interval on a small number of disks.
e620961
to
9138823
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given the amount of churn in this PR it'd be nice to squash the commits the next time it's updated.
b4ad263
to
7013cb6
Compare
8b741cd
to
0e3ae43
Compare
0e3ae43
to
56cc562
Compare
713ac04
to
afbd724
Compare
11e6837
to
611d87b
Compare
397c375
to
4ed592e
Compare
a33ff6c
to
6b529ac
Compare
Signed-off-by: Paul Dagnelie <[email protected]>
A single slow responding disk can affect the overall read performance of a raidz group. When a raidz child disk is determined to be a persistent slow outlier, then have it sit out during reads for a period of time. The raidz group can use parity to reconstruct the data that was skipped. Each time a slow disk is placed into a sit out period, its `vdev_stat.vs_slow_ios count` is incremented and a zevent class `ereport.fs.zfs.delay` is posted. The length of the sit out period can be changed using the `raid_read_sit_out_secs` module parameter. Setting it to zero disables slow outlier detection. Sponsored-by: Klara, Inc. Sponsored-by: Wasabi Technology, Inc. Signed-off-by: Paul Dagnelie <[email protected]> Contributions-by: Don Brady <[email protected]> Contributions-by: Brian Behlendorf <[email protected]>
6b529ac
to
97393b1
Compare
@pcd1193182 thanks for picking up this often-dropped PR and getting it over the line. Thanks all for the feedback! |
Motivation and Context
Replacing #16900, which was almost finished with review updates but has stalled. I've been asked to take it over.
See original PR for details.
Types of changes
Checklist:
Signed-off-by
.