]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cls/queue: use larger read chunks in queue_list_entries 49903/head
authorIgor Fedotov <igor.fedotov@croit.io>
Wed, 7 Dec 2022 23:10:57 +0000 (02:10 +0300)
committerIgor Fedotov <igor.fedotov@croit.io>
Fri, 27 Jan 2023 14:47:31 +0000 (17:47 +0300)
Fixes: https://tracker.ceph.com/issues/58190
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 19a58750f8b1dfda3dd7d1fb2de8e17b6bf9b207)

src/cls/queue/cls_queue_src.cc

index 8806b5804971ae7476b31953410a5c6d9f7b30dc..372eee5e6ca73485dca8c8843eda5ecc03ff2d3e 100644 (file)
@@ -13,6 +13,9 @@ using ceph::bufferlist;
 using ceph::decode;
 using ceph::encode;
 
+const uint64_t page_size = 4096;
+const uint64_t large_chunk_size = 1ul << 22;
+
 int queue_write_head(cls_method_context_t hctx, cls_queue_head& head)
 {
   bufferlist bl;
@@ -42,7 +45,7 @@ int queue_write_head(cls_method_context_t hctx, cls_queue_head& head)
 
 int queue_read_head(cls_method_context_t hctx, cls_queue_head& head)
 {
-  uint64_t chunk_size = 1024, start_offset = 0;
+  uint64_t chunk_size = page_size, start_offset = 0;
 
   bufferlist bl_head;
   const auto  ret = cls_cxx_read(hctx, start_offset, chunk_size, &bl_head);
@@ -280,7 +283,6 @@ int queue_list_entries(cls_method_context_t hctx, const cls_queue_list_op& op, c
   }
 
   op_ret.is_truncated = true;
-  uint64_t chunk_size = 1024;
   uint64_t contiguous_data_size = 0, size_to_read = 0;
   bool wrap_around = false;
 
@@ -309,11 +311,7 @@ int queue_list_entries(cls_method_context_t hctx, const cls_queue_list_op& op, c
   
     bufferlist bl_chunk;
     //Read chunk size at a time, if it is less than contiguous data size, else read contiguous data size
-    if (contiguous_data_size > chunk_size) {
-      size_to_read = chunk_size;
-    } else {
-      size_to_read = contiguous_data_size;
-    }
+    size_to_read = std::min(contiguous_data_size, large_chunk_size);
     CLS_LOG(10, "INFO: queue_list_entries(): size_to_read is %lu", size_to_read);
     if (size_to_read == 0) {
       next_marker = head.tail;