]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
test/crimson: cbt test does rand-reads instead of seq-reads. 30794/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 8 Oct 2019 17:34:05 +0000 (19:34 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 8 Oct 2019 19:48:17 +0000 (21:48 +0200)
commit02ce12c2c48eaa105d218e4ae23bf0a119053e40
tree9bbf70aba6023207e5be142419ea5cbef06b8211
parent804458bf51d672c58fe3cb0cb33d91c185ac73e9
test/crimson: cbt test does rand-reads instead of seq-reads.

The rationale behind the change is not only that random
read performance tends to be more important and meaningful.
Actually, the current procedure is broken because of how
`rados bench` internally operates: the number of seq read
operations is limited by the number of write ops used to
create the data set (`write` with the `--no-cleanup` option):

  ```cpp
  int ObjBencher::write_bench(/* ... */) {
    // ...
    //write object size/number data for read benchmarks
    encode(data.object_size, b_write);
    encode(data.finished, b_write);

    //...

  int ObjBencher::fetch_bench_metadata(// ...
                                       int* num_ops, /* ... */) {
    // ...
    decode(*object_size, p);
    decode(*num_ops, p);

  int ObjBencher::seq_read_bench(
    int seconds_to_run, int num_ops, int num_objects,
    int concurrentios, int pid, bool no_verify) {

    // ...

    //start initial reads
    for (int i = 0; i < concurrentios; ++i) {
      // ...
      ++data.started;
    }

    // ...

    while ((seconds_to_run && mono_clock::now() < finish_time) &&
           num_ops > data.started) {
  ```

This makes significant problem as the cbt test uses short (3 sec.)
period of prefill. In the consequence, the sequential read testing
takes around half-second.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/test/crimson/cbt/radosbench_4K_read.yaml