code: Add scheduling group to controllers

There are four of them currently -- transport, thrift, alternator and
redis. This patch makes main pass to all the statement scheduling group
as constructor argument. Next patches will make use of it.

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2024-05-24 16:10:20 +03:00
parent 82511f3c25
commit fc3c3e1099
9 changed files with 20 additions and 13 deletions

View File

@@ -32,7 +32,8 @@ controller::controller(
sharded<service::memory_limiter>& memory_limiter,
sharded<auth::service>& auth_service,
sharded<qos::service_level_controller>& sl_controller,
const db::config& config)
const db::config& config,
seastar::scheduling_group sg)
: _gossiper(gossiper)
, _proxy(proxy)
, _mm(mm)

View File

@@ -80,7 +80,8 @@ public:
sharded<service::memory_limiter>& memory_limiter,
sharded<auth::service>& auth_service,
sharded<qos::service_level_controller>& sl_controller,
const db::config& config);
const db::config& config,
seastar::scheduling_group sg);
virtual sstring name() const override;
virtual sstring protocol() const override;

10
main.cc
View File

@@ -1737,7 +1737,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
maintenance_auth_service.start(perm_cache_config, std::ref(qp), std::ref(group0_client), std::ref(mm_notifier), std::ref(mm), maintenance_auth_config, maintenance_socket_enabled::yes).get();
cql_transport::controller cql_maintenance_server_ctl(maintenance_auth_service, mm_notifier, gossiper, qp, service_memory_limiter, sl_controller, lifecycle_notifier, *cfg, maintenance_cql_sg_stats_key, maintenance_socket_enabled::yes);
cql_transport::controller cql_maintenance_server_ctl(maintenance_auth_service, mm_notifier, gossiper, qp, service_memory_limiter, sl_controller, lifecycle_notifier, *cfg, maintenance_cql_sg_stats_key, maintenance_socket_enabled::yes, dbcfg.statement_scheduling_group);
std::any stop_maintenance_auth_service;
std::any stop_maintenance_cql;
@@ -1966,7 +1966,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
notify_set.notify_all(configurable::system_state::started).get();
cql_transport::controller cql_server_ctl(auth_service, mm_notifier, gossiper, qp, service_memory_limiter, sl_controller, lifecycle_notifier, *cfg, cql_sg_stats_key, maintenance_socket_enabled::no);
cql_transport::controller cql_server_ctl(auth_service, mm_notifier, gossiper, qp, service_memory_limiter, sl_controller, lifecycle_notifier, *cfg, cql_sg_stats_key, maintenance_socket_enabled::no, dbcfg.statement_scheduling_group);
ss.local().register_protocol_server(cql_server_ctl);
@@ -1981,7 +1981,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
api::unset_transport_controller(ctx).get();
});
::thrift_controller thrift_ctl(db, auth_service, qp, service_memory_limiter, ss, proxy);
::thrift_controller thrift_ctl(db, auth_service, qp, service_memory_limiter, ss, proxy, dbcfg.statement_scheduling_group);
ss.local().register_protocol_server(thrift_ctl);
@@ -2002,7 +2002,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
api::unset_rpc_controller(ctx).get();
});
alternator::controller alternator_ctl(gossiper, proxy, mm, sys_dist_ks, cdc_generation_service, service_memory_limiter, auth_service, sl_controller, *cfg);
alternator::controller alternator_ctl(gossiper, proxy, mm, sys_dist_ks, cdc_generation_service, service_memory_limiter, auth_service, sl_controller, *cfg, dbcfg.statement_scheduling_group);
sharded<alternator::expiration_service> es;
std::any stop_expiration_service;
@@ -2027,7 +2027,7 @@ To start the scylla server proper, simply invoke as: scylla server (or just scyl
}
ss.local().register_protocol_server(alternator_ctl);
redis::controller redis_ctl(proxy, auth_service, mm, *cfg, gossiper);
redis::controller redis_ctl(proxy, auth_service, mm, *cfg, gossiper, dbcfg.statement_scheduling_group);
if (cfg->redis_port() || cfg->redis_ssl_port()) {
with_scheduling_group(dbcfg.statement_scheduling_group, [&redis_ctl] {
return redis_ctl.start_server();

View File

@@ -20,7 +20,8 @@ static logging::logger slogger("controller");
namespace redis {
controller::controller(seastar::sharded<service::storage_proxy>& proxy, seastar::sharded<auth::service>& auth_service,
seastar::sharded<service::migration_manager>& mm, db::config& cfg, seastar::sharded<gms::gossiper>& gossiper)
seastar::sharded<service::migration_manager>& mm, db::config& cfg, seastar::sharded<gms::gossiper>& gossiper,
seastar::scheduling_group sg)
: _proxy(proxy)
, _db(proxy.local().data_dictionary())
, _auth_service(auth_service)

View File

@@ -64,7 +64,8 @@ private:
seastar::future<> listen(seastar::sharded<auth::service>& auth_service, db::config& cfg);
public:
controller(seastar::sharded<service::storage_proxy>& proxy, seastar::sharded<auth::service>& auth_service,
seastar::sharded<service::migration_manager>& mm, db::config& cfg, seastar::sharded<gms::gossiper>& gossiper);
seastar::sharded<service::migration_manager>& mm, db::config& cfg, seastar::sharded<gms::gossiper>& gossiper,
seastar::scheduling_group sg);
~controller();
virtual sstring name() const override;
virtual sstring protocol() const override;

View File

@@ -17,7 +17,8 @@ static logging::logger clogger("thrift_controller");
thrift_controller::thrift_controller(distributed<replica::database>& db, sharded<auth::service>& auth,
sharded<cql3::query_processor>& qp, sharded<service::memory_limiter>& ml,
sharded<service::storage_service>& ss, sharded<service::storage_proxy>& proxy)
sharded<service::storage_service>& ss, sharded<service::storage_proxy>& proxy,
seastar::scheduling_group sg)
: _ops_sem(1)
, _db(db)
, _auth_service(auth)

View File

@@ -46,7 +46,7 @@ class thrift_controller : public protocol_server {
future<> do_stop_server();
public:
thrift_controller(distributed<replica::database>&, sharded<auth::service>&, sharded<cql3::query_processor>&, sharded<service::memory_limiter>&, sharded<service::storage_service>& ss, sharded<service::storage_proxy>& proxy);
thrift_controller(distributed<replica::database>&, sharded<auth::service>&, sharded<cql3::query_processor>&, sharded<service::memory_limiter>&, sharded<service::storage_service>& ss, sharded<service::storage_proxy>& proxy, seastar::scheduling_group sg);
virtual sstring name() const override;
virtual sstring protocol() const override;
virtual sstring protocol_version() const override;

View File

@@ -28,7 +28,8 @@ static logging::logger logger("cql_server_controller");
controller::controller(sharded<auth::service>& auth, sharded<service::migration_notifier>& mn,
sharded<gms::gossiper>& gossiper, sharded<cql3::query_processor>& qp, sharded<service::memory_limiter>& ml,
sharded<qos::service_level_controller>& sl_controller, sharded<service::endpoint_lifecycle_notifier>& elc_notif,
const db::config& cfg, scheduling_group_key cql_opcode_stats_key, maintenance_socket_enabled used_by_maintenance_socket)
const db::config& cfg, scheduling_group_key cql_opcode_stats_key, maintenance_socket_enabled used_by_maintenance_socket,
seastar::scheduling_group sg)
: _ops_sem(1)
, _auth_service(auth)
, _mnotifier(mn)

View File

@@ -68,7 +68,8 @@ public:
controller(sharded<auth::service>&, sharded<service::migration_notifier>&, sharded<gms::gossiper>&,
sharded<cql3::query_processor>&, sharded<service::memory_limiter>&,
sharded<qos::service_level_controller>&, sharded<service::endpoint_lifecycle_notifier>&,
const db::config& cfg, scheduling_group_key cql_opcode_stats_key, maintenance_socket_enabled used_by_maintenance_socket);
const db::config& cfg, scheduling_group_key cql_opcode_stats_key, maintenance_socket_enabled used_by_maintenance_socket,
seastar::scheduling_group sg);
virtual sstring name() const override;
virtual sstring protocol() const override;
virtual sstring protocol_version() const override;