You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Investigate performance issues of the 'Busy S2cell Test' scenario #1592
In this comment I report various tests I've made in an attempt to understand better the issue and find a potential fix. Right now they are mostly inconclusive but reporting them can avoid doing twice the effort. Note that those tests were ran on my own laptop, meaning they can be compared among themselves, but hardly with other tests.
DSS started locally with:
INTER_USS_NETEM_CONF=delay 16.5ms 7.5ms 50% distribution paretonormal loss 0.025% 25%
INTRA_USS_NETEM_CONF=delay 600us 40us 25% distribution normal loss 0.0005%
NUM_NODES=3
NUM_USS=3
Slightly more interesting results, as the 50th percentile response time is significantly reduced, but no change for the 95th percentile (expected since there are failures). We may want to dig a bit more in that direction, starting by isolating the change that produced this improvement and assessing its impact on other test scenarios.
Time-based index with original locking, disabling increment of notification indexes
DSS setup:
v0.23.0-rc2
time-based notification index enabled
BUT locking cells ahead of time anyway with the orinal cell locking implementation
do not perform any subscription notification index increment
Interestingly no impact on performances. Could this suggest the increment of the notification index is not the bottleneck here?
Original time-based index, disabling increment of notification indexes
DSS setup:
v0.23.0-rc2
time-based notification index enabled, no locking as in the original implementation
do not perform any subscription notification index increment
Made this to see if that makes a different vs previous test. Not incrementing the notification index does not make a different either here.
Follow-up to report some limited tests about a finding we made, which is that for the locust test FLightsInSub.py, getting the client to reuse an existing subscription (i.e. to not create a new implicit subscription for every new flights) could show improvement, potentially significant ones.
DSS setup:
v0.23.0-rc2
time-based notification index enabled (i.e. NO cell locking)
Results on my local machine with 3 concurrent users, locust command:
With new subscription for every flight, i.e. like the above, ~1.12 QPS:
With using a single explicit subscription for all flights, ~2.63 QPS:
I.e. more than double the QPS on my local machine. I doubt improvement would be as good in real life, notably because this test would be the equivalent of a single USS operating alone. But this still hints at some improvement just by reusing existing subscriptions.
This is a result consistent with previous findings: the bottleneck is most likely in the round-trips that have to be made between CRDB instances, and the number of SQL queries made directly influences that. Not having to create implicit subscriptions reduce the number of SQL queries to be made, thus the round-trip, thus improve the QPS.
Note that this is however something that needs to be implemented on the USS side.
Activity
mickmis commentedon Jul 7, 2026
In this comment I report various tests I've made in an attempt to understand better the issue and find a potential fix. Right now they are mostly inconclusive but reporting them can avoid doing twice the effort. Note that those tests were ran on my own laptop, meaning they can be compared among themselves, but hardly with other tests.
DSS started locally with:
Locus start command:
Tests
Baseline without time-based index
DSS setup:
With time-based index
DSS setup:
As expected, worse performances in this case.
Replicas on all nodes
DSS setup:
No impact.
Time-based index with alternative locking implementation
DSS setup:
Mostly no impact. Maybe slight improvement on the 95th percentile, but could be statistically irrelevant.
Time-based index with with alternative locking implementation BIS
DSS setup:
optimizer_use_lock_op_for_serializableSlightly more interesting results, as the 50th percentile response time is significantly reduced, but no change for the 95th percentile (expected since there are failures). We may want to dig a bit more in that direction, starting by isolating the change that produced this improvement and assessing its impact on other test scenarios.
Time-based index with original locking, disabling increment of notification indexes
DSS setup:
Interestingly no impact on performances. Could this suggest the increment of the notification index is not the bottleneck here?
Original time-based index, disabling increment of notification indexes
DSS setup:
Made this to see if that makes a different vs previous test. Not incrementing the notification index does not make a different either here.
mickmis commentedon Jul 30, 2026
Follow-up to report some limited tests about a finding we made, which is that for the locust test
FLightsInSub.py, getting the client to reuse an existing subscription (i.e. to not create a new implicit subscription for every new flights) could show improvement, potentially significant ones.DSS setup:
Results on my local machine with 3 concurrent users, locust command:
With new subscription for every flight, i.e. like the above, ~1.12 QPS:

With using a single explicit subscription for all flights, ~2.63 QPS:

I.e. more than double the QPS on my local machine. I doubt improvement would be as good in real life, notably because this test would be the equivalent of a single USS operating alone. But this still hints at some improvement just by reusing existing subscriptions.
This is a result consistent with previous findings: the bottleneck is most likely in the round-trips that have to be made between CRDB instances, and the number of SQL queries made directly influences that. Not having to create implicit subscriptions reduce the number of SQL queries to be made, thus the round-trip, thus improve the QPS.
Note that this is however something that needs to be implemented on the USS side.
barroco commentedon Oct 29, 2026
Closing this issue since investigation is done and parent issue has been resolved.