Skip to content

Commit efa342a

Browse files
committed
net: use adjustable_semaphore in server
1 parent 28735cd commit efa342a

3 files changed

Lines changed: 12 additions & 7 deletions

File tree

src/v/net/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ redpanda_cc_library(
7070
"//src/v/ssx:mutex",
7171
"//src/v/ssx:semaphore",
7272
"//src/v/ssx:sformat",
73+
"//src/v/utils:adjustable_semaphore",
7374
"//src/v/utils:inet_address",
7475
"//src/v/utils:log_hist",
7576
"//src/v/utils:named_type",

src/v/net/server.cc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ namespace net {
3636
server::server(server_configuration c, ss::logger& log)
3737
: cfg(std::move(c))
3838
, _log(log)
39-
, _memory{size_t{static_cast<size_t>(cfg.max_service_memory_per_core)}, "net/server-mem"}
39+
, _memory{static_cast<uint64_t>(cfg.max_service_memory_per_core), "net/server-mem"}
4040
, _probe(std::make_unique<server_probe>()) {
4141
vlog(
4242
_log.info, "Creating net::server for {} with config {}", cfg.name, cfg);
@@ -325,18 +325,22 @@ ss::future<> server::stop() {
325325
return wait_for_shutdown();
326326
}
327327

328+
void server::set_memory_capacity(uint64_t new_capacity) {
329+
_memory.set_capacity(new_capacity);
330+
}
331+
328332
void server::setup_metrics() {
329333
namespace sm = ss::metrics;
330334
_metrics.add_group(
331335
prometheus_sanitize::metrics_name(cfg.name),
332336
{sm::make_total_bytes(
333337
"max_service_mem_bytes",
334-
[this] { return cfg.max_service_memory_per_core; },
338+
[this] { return _memory.capacity(); },
335339
sm::description(
336340
ssx::sformat("{}: Maximum memory allowed for RPC", cfg.name))),
337341
sm::make_total_bytes(
338342
"consumed_mem_bytes",
339-
[this] { return cfg.max_service_memory_per_core - _memory.current(); },
343+
[this] { return _memory.outstanding(); },
340344
sm::description(
341345
ssx::sformat(
342346
"{}: Memory consumed by request processing", cfg.name))),

src/v/net/server.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "net/connection_rate.h"
2020
#include "net/types.h"
2121
#include "ssx/semaphore.h"
22+
#include "utils/adjustable_semaphore.h"
2223
#include "utils/log_hist.h"
2324

2425
#include <seastar/core/abort_source.hh>
@@ -141,11 +142,12 @@ class server {
141142
virtual ss::future<> apply(ss::lw_shared_ptr<net::connection>) = 0;
142143

143144
server_probe& probe() { return *_probe; }
144-
ssx::semaphore& memory() { return _memory; }
145+
ssx::semaphore& memory() { return _memory.underlying(); }
145146
ss::gate& conn_gate() { return _conn_gate; }
146147
hist_t& hist() { return _hist; }
147148
ss::abort_source& abort_source() { return _as; }
148149
bool abort_requested() const { return _as.abort_requested(); }
150+
void set_memory_capacity(uint64_t new_capacity);
149151

150152
private:
151153
struct listener {
@@ -166,11 +168,9 @@ class server {
166168
print_exceptional_future(ss::future<>, const char*, ss::socket_address);
167169
ss::future<>
168170
apply_proto(ss::lw_shared_ptr<net::connection>, conn_quota::units);
169-
void setup_metrics();
170-
void setup_public_metrics();
171171

172172
ss::logger& _log;
173-
ssx::semaphore _memory;
173+
adjustable_semaphore _memory;
174174
std::vector<std::unique_ptr<listener>> _listeners;
175175
boost::intrusive::list<net::connection> _connections;
176176
ss::abort_source _as;

0 commit comments

Comments
 (0)