Adapt EloqStore IO QoS configuration - #537
Draft
thweetkomputer wants to merge 2 commits into
Draft
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
4 tasks
thweetkomputer
force-pushed
the
agent/adapt-eloqstore-io-qos-config
branch
from
July 30, 2026 00:33
609ddb3 to
ceffdc8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context
EloqStore's
io_qosbranch replaces the obsolete per-write-task batch knob with per-device rate limiting and an optional in-flight IO window. Data Substrate needs to expose those options through its gflags/INI integration before EloqKV and other consumers can configure them.Behavior before and after
Before this change,
EloqStoreConfigcould not pass the new IO QoS settings toeloqstore::KvOptions, and still exposedeloq_store_max_write_batch_pages, which EloqStore now treats as deprecated and ineffective.After this change, command-line flags and
[store]INI values can configure:eloq_store_disk_rate_limit_iopseloq_store_disk_rate_limit_mbpseloq_store_rate_limit_burst_mseloq_store_rate_limit_io_uniteloq_store_rate_bg_ratioeloq_store_max_inflight_ioThe obsolete
eloq_store_max_write_batch_pagesintegration is removed.Implementation
KvOptionsdefaults.rate_limit_io_unitthrough the existing size parser so values such as2KBmap to bytes.io_qosimplementation commit.Design decisions and alternatives
The adapter does not divide the new rate limits by
eloq_store_worker_num. These are defined by EloqStore as per-disk values and EloqStore owns the path/shard allocation. Dividing them again in Data Substrate would under-limit IO.Test plan
Commands and results:
clang-format-18andclang-formatwere unavailable in the current environment. Runtime and performance tests were not run because this PR only wires configuration into the already-tested EloqStore implementation.Risk assessment
The main operational risk is misconfigured device limits. The defaults mirror EloqStore,
0retains the documented disable behavior where applicable, and command-line precedence remains compatible. Removingeloq_store_max_write_batch_pagesmeans deployments still setting that obsolete flag must remove it rather than silently relying on a no-op.This draft currently points at an EloqStore
io_qosbranch commit. The EloqStore change must land first, then this PR's submodule pointer must be updated to the final commit reachable from EloqStore's target branch.Rollback plan
Revert this PR and restore the previous EloqStore submodule pointer.
Reviewer guide
Start with
store_handler/eloq_data_store_service/eloq_store_config.cpp. Verify the flag defaults againsteloqstore::KvOptions, the command-line-over-INI precedence, and that per-disk rates are not divided in the adapter. Then verify the EloqStore submodule commit and dependency order.Follow-up work
Expose the same settings in each parent project's sample INI and update the submodule pointer after the EloqStore PR lands.