11# renderd Queue Tuning
22
3- ` renderd ` keeps incoming render requests in five queues:
3+ ` renderd ` keeps incoming render requests in a priority queue with five priority
4+ classes:
45
56- priority request queue: missing tiles where a client is waiting
67- request queue: stale tiles where a client is waiting
78- low priority request queue: less urgent stale/style refresh work
89- dirty queue: background work where no client waits for the response
910- bulk request queue: explicit bulk rendering work
1011
11- Requests are fetched in that priority order. When a time-critical request queue
12- is full, new requests overflow into the dirty queue. That prevents immediate
13- drops, but it also means the overflowed request no longer gets client-waiting
14- priority.
12+ Requests are fetched by effective priority, preserving FIFO order within the
13+ same priority class. When a time-critical request class is full, new requests
14+ overflow into the dirty class. That prevents immediate drops, but it also means
15+ the overflowed request no longer gets client-waiting priority until a later
16+ client request for the same tile can promote it back into the appropriate
17+ priority class.
1518
1619## Configuration
1720
@@ -44,6 +47,10 @@ Do not increase `dirty_queue_limit` blindly on an overloaded server. If the
4447higher-priority queues are continuously non-empty, dirty work may still starve,
4548and a larger dirty queue mainly stores more backlog. Watch queue length, queue
4649time, render throughput, and dropped-tile metrics before and after the change.
50+ When a client requests a tile that is already queued as lower-priority work,
51+ ` renderd ` raises that existing item in the priority queue if the target priority
52+ class has capacity. If the target class is still full, the request remains
53+ background work and the client receives the usual not-done response.
4754
4855Increase gradually. For example, move from the default to a limit sized for
4956roughly 10 minutes of dirty work, then one hour, before trying day-scale values.
@@ -63,6 +70,7 @@ whether the service has predictable low-load windows.
63706 . Roll back to the previous values if dirty queue time grows continuously or
6471 missing-tile requests appear to be delayed by old background work.
6572
66- This setting only changes queue capacity. It does not implement bounded
67- overtaking or fairness between queues; those would require a larger queue
73+ This setting changes per-priority capacity and works with duplicate promotion
74+ for already queued tiles. It does not implement bounded overtaking or broader
75+ fairness between unrelated queued tiles; those would require a larger queue
6876scheduler change.
0 commit comments