By: --- (---.delete@this.redheron.com), January 14, 2022 6:39 pm
Room: Moderated Discussions
Do Linux or Windows have mechanisms to provide more-or-less guaranteed IO-scheduling? And how well does it work?
I discovered something interesting about this in the latest macOSX 12:
Apple has had API's to set the QoS for IO scheduling for years now, the equivalent of ionice. But they weren't hooked up, or weren't aggressive enough, or whatever.
For example if you were recording audio to a *hard drive* that was also doing other things (most obvious case being a machine with a single hard drive that's also running the OS, and you have recording in the background while you do something in the foreground) you would suffer dropouts. Not catastrophic, not unusable, but very definitely present, enough so that you'd internalize "if I'm recording audio, don't do anything else" as standard procedure.
(I use audio as an example because it's not especially demanding of bandwidth, meaning you can buffer a good deal in DRAM; even so you still have this as an issue.)
As of macOSX 12 this seems to have changed, so that IO priorities are now aggressively enforced.
On the plus side, this means the high priority items (generally recording) seem bulletproof, and it's freaking amazing compared to what it used to be.
On the negative side, as anyone with experience in queueing or scheduling or realtime could have told you, damn, if you are not in the highest priority band you hurt! Ensuring that you cannot inadvertently *ever* steal away a problematic number of IOp's from the hard drive and the higher priority app means you get very few IOps.
I don't know how this is hooked up to SSDs (it probably is, but seeing it would require careful instrumentation, whereas seeing it kick in for HDs simply requires looking at a graph of bandwidth!).
Two obvious "conflict" cases are a recording app (which uses the appropriate APIs) vs normal usage, or normal usage vs Time Machine backups (which are low priority IO).
So I mention this all because I'm curious how this plays out in other OS's. I don't want to start a war here; I have no reason to believe that Apple's implementation is especially good or especially bad. I'm just curious if anyone else takes realtime seriously enough to bother getting this right (after all even Apple only got it right in the current OS, right at the point where it barely matters any more given SSDs...)
It's a tricky problem because doing it correctly (for the apps that care) has such extreme effects on the rest of the system, and this seems the kind of thing I'd have heard people grumbling about in the Windows or Linux context.
I discovered something interesting about this in the latest macOSX 12:
Apple has had API's to set the QoS for IO scheduling for years now, the equivalent of ionice. But they weren't hooked up, or weren't aggressive enough, or whatever.
For example if you were recording audio to a *hard drive* that was also doing other things (most obvious case being a machine with a single hard drive that's also running the OS, and you have recording in the background while you do something in the foreground) you would suffer dropouts. Not catastrophic, not unusable, but very definitely present, enough so that you'd internalize "if I'm recording audio, don't do anything else" as standard procedure.
(I use audio as an example because it's not especially demanding of bandwidth, meaning you can buffer a good deal in DRAM; even so you still have this as an issue.)
As of macOSX 12 this seems to have changed, so that IO priorities are now aggressively enforced.
On the plus side, this means the high priority items (generally recording) seem bulletproof, and it's freaking amazing compared to what it used to be.
On the negative side, as anyone with experience in queueing or scheduling or realtime could have told you, damn, if you are not in the highest priority band you hurt! Ensuring that you cannot inadvertently *ever* steal away a problematic number of IOp's from the hard drive and the higher priority app means you get very few IOps.
I don't know how this is hooked up to SSDs (it probably is, but seeing it would require careful instrumentation, whereas seeing it kick in for HDs simply requires looking at a graph of bandwidth!).
Two obvious "conflict" cases are a recording app (which uses the appropriate APIs) vs normal usage, or normal usage vs Time Machine backups (which are low priority IO).
So I mention this all because I'm curious how this plays out in other OS's. I don't want to start a war here; I have no reason to believe that Apple's implementation is especially good or especially bad. I'm just curious if anyone else takes realtime seriously enough to bother getting this right (after all even Apple only got it right in the current OS, right at the point where it barely matters any more given SSDs...)
It's a tricky problem because doing it correctly (for the apps that care) has such extreme effects on the rest of the system, and this seems the kind of thing I'd have heard people grumbling about in the Windows or Linux context.
Topic | Posted By | Date |
---|---|---|
*guaranteed* IO scheduling | --- | 2022/01/14 06:39 PM |
*guaranteed* IO scheduling | anon2 | 2022/01/14 08:19 PM |
*guaranteed* IO scheduling | Anon | 2022/01/15 09:30 AM |
*guaranteed* IO scheduling | --- | 2022/01/15 10:13 AM |
*guaranteed* IO scheduling | Anon | 2022/01/15 10:42 AM |
*guaranteed* IO scheduling | Andrey | 2022/01/15 12:00 PM |
OS vs H/W | Mark Roulo | 2022/01/15 01:18 PM |
OS vs H/W | Jörn Engel | 2022/01/15 02:03 PM |
OS vs H/W - human error ... | Björn Ragnar Björnsson | 2022/01/15 05:54 PM |
OS vs H/W - human error ... | Jörn Engel | 2022/01/16 10:48 AM |
OS vs H/W | --- | 2022/01/15 04:31 PM |
OS vs H/W | Gionatan Danti | 2022/01/17 03:30 AM |
OS vs H/W | Brendan | 2022/01/17 05:36 AM |
OS vs H/W | Gionatan Danti | 2022/01/17 01:43 PM |
OS vs H/W | Brendan | 2022/01/17 04:07 PM |
OS vs H/W | Gionatan Danti | 2022/01/18 06:26 AM |
OS vs H/W | Brendan | 2022/01/18 03:52 PM |
OS vs H/W | Gionatan Danti | 2022/01/18 04:20 PM |
OS vs H/W | Anon | 2022/01/18 06:08 PM |
OS vs H/W | Gionatan Danti | 2022/01/18 10:42 PM |
OS vs H/W | Anon | 2022/01/19 02:51 AM |
OS vs H/W | Gionatan Danti | 2022/01/19 06:17 AM |
OS vs H/W | Anon | 2022/01/19 07:02 AM |
OS vs H/W | Brendan | 2022/01/19 03:44 AM |
OS vs H/W | Gionatan Danti | 2022/01/19 06:12 AM |
OS vs H/W | rwessel | 2022/01/19 09:25 AM |
OS vs H/W | Gionatan Danti | 2022/01/19 10:17 AM |
OS vs H/W | Brendan | 2022/01/19 11:56 AM |
OS vs H/W | Gionatan Danti | 2022/01/19 12:51 PM |
OS vs H/W | Brendan | 2022/01/19 05:29 PM |
OS vs H/W | Gionatan Danti | 2022/01/20 12:05 AM |
OS vs H/W | Brendan | 2022/01/20 08:36 AM |
OS vs H/W | Gionatan Danti | 2022/01/20 09:21 AM |
OS vs H/W | Brendan | 2022/01/20 11:52 AM |
OS vs H/W | Gionatan Danti | 2022/01/20 01:23 PM |
OS vs H/W | Brendan | 2022/01/20 02:36 PM |
OS vs H/W | Gionatan Danti | 2022/01/20 11:16 PM |
OS vs H/W | Brendan | 2022/01/21 04:22 AM |
OS vs H/W | rwessel | 2022/01/21 05:56 AM |
OS vs H/W | Brendan | 2022/01/21 03:21 PM |
OS vs H/W | anon2 | 2022/01/21 07:13 PM |
OS vs H/W | Brendan | 2022/01/21 08:36 PM |
OS vs H/W | Brendan | 2022/01/21 08:55 PM |
OS vs H/W | anon2 | 2022/01/21 08:59 PM |
OS vs H/W | Brendan | 2022/01/21 09:18 PM |
OS vs H/W | anon2 | 2022/01/21 10:14 PM |
OS vs H/W | Brendan | 2022/01/21 11:15 PM |
OS vs H/W | anon2 | 2022/01/22 12:54 AM |
OS vs H/W | --- | 2022/01/22 10:55 AM |
OS vs H/W | Anon | 2022/01/22 11:19 AM |
OS vs H/W | anon2 | 2022/01/22 05:50 PM |
OS vs H/W | Gionatan Danti | 2022/01/22 12:24 AM |
OS vs H/W | Gionatan Danti | 2022/01/21 03:42 PM |
OS vs H/W | Anon | 2022/01/21 04:52 PM |
OS vs H/W | Ungo | 2022/01/21 05:18 PM |
OS vs H/W | Anon | 2022/01/21 05:32 PM |
OS vs H/W | Ungo | 2022/01/21 08:02 PM |
OS vs H/W | Anon | 2022/01/21 09:24 PM |
OS vs H/W | Gionatan Danti | 2022/01/22 02:22 AM |
OS vs H/W | Anon | 2022/01/22 06:27 AM |
OS vs H/W | Gionatan Danti | 2022/01/22 06:59 AM |
OS vs H/W | Anon | 2022/01/22 07:24 AM |
OS vs H/W | rwessel | 2022/01/22 10:27 AM |
OS vs H/W | Anon | 2022/01/22 11:05 AM |
OS vs H/W | Matt Sayler | 2022/01/21 05:58 PM |
OS vs H/W | Brendan | 2022/01/21 05:17 PM |
OS vs H/W | Gionatan Danti | 2022/01/22 12:23 AM |
OS vs H/W | Brendan | 2022/01/22 09:43 AM |
OS vs H/W | rwessel | 2022/01/22 10:38 AM |
OS vs H/W | Anon | 2022/01/22 11:10 AM |
OS vs H/W | Brendan | 2022/01/22 11:19 AM |
OS vs H/W | Gionatan Danti | 2022/01/22 05:09 PM |
OS vs H/W | Brendan | 2022/01/22 08:03 PM |
OS vs H/W | Simon Farnsworth | 2022/01/23 02:12 AM |
OS vs H/W | Gionatan Danti | 2022/01/23 06:41 AM |
OS vs H/W | Brendan | 2022/01/23 05:45 PM |
OS vs H/W | Gionatan Danti | 2022/01/24 01:53 AM |
OS vs H/W | Anon | 2022/01/24 03:08 AM |
OS vs H/W | Adrian | 2022/01/24 03:48 AM |
OS vs H/W | Gionatan Danti | 2022/01/24 05:08 AM |
OS vs H/W | Anon | 2022/01/24 05:20 AM |
OS vs H/W | Brendan | 2022/01/24 11:10 AM |
OS vs H/W | anon2 | 2022/01/20 05:21 PM |
OS vs H/W | Gionatan Danti | 2022/01/20 11:32 PM |
OS vs H/W | Ungo | 2022/01/19 07:19 PM |
OS vs H/W | Ungo | 2022/01/19 07:47 PM |
OS vs H/W | Gionatan Danti | 2022/01/20 12:13 AM |
OS vs H/W | Etienne Lorrain | 2022/01/20 03:43 AM |
OS vs H/W | Gionatan Danti | 2022/01/20 09:28 AM |
OS vs H/W | David Hess | 2022/01/24 03:04 PM |
OS vs H/W verses shingled drives | Brett | 2022/01/20 11:54 AM |
OS vs H/W verses shingled drives | Gionatan Danti | 2022/01/20 11:19 PM |
OS vs H/W verses shingled drives | Brett | 2022/01/21 10:31 AM |
Shingled drives: Just Say No | Linus Torvalds | 2022/01/21 11:02 PM |
Shingled drives: Just Say No | dmcq | 2022/01/22 04:55 PM |
Shingled drives: Just Say No Choice | Brett | 2022/01/22 07:43 PM |
Shingled drives: Just Say No Choice | Goose | 2022/01/22 08:29 PM |
Shingled drives: Just Say No Choice | Brett | 2022/01/22 11:39 PM |
Shingled drives: Just Say No Choice | Adrian | 2022/01/23 01:59 AM |
Shingled drives: Just Say No Choice | Jukka Larja | 2022/01/24 05:55 AM |
Shingled drives: Just Say No Choice | Doug S | 2022/01/23 07:40 AM |
Shingled drives: Just Say No Choice | --- | 2022/01/23 12:59 PM |
Shingled drives: Just Say No Choice | Jukka Larja | 2022/01/24 06:04 AM |
Shingled drives: Just Say No | ⚛ | 2022/01/24 07:29 AM |
Shingled drives: Just Say No | ⚛ | 2022/01/24 08:01 AM |
Shingled drives: Just Say No | anonymou5 | 2022/01/24 07:38 PM |
Shingled drives: Just Say No | Anon | 2022/01/24 08:39 PM |
Shingled drives: Just Say No | Brett | 2022/01/24 08:25 PM |
Shingled drives: Just Say No Choice | blaine | 2022/01/25 12:40 PM |
JMF602 SSDs | Yuhong Bao | 2022/01/23 08:29 PM |
JMF602 SSDs | Gionatan Danti | 2022/01/24 03:06 AM |
Shingled drives: Just Say No - Workaround? | Ray | 2022/01/25 12:36 PM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/25 02:17 PM |
Shingled drives: Just Say No - Workaround? | Mark | 2022/01/25 04:23 PM |
Shingled drives: Just Say No - Workaround? | Ray | 2022/01/25 09:43 PM |
Shingled drives: Just Say No - Workaround? | Doug S | 2022/01/25 10:48 PM |
Shingled drives: Just Say No - Workaround? | Ray | 2022/01/25 11:10 PM |
Shingled drives: Just Say No - Workaround? | Simon Farnsworth | 2022/01/26 02:27 AM |
Shingled drives: Just Say No - Workaround? | Anon | 2022/01/26 09:22 AM |
Shingled drives: Just Say No - Workaround? | Doug S | 2022/01/26 10:55 AM |
Shingled drives: Just Say No - Workaround? | Michael S | 2022/01/26 01:45 PM |
Is ~100 TB total write caching enough? How expensive is SLC cache? | Mark Roulo | 2022/01/26 02:51 PM |
Is ~100 TB total write caching enough? How expensive is SLC cache? | Anon | 2022/01/26 03:19 PM |
Is ~100 TB total write caching enough? How expensive is SLC cache? | dmcq | 2022/01/26 03:43 PM |
Shingled drives: Just Say No - Workaround? | Doug S | 2022/01/26 08:34 PM |
Guarantee (NT) | Anon | 2022/01/26 08:55 PM |
Shingled drives: Just Say No - Workaround? | Blaine | 2022/01/27 01:41 PM |
Shingled drives: Just Say No - Workaround? | Doug S | 2022/01/27 02:31 PM |
Shingled drives: Just Say No - Workaround? | Blaine | 2022/01/27 01:49 PM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/26 05:11 PM |
Shingled drives: Just Say No - Workaround? | Anon | 2022/01/26 05:21 PM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/26 08:12 PM |
Shingled drives: Just Say No - Workaround? | Simon Farnsworth | 2022/01/27 10:20 AM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/27 05:36 PM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/01/28 03:55 AM |
Shingled drives: Just Say No - Workaround? | Simon Farnsworth | 2022/01/28 04:46 AM |
Shingled drives: Just Say No - Workaround? | Mark | 2022/01/28 09:04 AM |
Seagate has a table/list (incomplete) | anonymous2 | 2022/01/28 11:33 AM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/28 06:47 PM |
Shingled drives: Just Say No - Workaround? | --- | 2022/01/29 10:42 AM |
Shingled drives: Just Say No - Workaround? | anon2 | 2022/01/29 07:06 PM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/01/29 09:44 PM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/30 12:58 AM |
Shingled drives: Just Say No - Workaround? | rwessel | 2022/01/30 03:06 AM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/30 10:02 PM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/01/30 11:22 AM |
Shingled drives: Just Say No - Workaround? | --- | 2022/01/30 12:59 PM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/01/31 07:21 AM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/30 10:10 PM |
Shingled drives: Just Say No - Workaround? | Gionatan Danti | 2022/01/31 12:07 AM |
Shingled drives: Just Say No - Workaround? | Anon | 2022/01/31 05:31 AM |
Shingled drives: Just Say No - Workaround? | Etienne Lorrain | 2022/01/31 07:53 AM |
Shingled drives: Just Say No - Workaround? | Gionatan Danti | 2022/01/31 12:14 AM |
Shingled drives: Just Say No - Workaround? | Brett | 2022/01/31 03:07 PM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/01/31 10:13 PM |
Shingled drives: Just Say No - Workaround? | Gionatan Danti | 2022/02/01 02:28 AM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/02/01 03:41 AM |
Shingled drives: Just Say No - Workaround? | Gionatan Danti | 2022/02/01 04:35 AM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/02/01 04:40 PM |
Shingled drives: Just Say No - Workaround? | Gionatan Danti | 2022/02/01 11:53 PM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/02/02 01:46 AM |
Shingled drives: Just Say No - Workaround? | Gionatan Danti | 2022/02/02 03:11 AM |
Shingled drives: Just Say No - Workaround? | --- | 2022/02/02 10:18 AM |
Shingled drives: Just Say No - Workaround? | Anne O. Nymous | 2022/02/02 12:31 PM |
Shingled drives: Just Say No - Workaround? | anon2 | 2022/02/02 06:14 PM |
Shingled drives: Just Say No - Workaround? | Anne O. Nymous | 2022/02/03 04:24 AM |
Shingled drives: Just Say No - Workaround? | Simon Farnsworth | 2022/02/03 05:46 AM |
Shingled drives: Just Say No - Workaround? | Mark | 2022/02/03 08:40 AM |
Shingled drives: Just Say No - Workaround? | Simon Farnsworth | 2022/02/03 10:39 AM |
Shingled drives: Just Say No - Workaround? | Maxwell | 2022/02/03 11:00 AM |
Shingled drives: Just Say No - Workaround? | Anon | 2022/02/04 04:33 AM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/02/03 04:23 AM |
Shingled drives: Just Say No - Workaround? | Anne O. Nymous | 2022/02/03 12:37 PM |
Shingled drives: Just Say No - Workaround? | Gionatan Danti | 2022/02/03 03:28 PM |
Shingled drives: Just Say No - Workaround? | --- | 2022/02/03 04:12 PM |
Shingled drives: Just Say No - Workaround? | anon2 | 2022/02/03 08:16 PM |
Shingled drives: Just Say No - Workaround? | --- | 2022/02/04 01:04 PM |
Shingled drives: Just Say No - Workaround? | anon2 | 2022/02/04 04:22 PM |
Shingled drives: Just Say No - Workaround? | Anne O. Nymous | 2022/02/05 04:51 AM |
Shingled drives: Just Say No - Workaround? | --- | 2022/02/05 10:20 AM |
Shingled drives: Just Say No - Workaround? | Anne O. Nymous | 2022/02/04 02:37 AM |
Shingled drives: Just Say No - Workaround? | Mark | 2022/02/01 12:22 PM |
Shingled drives: Just Say No - Workaround? | --- | 2022/02/01 01:02 PM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/02/02 06:34 AM |
Shingled drives: Just Say No - Workaround? | Ungo | 2022/02/02 06:31 AM |
Shingled drives: Just Say No - Workaround? | --- | 2022/02/02 10:22 AM |
Shingled drives: Just Say No - Workaround? | Anne O. Nymous | 2022/02/02 12:34 PM |
Shingled drives: Just Say No - Workaround? | Brendan | 2022/02/03 07:48 AM |
Shingled drives: Just Say No - Workaround? | Anon | 2022/01/30 07:44 PM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/01/31 06:56 AM |
Shingled drives: Just Say No - Workaround? | Anon | 2022/01/31 07:36 AM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/01/31 11:38 AM |
Shingled drives: Just Say No - Workaround? | --- | 2022/01/31 12:54 PM |
Shingled drives: Just Say No - Workaround? | Simon Farnsworth | 2022/02/01 01:50 AM |
Shingled drives: Just Say No - Workaround? | Anne O. Nymous | 2022/02/01 03:31 AM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/02/01 06:36 AM |
Shingled drives: Just Say No - Workaround? | --- | 2022/01/31 12:38 PM |
Shingled drives: Just Say No - Workaround? | anon2 | 2022/01/31 11:43 PM |
Shingled drives: Just Say No - Workaround? | Jukka Larja | 2022/02/01 06:49 AM |
Shingled drives: Just Say No - Workaround? | Brett | 2022/02/01 03:45 PM |
Shingled drives: Just Say No - Workaround? | Anon | 2022/02/01 09:21 PM |
Shingled drives: Just Say No - Workaround? | Gionatan Danti | 2022/02/02 12:20 AM |
Shingled drives: Just Say No - Workaround? | Anon | 2022/02/02 04:39 AM |
Not true. I've had SMR drives fall off the bus after too many random writes. (NT) | Ray | 2022/02/03 03:15 PM |
Not true. I've had SMR drives fall off the bus after too many random writes. | Anon | 2022/02/04 04:40 AM |
Shingled drives: Just Say No - Workaround? | Simon Farnsworth | 2022/01/30 07:59 AM |
Shingled drives: Just Say No - Workaround? | anon2 | 2022/01/26 06:54 PM |
Shingled drives: Just Say No - Workaround? | Jörn Engel | 2022/01/27 05:13 PM |
Shingled drives: Just Say No - Workaround? | anon2 | 2022/01/28 07:26 PM |
Do you mean "log structured" rather than "lot structured" (NT) | Rob Thorpe | 2022/02/02 07:40 AM |
Yes (NT) | anon2 | 2022/02/02 05:01 PM |
OS vs H/W | j | 2022/01/20 06:18 AM |
OS vs H/W | Gionatan Danti | 2022/01/20 09:32 AM |
OS vs H/W | Brendan | 2022/01/20 07:03 AM |
OS vs H/W | Gionatan Danti | 2022/01/20 09:46 AM |
OS vs H/W | Brendan | 2022/01/20 12:16 PM |
OS vs H/W | Gionatan Danti | 2022/01/20 01:25 PM |
OS vs H/W | --- | 2022/01/20 10:35 AM |
OS vs H/W | Ungo | 2022/01/20 08:02 PM |
OS vs H/W | Anon | 2022/01/21 11:15 AM |
OS vs H/W | Gionatan Danti | 2022/01/21 01:04 PM |
OS vs H/W | Anon | 2022/01/21 02:10 PM |
OS vs H/W | Gionatan Danti | 2022/01/21 04:04 PM |
OS vs H/W | Simon Farnsworth | 2022/01/23 02:00 AM |
OS vs H/W | Gionatan Danti | 2022/01/23 06:09 AM |
OS vs H/W | anon2 | 2022/01/20 09:01 PM |
*guaranteed* IO scheduling | anon2 | 2022/01/16 01:18 AM |
*guaranteed* IO scheduling | David Hess | 2022/01/18 09:07 AM |
*guaranteed* IO scheduling | Anon | 2022/01/18 12:04 PM |
*guaranteed* IO scheduling | David Hess | 2022/01/18 02:49 PM |
*guaranteed* IO scheduling | Jukka Larja | 2022/01/19 08:01 AM |
*guaranteed* IO scheduling | NoSpammer | 2022/01/16 11:37 AM |
*guaranteed* IO scheduling | anon2 | 2022/01/16 08:09 PM |