Lines Matching refs:worker
217 client->worker->free_client(client);
225 client->worker->free_client(client);
239 client->worker->free_client(client);
250 auto worker = static_cast<Worker *>(w->data);
251 auto nclients_per_second = worker->rate;
252 auto conns_remaining = worker->nclients - worker->nconns_made;
256 auto req_todo = worker->nreqs_per_client;
257 if (worker->nreqs_rem > 0) {
259 --worker->nreqs_rem;
262 std::make_unique<Client>(worker->next_client_id++, worker, req_todo);
264 ++worker->nconns_made;
270 if (worker->config->is_timing_based_mode()) {
271 worker->clients.push_back(client.release());
276 worker->report_rate_progress();
278 if (!worker->config->is_timing_based_mode()) {
279 if (worker->nconns_made >= worker->nclients) {
280 ev_timer_stop(worker->loop, w);
284 assert(worker->nclients == worker->clients.size());
292 auto worker = static_cast<Worker *>(w->data);
294 worker->current_phase = Phase::DURATION_OVER;
296 std::cout << "Main benchmark duration is over for thread #" << worker->id
298 worker->stop_all_clients();
299 std::cout << "Stopped all clients for thread #" << worker->id << std::endl;
306 auto worker = static_cast<Worker *>(w->data);
308 std::cout << "Warm-up phase is over for thread #" << worker->id << "."
310 std::cout << "Main benchmark duration is started for thread #" << worker->id
312 assert(worker->stats.req_started == 0);
313 assert(worker->stats.req_done == 0);
315 for (auto client : worker->clients) {
329 worker->current_phase = Phase::MAIN_DURATION;
331 ev_timer_start(worker->loop, &worker->duration_watcher);
389 ev_timer_stop(client->worker->loop, &client->conn_inactivity_watcher);
390 ev_timer_stop(client->worker->loop, &client->conn_active_watcher);
402 ev_timer_stop(client->worker->loop, w);
415 ev_timer_stop(client->worker->loop, w);
420 ev_timer_stop(client->worker->loop, w);
435 ev_timer_stop(client->worker->loop, w);
449 ev_timer_again(client->worker->loop, &client->request_timeout_watcher);
453 Client::Client(uint32_t id, Worker *worker, size_t req_todo)
454 : wb(&worker->mcpool),
456 worker(worker),
489 worker->config->conn_inactivity_timeout);
493 worker->config->conn_active_timeout, 0.);
527 worker->sample_client_stat(&cstat);
528 ++worker->client_smp.n;
579 ssl = SSL_new(worker->ssl_ctx);
610 if (!worker->config->is_timing_based_mode() ||
611 worker->current_phase == Phase::MAIN_DURATION) {
615 } else if (worker->current_phase == Phase::INITIAL_IDLE) {
616 worker->current_phase = Phase::WARM_UP;
617 std::cout << "Warm-up started for thread #" << worker->id << "."
619 ev_timer_start(worker->loop, &worker->warmup_watcher);
622 if (worker->config->conn_inactivity_timeout > 0.) {
623 ev_timer_again(worker->loop, &conn_inactivity_watcher);
654 ev_io_start(worker->loop, &wev);
658 ev_io_start(worker->loop, &rev);
677 if (worker->config->conn_inactivity_timeout > 0.) {
678 ev_timer_again(worker->loop, &conn_inactivity_watcher);
690 if (worker->current_phase == Phase::MAIN_DURATION) {
693 worker->stats.req_failed += req_inflight;
694 worker->stats.req_error += req_inflight;
728 ev_timer_stop(worker->loop, &quic.pkt_timer);
730 ev_timer_stop(worker->loop, &conn_inactivity_watcher);
731 ev_timer_stop(worker->loop, &conn_active_watcher);
732 ev_timer_stop(worker->loop, &rps_watcher);
733 ev_timer_stop(worker->loop, &request_timeout_watcher);
738 ev_io_stop(worker->loop, &wev);
739 ev_io_stop(worker->loop, &rev);
768 if (worker->current_phase != Phase::MAIN_DURATION) {
772 ++worker->stats.req_started;
775 if (!worker->config->is_timing_based_mode()) {
780 if (worker->config->conn_active_timeout > 0. && req_left == 0) {
781 ev_timer_start(worker->loop, &conn_active_watcher);
788 if (worker->current_phase != Phase::MAIN_DURATION) {
799 worker->stats.req_timedout += req_inflight;
805 if (worker->current_phase != Phase::MAIN_DURATION) {
811 worker->stats.req_failed += req_abandoned;
812 worker->stats.req_error += req_abandoned;
819 if (worker->current_phase != Phase::MAIN_DURATION) {
823 worker->stats.req_failed += req_left;
824 worker->stats.req_error += req_left;
831 std::cout << "Process Request Failure:" << worker->stats.req_failed
891 if (worker->id == 0 && !worker->tls_info_report_done) {
892 worker->tls_info_report_done = true;
901 if (worker->id == 0 && !worker->app_info_report_done) {
902 worker->app_info_report_done = true;
930 if (worker->current_phase != Phase::MAIN_DURATION) {
956 ++worker->stats.status[2];
959 ++worker->stats.status[3];
962 ++worker->stats.status[status / 100];
977 if (worker->current_phase != Phase::MAIN_DURATION) {
984 ++worker->stats.status[2];
987 ++worker->stats.status[3];
990 ++worker->stats.status[status / 100];
998 if (worker->current_phase == Phase::MAIN_DURATION) {
1010 ++worker->stats.req_success;
1014 ++worker->stats.req_status_success;
1016 ++worker->stats.req_failed;
1019 worker->sample_req_stat(req_stat);
1022 ++worker->request_times_smp.n;
1024 ++worker->stats.req_failed;
1025 ++worker->stats.req_error;
1027 ++worker->stats.req_done;
1030 if (worker->config->log_fd != -1) {
1052 while (write(worker->config->log_fd, buf.data(), nwrite) == -1 &&
1058 worker->report_progress();
1068 ev_feed_event(worker->loop, &request_timeout_watcher, EV_TIMER);
1189 ev_timer_again(worker->loop, &rps_watcher);
1233 ev_timer_again(worker->loop, &request_timeout_watcher);
1246 if (worker->current_phase == Phase::MAIN_DURATION) {
1247 worker->stats.bytes_total += len;
1310 ev_io_start(worker->loop, &wev);
1319 ev_io_stop(worker->loop, &wev);
1328 ev_io_start(worker->loop, &rev);
1329 ev_io_stop(worker->loop, &wev);
1359 ev_io_stop(worker->loop, &wev);
1362 ev_io_start(worker->loop, &wev);
1369 ev_io_stop(worker->loop, &wev);
1433 ev_io_start(worker->loop, &wev);
1443 ev_io_stop(worker->loop, &wev);
1485 ++worker->stats.udp_dgram_sent;
1488 ev_io_stop(worker->loop, &wev);
1537 void Client::signal_write() { ev_io_start(worker->loop, &wev); }
2286 response time when using one worker thread, but may
2293 "base.M.N.sqlog" where M is worker ID and N is client ID
3166 auto &worker = workers.back();
3168 std::async(std::launch::async, [&worker, &mu, &cv, &ready]() {
3173 worker->run();