Skip to content

Commit e0e3dc9

Browse files
Merge pull request ceph#60205 from Rethan/bluestore-aio-submit-retries
os/bluestore: make retry_max and initial_delay configurable for aio s…
2 parents 3ad8fdc + 3667f4a commit e0e3dc9

File tree

6 files changed

+28
-12
lines changed

6 files changed

+28
-12
lines changed

src/blk/aio/aio.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ std::ostream& operator<<(std::ostream& os, const aio_t& aio)
1717

1818
int aio_queue_t::submit_batch(aio_iter begin, aio_iter end,
1919
void *priv,
20-
int *retries)
20+
int *retries, int submit_retries, int initial_delay_us)
2121
{
22-
// 2^16 * 125us = ~8 seconds, so max sleep is ~16 seconds
23-
int attempts = 16;
24-
int delay = 125;
22+
// 2^16 * 125us = ~8 seconds, so default max sleep is ~16 seconds
23+
int attempts = submit_retries;
24+
uint64_t delay = initial_delay_us;
2525
int r;
2626

2727
aio_iter cur = begin;
@@ -74,8 +74,8 @@ int aio_queue_t::submit_batch(aio_iter begin, aio_iter end,
7474
}
7575
ceph_assert(r > 0);
7676
done += r;
77-
attempts = 16;
78-
delay = 125;
77+
attempts = submit_retries;
78+
delay = initial_delay_us;
7979
pushed = pulled = 0;
8080
}
8181
return done;

src/blk/aio/aio.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ struct io_queue_t {
102102
virtual int init(std::vector<int> &fds) = 0;
103103
virtual void shutdown() = 0;
104104
virtual int submit_batch(aio_iter begin, aio_iter end,
105-
void *priv, int *retries) = 0;
105+
void *priv, int *retries, int submit_retries, int initial_delay_us) = 0;
106106
virtual int get_next_completed(int timeout_ms, aio_t **paio, int max) = 0;
107107
};
108108

@@ -155,6 +155,6 @@ struct aio_queue_t final : public io_queue_t {
155155
}
156156

157157
int submit_batch(aio_iter begin, aio_iter end,
158-
void *priv, int *retries) final;
158+
void *priv, int *retries, int submit_retries, int initial_delay_us) final;
159159
int get_next_completed(int timeout_ms, aio_t **paio, int max) final;
160160
};

src/blk/kernel/KernelDevice.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -961,9 +961,15 @@ void KernelDevice::aio_submit(IOContext *ioc)
961961
}
962962

963963
void *priv = static_cast<void*>(ioc);
964+
int retry_max = cct->_conf->bdev_aio_submit_retry_max;
965+
int initial_delay_us = cct->_conf->bdev_aio_submit_retry_initial_delay_us;
966+
dout(20) << __func__
967+
<< " bdev_aio_submit_retry_max " << retry_max
968+
<< " bdev_aio_submit_retry_initial_delay_us " << initial_delay_us
969+
<< dendl;
964970
int r, retries = 0;
965971
r = io_queue->submit_batch(ioc->running_aios.begin(), e,
966-
priv, &retries);
972+
priv, &retries, retry_max, initial_delay_us);
967973

968974
if (retries)
969975
derr << __func__ << " retries " << retries << dendl;

src/blk/kernel/io_uring.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ void ioring_queue_t::shutdown()
180180

181181
int ioring_queue_t::submit_batch(aio_iter beg, aio_iter end,
182182
void *priv,
183-
int *retries)
183+
int *retries, int submit_retries, int initial_delay_us)
184184
{
185185
(void)retries;
186186

@@ -248,7 +248,7 @@ void ioring_queue_t::shutdown()
248248

249249
int ioring_queue_t::submit_batch(aio_iter beg, aio_iter end,
250250
void *priv,
251-
int *retries)
251+
int *retries, int submit_retries, int initial_delay_us)
252252
{
253253
ceph_assert(0);
254254
}

src/blk/kernel/io_uring.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ struct ioring_queue_t final : public io_queue_t {
2828
void shutdown() final;
2929

3030
int submit_batch(aio_iter begin, aio_iter end,
31-
void *priv, int *retries) final;
31+
void *priv, int *retries, int submit_retries, int initial_delay_us) final;
3232
int get_next_completed(int timeout_ms, aio_t **paio, int max) final;
3333
};

src/common/options/global.yaml.in

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4048,6 +4048,16 @@ options:
40484048
level: advanced
40494049
default: 16
40504050
with_legacy: true
4051+
- name: bdev_aio_submit_retry_max
4052+
type: int
4053+
level: advanced
4054+
default: 16
4055+
with_legacy: true
4056+
- name: bdev_aio_submit_retry_initial_delay_us
4057+
type: int
4058+
level: advanced
4059+
default: 125
4060+
with_legacy: true
40514061
- name: bdev_block_size
40524062
type: size
40534063
level: advanced

0 commit comments

Comments
 (0)