weizuo93 opened a new issue #4882:
URL: https://github.com/apache/incubator-doris/issues/4882


   The current compaction mechanism is that there is a producer thread that has 
been producing compaction tasks, and the selected tablet must apply for 
`permits`. When a tablet could hold `permits`, compaction task for this tablet 
will be submitted to  thread pool. We take compaction score as `permits` which 
is used for limiting memory consumption. However,  
`pick_rowset_to_compaction()` will be executed before the file merge in 
compaction thread, and the number of segment files that actually perform the 
merge operation is smaller than compaction score. In addition, it is also 
possible that compaction task exits directly because the tablet doesn't meet 
the requirements of compaction. 
   
   Can we execute 'pick rowsets' before applying for permits for a compaction 
task, calculate the number of segment files that actually participate in the 
merge operation, and take this number as `permits`.
   
   Based on test results, we found that`pick_rowset_to_compaction()` execution 
time for a tablet is on the time scale of milliseconds. Therefore, there is 
little pressure on the producer thread.
   
   ```
   1112 16:00:08.686122 (+   982us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:08.355522 (+  1033us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:08.355372 (+   930us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:09.707385 (+   990us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:32.218772 (+  1305us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:32.212823 (+  1212us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:32.077322 (+  2411us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:33.534394 (+  2484us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:52.350023 (+  1181us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:54.011435 (+  1212us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:01:14.845957 (+   294us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:00:17.865887 (+    97us) base_compaction.cpp:44] rowsets picked
   1112 16:01:35.193204 (+   206us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:01:39.244388 (+   198us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:02:18.931984 (+  1627us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:02:19.014592 (+  1394us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:03.405753 (+   160us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:04.777374 (+   350us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:07.016017 (+   164us) cumulative_compaction.cpp:50] rowsets picked
   1112 15:59:12.573256 (+   205us) base_compaction.cpp:44] rowsets picked
   1112 16:02:18.932822 (+  2213us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:08.975090 (+   339us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:02:18.932387 (+  1885us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:11.285206 (+   402us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:14.799639 (+   119us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:20.540975 (+   148us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:23.908919 (+   198us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:32.000026 (+   133us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:13.347364 (+  2796us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:13.722429 (+  2046us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:43.050516 (+   410us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:43.849807 (+   387us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:02:17.914220 (+   469us) base_compaction.cpp:44] rowsets picked
   1112 16:03:48.663824 (+   336us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:49.778246 (+   241us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:03:52.141355 (+   468us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:04:20.670042 (+  1564us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:04:38.078296 (+   264us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:04:36.673882 (+  1177us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:04:37.060312 (+  1139us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:04:55.154987 (+  1215us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:04:55.403399 (+  1071us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:05:02.536426 (+  1551us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:05:32.090439 (+  1024us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:05:18.661826 (+  1306us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:05:18.990078 (+  1241us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:05:42.798424 (+   143us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:05:46.082527 (+   176us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:05:41.727956 (+  1584us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:06:01.083588 (+  1123us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:06:26.622230 (+   632us) cumulative_compaction.cpp:50] rowsets picked
   1112 16:06:35.897463 (+    92us) cumulative_compaction.cpp:50] rowsets picked
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to