@@ -471,8 +471,12 @@ void client::create_request(void)
471
471
// are we set or get? this depends on the ratio
472
472
if (m_set_ratio_count < m_config->ratio .a ) {
473
473
// set command
474
-
475
- data_object *obj = m_obj_gen->get_object (m_config->key_pattern [0 ] == ' R' ? 0 : 1 );
474
+ int iter = OBJECT_GENERATOR_KEY_SET_ITER;
475
+ if (m_config->key_pattern [0 ] == ' R' )
476
+ iter = OBJECT_GENERATOR_KEY_RANDOM;
477
+ else if (m_config->key_pattern [0 ] == ' G' )
478
+ iter = OBJECT_GENERATOR_KEY_GAUSSIAN;
479
+ data_object *obj = m_obj_gen->get_object (iter);
476
480
unsigned int key_len;
477
481
const char *key = obj->get_key (&key_len);
478
482
unsigned int value_len;
@@ -483,7 +487,7 @@ void client::create_request(void)
483
487
benchmark_debug_log (" SET key=[%.*s] value_len=%u expiry=%u\n " ,
484
488
key_len, key, value_len, obj->get_expiry ());
485
489
cmd_size = m_protocol->write_command_set (key, key_len, value, value_len,
486
- obj->get_expiry ());
490
+ obj->get_expiry (), m_config-> data_offset );
487
491
488
492
m_pipeline.push (new client::request (rt_set, cmd_size, NULL , 1 ));
489
493
} else if (m_get_ratio_count < m_config->ratio .b ) {
@@ -500,7 +504,12 @@ void client::create_request(void)
500
504
m_keylist->clear ();
501
505
while (m_keylist->get_keys_count () < keys_count) {
502
506
unsigned int keylen;
503
- const char *key = m_obj_gen->get_key (m_config->key_pattern [2 ] == ' R' ? 0 : 2 , &keylen);
507
+ int iter = OBJECT_GENERATOR_KEY_GET_ITER;
508
+ if (m_config->key_pattern [2 ] == ' R' )
509
+ iter = OBJECT_GENERATOR_KEY_RANDOM;
510
+ else if (m_config->key_pattern [2 ] == ' G' )
511
+ iter = OBJECT_GENERATOR_KEY_GAUSSIAN;
512
+ const char *key = m_obj_gen->get_key (iter, &keylen);
504
513
505
514
assert (key != NULL );
506
515
assert (keylen > 0 );
@@ -521,12 +530,17 @@ void client::create_request(void)
521
530
m_pipeline.push (new client::request (rt_get, cmd_size, NULL , m_keylist->get_keys_count ()));
522
531
} else {
523
532
unsigned int keylen;
524
- const char *key = m_obj_gen->get_key (m_config->key_pattern [2 ] == ' R' ? 0 : 2 , &keylen);
533
+ int iter = OBJECT_GENERATOR_KEY_GET_ITER;
534
+ if (m_config->key_pattern [2 ] == ' R' )
535
+ iter = OBJECT_GENERATOR_KEY_RANDOM;
536
+ else if (m_config->key_pattern [2 ] == ' G' )
537
+ iter = OBJECT_GENERATOR_KEY_GAUSSIAN;
538
+ const char *key = m_obj_gen->get_key (iter, &keylen);
525
539
assert (key != NULL );
526
540
assert (keylen > 0 );
527
541
528
542
benchmark_debug_log (" GET key=[%.*s]\n " , keylen, key);
529
- cmd_size = m_protocol->write_command_get (key, keylen);
543
+ cmd_size = m_protocol->write_command_get (key, keylen, m_config-> data_offset );
530
544
531
545
m_get_ratio_count++;
532
546
m_pipeline.push (new client::request (rt_get, cmd_size, NULL , 1 ));
@@ -734,15 +748,20 @@ void verify_client::create_request(void)
734
748
if (m_set_ratio_count < m_config->ratio .a ) {
735
749
// Prepare a GET request that will be compared against a previous
736
750
// SET request.
737
- data_object *obj = m_obj_gen->get_object (m_config->key_pattern [0 ] == ' R' ? 0 : 1 );
751
+ int iter = OBJECT_GENERATOR_KEY_SET_ITER;
752
+ if (m_config->key_pattern [0 ] == ' R' )
753
+ iter = OBJECT_GENERATOR_KEY_RANDOM;
754
+ else if (m_config->key_pattern [0 ] == ' G' )
755
+ iter = OBJECT_GENERATOR_KEY_GAUSSIAN;
756
+ data_object *obj = m_obj_gen->get_object (iter);
738
757
unsigned int key_len;
739
758
const char *key = obj->get_key (&key_len);
740
759
unsigned int value_len;
741
760
const char *value = obj->get_value (&value_len);
742
761
unsigned int cmd_size;
743
762
744
763
m_set_ratio_count++;
745
- cmd_size = m_protocol->write_command_get (key, key_len);
764
+ cmd_size = m_protocol->write_command_get (key, key_len, m_config-> data_offset );
746
765
747
766
m_pipeline.push (new verify_client::verify_request (rt_get,
748
767
cmd_size, NULL , 1 , key, key_len, value, value_len));
@@ -758,7 +777,12 @@ void verify_client::create_request(void)
758
777
m_keylist->clear ();
759
778
while (m_keylist->get_keys_count () < keys_count) {
760
779
unsigned int keylen;
761
- const char *key = m_obj_gen->get_key (m_config->key_pattern [2 ] == ' R' ? 0 : 2 , &keylen);
780
+ int iter = OBJECT_GENERATOR_KEY_GET_ITER;
781
+ if (m_config->key_pattern [2 ] == ' R' )
782
+ iter = OBJECT_GENERATOR_KEY_RANDOM;
783
+ else if (m_config->key_pattern [2 ] == ' G' )
784
+ iter = OBJECT_GENERATOR_KEY_GAUSSIAN;
785
+ const char *key = m_obj_gen->get_key (iter, &keylen);
762
786
763
787
assert (key != NULL );
764
788
assert (keylen > 0 );
@@ -769,7 +793,12 @@ void verify_client::create_request(void)
769
793
m_get_ratio_count += keys_count;
770
794
} else {
771
795
unsigned int keylen;
772
- m_obj_gen->get_key (m_config->key_pattern [2 ] == ' R' ? 0 : 2 , &keylen);
796
+ int iter = OBJECT_GENERATOR_KEY_GET_ITER;
797
+ if (m_config->key_pattern [2 ] == ' R' )
798
+ iter = OBJECT_GENERATOR_KEY_RANDOM;
799
+ else if (m_config->key_pattern [2 ] == ' G' )
800
+ iter = OBJECT_GENERATOR_KEY_GAUSSIAN;
801
+ m_obj_gen->get_key (iter, &keylen);
773
802
m_get_ratio_count++;
774
803
}
775
804
@@ -1342,7 +1371,7 @@ void run_stats::summarize(totals& result) const
1342
1371
result.m_bytes_sec = (double ) ((result.m_bytes / 1024 ) / test_duration_sec);
1343
1372
}
1344
1373
1345
- void run_stats::print (FILE *out)
1374
+ void run_stats::print (FILE *out, bool histogram )
1346
1375
{
1347
1376
// aggregate all one_second_stats; we do this only if we have
1348
1377
// one_second_stats, otherwise it means we're probably printing previously
@@ -1382,6 +1411,9 @@ void run_stats::print(FILE *out)
1382
1411
m_totals.m_latency ,
1383
1412
m_totals.m_bytes_sec );
1384
1413
1414
+ if (!histogram)
1415
+ return ;
1416
+
1385
1417
fprintf (out,
1386
1418
" \n\n "
1387
1419
" Request Latency Distribution\n "
0 commit comments