Add google flag for number of workers

Reviewers: buda

Reviewed By: buda

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D429
This commit is contained in:
Mislav Bradac 2017-06-06 15:48:04 +02:00
parent 15b57e2d52
commit 9acdc632e9

View File

@ -38,6 +38,8 @@ Logger logger;
DEFINE_string(interface, "0.0.0.0", "Default interface on which to listen."); DEFINE_string(interface, "0.0.0.0", "Default interface on which to listen.");
DEFINE_string(port, "7687", "Default port on which to listen."); DEFINE_string(port, "7687", "Default port on which to listen.");
DEFINE_int32(num_workers, std::thread::hardware_concurrency(),
"Number of workers");
void throw_and_stacktace(std::string message) { void throw_and_stacktace(std::string message) {
Stacktrace stacktrace; Stacktrace stacktrace;
@ -47,7 +49,7 @@ void throw_and_stacktace(std::string message) {
int main(int argc, char **argv) { int main(int argc, char **argv) {
fs::current_path(fs::path(argv[0]).parent_path()); fs::current_path(fs::path(argv[0]).parent_path());
gflags::ParseCommandLineFlags(&argc, &argv, true); gflags::ParseCommandLineFlags(&argc, &argv, true);
// logging init // Logging init.
#ifdef SYNC_LOGGER #ifdef SYNC_LOGGER
logging::init_sync(); logging::init_sync();
#else #else
@ -55,14 +57,14 @@ int main(int argc, char **argv) {
#endif #endif
logging::log->pipe(std::make_unique<Stdout>()); logging::log->pipe(std::make_unique<Stdout>());
// get logger // Get logger.
logger = logging::log->logger("Main"); logger = logging::log->logger("Main");
logger.info("{}", logging::log->type()); logger.info("{}", logging::log->type());
// unhandled exception handler init // Unhandled exception handler init.
std::set_terminate(&terminate_handler); std::set_terminate(&terminate_handler);
// signal handling init // Signal handling init.
SignalHandler::register_handler(Signal::SegmentationFault, []() { SignalHandler::register_handler(Signal::SegmentationFault, []() {
log_stacktrace("SegmentationFault signal raised"); log_stacktrace("SegmentationFault signal raised");
std::exit(EXIT_FAILURE); std::exit(EXIT_FAILURE);
@ -76,10 +78,10 @@ int main(int argc, char **argv) {
std::exit(EXIT_FAILURE); std::exit(EXIT_FAILURE);
}); });
// register args // Register args.
CONFIG_REGISTER_ARGS(argc, argv); CONFIG_REGISTER_ARGS(argc, argv);
// initialize endpoint // Initialize endpoint.
endpoint_t endpoint; endpoint_t endpoint;
try { try {
endpoint = endpoint_t(FLAGS_interface, FLAGS_port); endpoint = endpoint_t(FLAGS_interface, FLAGS_port);
@ -88,7 +90,7 @@ int main(int argc, char **argv) {
std::exit(EXIT_FAILURE); std::exit(EXIT_FAILURE);
} }
// initialize socket // Initialize socket.
socket_t socket; socket_t socket;
if (!socket.Bind(endpoint)) { if (!socket.Bind(endpoint)) {
logger.error("Cannot bind to socket on {} at {}", FLAGS_interface, logger.error("Cannot bind to socket on {} at {}", FLAGS_interface,
@ -109,15 +111,13 @@ int main(int argc, char **argv) {
Dbms dbms; Dbms dbms;
QueryEngine<result_stream_t> query_engine; QueryEngine<result_stream_t> query_engine;
// initialize server // Initialize server.
bolt_server_t server(std::move(socket), dbms, query_engine); bolt_server_t server(std::move(socket), dbms, query_engine);
serverptr = &server; serverptr = &server;
// server start with N threads // Start worker threads.
// TODO: N should be configurable logger.info("Starting {} workers", FLAGS_num_workers);
auto N = std::thread::hardware_concurrency(); server.Start(FLAGS_num_workers);
logger.info("Starting {} workers", N);
server.Start(N);
logger.info("Shutting down..."); logger.info("Shutting down...");
return EXIT_SUCCESS; return EXIT_SUCCESS;