Erik Grinaker
f62047ae97
pageserver: add separate semaphore for L0 compaction ( #10780 )
...
## Problem
L0 compaction frequently gets starved out by other background tasks and
image/GC compaction. L0 compaction must be responsive to keep read
amplification under control.
Touches #10694 .
Resolves #10689 .
## Summary of changes
Use a separate semaphore for the L0-only compaction pass.
* Add a `CONCURRENT_L0_COMPACTION_TASKS` semaphore and
`BackgroundLoopKind::L0Compaction`.
* Add a setting `compaction_l0_semaphore` (default off via
`compaction_l0_first`).
* Use the L0 semaphore when doing an `OnlyL0Compaction` pass.
* Use the background semaphore when doing a regular compaction pass
(which includes an initial L0 pass).
* While waiting for the background semaphore, yield for L0 compaction if
triggered.
* Add `CompactFlags::NoYield` to disable L0 yielding, and set it for the
HTTP API route.
* Remove the old `use_compaction_semaphore` setting and
compaction-scoped semaphore.
* Remove the warning when waiting for a semaphore; it's noisy and we
have metrics.
2025-02-12 16:12:21 +00:00
..
2024-09-12 23:18:41 +01:00
2024-10-08 14:32:26 -05:00
2025-02-12 16:12:21 +00:00
2024-10-29 11:39:09 +00:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2025-01-24 09:47:28 +00:00
2024-10-08 14:32:26 -05:00
2025-01-28 13:33:58 +00:00
2024-10-31 14:44:59 +00:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-12-16 10:06:08 +00:00
2024-10-08 14:32:26 -05:00
2024-11-25 09:01:05 +00:00
2025-02-12 12:35:29 +00:00
2025-02-07 13:03:01 +00:00
2025-02-11 07:02:13 +00:00
2024-11-08 12:19:18 -06:00
2025-01-29 19:22:01 +00:00
2025-01-29 18:09:25 +00:00
2024-10-08 14:32:26 -05:00
2024-11-27 12:12:21 +00:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-12-14 17:37:13 +00:00
2024-12-11 19:16:33 +00:00
2025-02-05 14:58:33 +00:00
2024-10-08 14:32:26 -05:00
2024-11-25 09:01:05 +00:00
2024-10-18 15:07:36 +03:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-12-02 10:26:15 +00:00
2025-01-30 22:55:17 +00:00
2024-10-31 14:44:59 +00:00
2024-12-11 19:16:33 +00:00
2024-10-08 14:32:26 -05:00
2025-02-03 12:44:47 +00:00
2024-11-11 18:07:01 +00:00
2024-10-08 14:32:26 -05:00
2025-02-10 14:25:48 +00:00
2025-01-10 15:53:23 +00:00
2024-11-25 09:01:05 +00:00
2025-01-20 18:29:21 +00:00
2024-12-02 10:26:15 +00:00
2025-02-03 12:44:47 +00:00
2024-12-02 10:26:15 +00:00
2024-10-08 14:32:26 -05:00
2025-01-16 08:34:11 +00:00
2024-11-11 18:07:01 +00:00
2024-10-08 14:32:26 -05:00
2025-02-11 18:02:22 +00:00
2024-12-02 10:26:15 +00:00
2024-10-18 12:42:41 +02:00
2024-10-08 14:32:26 -05:00
2024-11-25 09:01:05 +00:00
2024-10-08 14:32:26 -05:00
2025-01-30 22:43:36 +00:00
2024-11-21 16:25:31 +00:00
2024-11-19 22:29:57 +02:00
2025-01-16 20:34:02 +00:00
2024-12-02 10:26:15 +00:00
2024-10-08 14:32:26 -05:00
2024-12-11 19:16:33 +00:00
2025-02-07 13:03:01 +00:00
2024-12-03 22:07:03 +00:00
2024-12-19 09:45:06 +00:00
2024-12-11 22:21:42 +00:00
2024-10-08 14:32:26 -05:00
2025-02-12 10:52:26 +00:00
2024-10-08 14:32:26 -05:00
2025-02-04 17:52:54 +00:00
2024-10-08 14:32:26 -05:00
2025-02-06 12:53:43 +00:00
2024-10-08 14:32:26 -05:00
2025-02-03 12:44:47 +00:00
2025-01-13 20:01:03 +00:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-12-13 14:52:54 +00:00
2025-02-07 12:25:16 +00:00
2024-12-11 22:21:42 +00:00
2025-01-13 11:35:39 +00:00
2025-02-07 12:25:16 +00:00
2024-11-25 09:01:05 +00:00
2024-12-02 10:26:15 +00:00
2025-01-24 09:47:28 +00:00
2025-01-28 13:33:58 +00:00
2024-12-02 10:26:15 +00:00
2024-10-18 11:25:45 +01:00
2024-11-21 16:25:31 +00:00
2024-10-08 14:32:26 -05:00
2025-02-12 12:35:29 +00:00
2025-02-07 12:25:16 +00:00
2025-02-11 20:09:41 +00:00
2025-02-12 12:35:29 +00:00
2025-02-03 12:44:47 +00:00
2025-02-06 12:53:43 +00:00
2024-11-27 12:12:21 +00:00
2024-12-11 19:16:33 +00:00
2025-01-16 14:11:33 +00:00
2024-12-02 10:26:15 +00:00
2024-12-02 10:26:15 +00:00
2024-12-02 10:26:15 +00:00
2024-12-02 10:26:15 +00:00
2024-12-02 10:26:15 +00:00
2025-01-16 18:51:56 +00:00
2024-12-11 22:21:42 +00:00
2025-02-11 16:36:54 +00:00
2024-12-02 10:26:15 +00:00
2025-01-23 16:43:04 +00:00
2024-12-02 10:26:15 +00:00
2025-01-24 09:47:28 +00:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-10-08 14:32:26 -05:00
2024-10-28 17:47:15 -05:00
2025-01-24 09:47:28 +00:00
2024-11-14 17:19:13 +02:00
2025-02-11 18:02:22 +00:00
2025-01-15 14:16:04 +00:00
2024-12-02 10:26:15 +00:00
2024-11-08 12:19:18 -06:00
2024-10-08 14:32:26 -05:00