Hi, all
Recently, we use a demo to obverse the latency.
The demo is based on 'hello_world.c' in 'spdk/examples/nvme/hello_world'.
The modifications are described as following.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
static void write_complete(void *arg, const struct spdk_nvme_cpl *completion) {
    struct hello_world_sequence   *sequence = arg;
    spdk_free(sequence->buf);
    sequence->is_completed = 1;
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
hello_world(int id) {
...
    clock_gettime(CLOCK_REALTIME, &time1);
    rc = spdk_nvme_ns_cmd_write(ns_entry->ns, ns_entry->qpair, sequence.buf,
                                                       id, /* LBA start */ 
                                                      1, /* number of LBAs */
                                                       write_complete, &sequence, 0);
...
    while (!sequence.is_completed)  {
            spdk_nvme_qpair_process_completions(ns_entry->qpair, 0);
     }
     clock_gettime(CLOCK_REALTIME, &time2);
     printf("%ld \n", diff(time1,time2).tv_nsec);
...
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
int main() {
... 
   int i = 500;
    while (i > 0) {
            if (i-- % 4 == 0) {
                 id += 10;
            }
            hello_world(id);
    }
...
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
We find that when we access the same block consecutively, the occurrence of maximum latencies will become more frequent. 
Additionally,  they can reach even 2-3 ms and present a periodical change. 
The related experiment results can be seen in accessory 'result'. The results are like:
 Why?
(1) As shown in the file 'result', for the same block, the latency of the first accessing is about 10-12 ¦Ěs while the second, third and the forth accessing can reach 700-900 ¦Ěs even 2-3 ms? 
     I want to know the reason why the operation difference between the first accessing and the others exists.
(2) Why the maximums of 2-3 ms have a periodical change as shown in the above figure?

  Best wishes,
  Jiajia Chu