[ https://issues.apache.org/jira/browse/KUDU-3397?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
shenxingwuying updated KUDU-3397: --------------------------------- Description: I have added a SchedulerThread function, as Jira https://issues.apache.org/jira/browse/KUDU-3364 said, some periodic tasks can be refactor using SchedulerThread. There are 2 benefits: # Use a thread pool(very few threads 1 or 2 is ok) with SchedulerThread to replace all the independent, isolated Threads. less threads. # By the refactor, some tasks can support manual trigger, more maintainable. ## auto-rebalancer ## leader-auto-rebalancer(doing at: ) The latent Thread can be refactor may exist below. They should be analysed more details. {code:java} //代码占位符 ag Thread::Create src/kudu/ | grep -v test | grep -v src/kudu/util/threadpool.cc src/kudu/clock/builtin_ntp.cc:651: Thread::Create("ntp", "ntp client", [this]() { this->PollThread(); }, &thread_), src/kudu/hms/hms_catalog.cc:132: RETURN_NOT_OK(Thread::Create("hms_catalog", "fetch_uuid", src/kudu/master/hms_notification_log_listener.cc:98: return kudu::Thread::Create("catalog manager", "hms-notification-log-listener", src/kudu/master/master.cc:452: return Thread::Create("master", src/kudu/master/catalog_manager.cc:787: RETURN_NOT_OK(kudu::Thread::Create("catalog manager", "bgtasks", src/kudu/rpc/acceptor_pool.cc:96: Status s = kudu::Thread::Create("acceptor pool", "acceptor", src/kudu/rpc/reactor.cc:193: return kudu::Thread::Create("reactor", "rpc reactor", src/kudu/rpc/reactor.cc:660:Status ReactorThread::CreateClientSocket(int family, Socket* sock) { src/kudu/rpc/result_tracker.cc:462: CHECK_OK(Thread::Create("server", "result-tracker", src/kudu/rpc/service_pool.cc:93: CHECK_OK(kudu::Thread::Create( src/kudu/security/init.cc:318: RETURN_NOT_OK(Thread::Create("kerberos", "reacquire thread", src/kudu/server/diagnostics_log.cc:144: Status s = Thread::Create("server", "diag-logger", src/kudu/server/server_base.cc:837: return Thread::Create("server", "excess-log-deleter", src/kudu/server/server_base.cc:885: return Thread::Create("server", "tcmalloc-memory-gc", src/kudu/subprocess/server.cc:130: RETURN_NOT_OK(Thread::Create("subprocess", "start", src/kudu/subprocess/server.cc:153: RETURN_NOT_OK(Thread::Create("subprocess", "responder", src/kudu/subprocess/server.cc:157: RETURN_NOT_OK(Thread::Create("subprocess", "reader", src/kudu/subprocess/server.cc:160: RETURN_NOT_OK(Thread::Create("subprocess", "writer", src/kudu/subprocess/server.cc:163: return Thread::Create("subprocess", "deadline-checker", src/kudu/tools/tool_action_local_replica.cc:265: RETURN_NOT_OK(Thread::Create("tool-tablet-copy", "check-progress", src/kudu/tserver/heartbeater.cc:669: return kudu::Thread::Create("heartbeater", "heartbeat", src/kudu/tserver/scanners.cc:118: RETURN_NOT_OK(Thread::Create("scanners", "removal_thread", src/kudu/tserver/tablet_copy_service.cc:114: CHECK_OK(Thread::Create("tablet-copy", "tc-session-exp", src/kudu/util/cloud/instance_detector.cc:76: RETURN_NOT_OK(Thread::Create( src/kudu/util/debug/trace_event_impl.cc:1364: Status s = Thread::CreateWithFlags( src/kudu/util/file_cache.cc:504: return Thread::Create("cache", Substitute("$0-evict", cache_name_), src/kudu/util/kernel_stack_watchdog.cc:71: CHECK_OK(Thread::CreateWithFlags( src/kudu/util/maintenance_manager.cc:209: return Thread::Create("maintenance", "maintenance_scheduler", src/kudu/util/minidump.cc:288: return Thread::Create("minidump", "sigusr1-handler", src/kudu/util/pstack_watcher.cc:53: CHECK_OK(Thread::Create("pstack_watcher", "pstack_watcher", src/kudu/util/thread.h:118: // Flags passed to Thread::CreateWithFlags(). src/kudu/util/ttl_cache.h:139: CHECK_OK(Thread::Create( {code} The direct purpose, the threadpool can unified some seperator threads, eg: master's 'auto-rebalancer' (the Thread), 'expired-reserved-tables-deleter', 'hms-notification-log-listener' ("catalog manager", "bgtasks"), and later's leader-rebalancer's Thread, and some other threads. As tserver has some others thread The first one : [https://gerrit.cloudera.org/c/18679/] was: I have added a SchedulerThread function, as Jira https://issues.apache.org/jira/browse/KUDU-3364 said, some periodic tasks can be refactor using SchedulerThread. The latent Thread can be refactor may exist below. They should be analysed more details. {code:java} //代码占位符 ag Thread::Create src/kudu/ | grep -v test | grep -v src/kudu/util/threadpool.cc src/kudu/clock/builtin_ntp.cc:651: Thread::Create("ntp", "ntp client", [this]() { this->PollThread(); }, &thread_), src/kudu/hms/hms_catalog.cc:132: RETURN_NOT_OK(Thread::Create("hms_catalog", "fetch_uuid", src/kudu/master/hms_notification_log_listener.cc:98: return kudu::Thread::Create("catalog manager", "hms-notification-log-listener", src/kudu/master/master.cc:452: return Thread::Create("master", src/kudu/master/catalog_manager.cc:787: RETURN_NOT_OK(kudu::Thread::Create("catalog manager", "bgtasks", src/kudu/rpc/acceptor_pool.cc:96: Status s = kudu::Thread::Create("acceptor pool", "acceptor", src/kudu/rpc/reactor.cc:193: return kudu::Thread::Create("reactor", "rpc reactor", src/kudu/rpc/reactor.cc:660:Status ReactorThread::CreateClientSocket(int family, Socket* sock) { src/kudu/rpc/result_tracker.cc:462: CHECK_OK(Thread::Create("server", "result-tracker", src/kudu/rpc/service_pool.cc:93: CHECK_OK(kudu::Thread::Create( src/kudu/security/init.cc:318: RETURN_NOT_OK(Thread::Create("kerberos", "reacquire thread", src/kudu/server/diagnostics_log.cc:144: Status s = Thread::Create("server", "diag-logger", src/kudu/server/server_base.cc:837: return Thread::Create("server", "excess-log-deleter", src/kudu/server/server_base.cc:885: return Thread::Create("server", "tcmalloc-memory-gc", src/kudu/subprocess/server.cc:130: RETURN_NOT_OK(Thread::Create("subprocess", "start", src/kudu/subprocess/server.cc:153: RETURN_NOT_OK(Thread::Create("subprocess", "responder", src/kudu/subprocess/server.cc:157: RETURN_NOT_OK(Thread::Create("subprocess", "reader", src/kudu/subprocess/server.cc:160: RETURN_NOT_OK(Thread::Create("subprocess", "writer", src/kudu/subprocess/server.cc:163: return Thread::Create("subprocess", "deadline-checker", src/kudu/tools/tool_action_local_replica.cc:265: RETURN_NOT_OK(Thread::Create("tool-tablet-copy", "check-progress", src/kudu/tserver/heartbeater.cc:669: return kudu::Thread::Create("heartbeater", "heartbeat", src/kudu/tserver/scanners.cc:118: RETURN_NOT_OK(Thread::Create("scanners", "removal_thread", src/kudu/tserver/tablet_copy_service.cc:114: CHECK_OK(Thread::Create("tablet-copy", "tc-session-exp", src/kudu/util/cloud/instance_detector.cc:76: RETURN_NOT_OK(Thread::Create( src/kudu/util/debug/trace_event_impl.cc:1364: Status s = Thread::CreateWithFlags( src/kudu/util/file_cache.cc:504: return Thread::Create("cache", Substitute("$0-evict", cache_name_), src/kudu/util/kernel_stack_watchdog.cc:71: CHECK_OK(Thread::CreateWithFlags( src/kudu/util/maintenance_manager.cc:209: return Thread::Create("maintenance", "maintenance_scheduler", src/kudu/util/minidump.cc:288: return Thread::Create("minidump", "sigusr1-handler", src/kudu/util/pstack_watcher.cc:53: CHECK_OK(Thread::Create("pstack_watcher", "pstack_watcher", src/kudu/util/thread.h:118: // Flags passed to Thread::CreateWithFlags(). src/kudu/util/ttl_cache.h:139: CHECK_OK(Thread::Create( {code} The direct purpose, the threadpool can unified some seperator threads, eg: master's 'auto-rebalancer' (the Thread), 'expired-reserved-tables-deleter', 'hms-notification-log-listener' ("catalog manager", "bgtasks"), and later's leader-rebalancer's Thread, and some other threads. As tserver has some others thread The first one : [https://gerrit.cloudera.org/c/18679/] > do refactor for some periodic tasks using SchedulerThread > --------------------------------------------------------- > > Key: KUDU-3397 > URL: https://issues.apache.org/jira/browse/KUDU-3397 > Project: Kudu > Issue Type: Improvement > Components: master, tserver > Reporter: shenxingwuying > Priority: Minor > > I have added a SchedulerThread function, as Jira > https://issues.apache.org/jira/browse/KUDU-3364 said, > some periodic tasks can be refactor using SchedulerThread. > > There are 2 benefits: > # Use a thread pool(very few threads 1 or 2 is ok) with SchedulerThread to > replace all the independent, isolated Threads. less threads. > # By the refactor, some tasks can support manual trigger, more maintainable. > ## auto-rebalancer > ## leader-auto-rebalancer(doing at: ) > > The latent Thread can be refactor may exist below. > They should be analysed more details. > {code:java} > //代码占位符 > ag Thread::Create src/kudu/ | grep -v test | grep -v > src/kudu/util/threadpool.cc > src/kudu/clock/builtin_ntp.cc:651: Thread::Create("ntp", "ntp client", > [this]() { this->PollThread(); }, &thread_), > src/kudu/hms/hms_catalog.cc:132: RETURN_NOT_OK(Thread::Create("hms_catalog", > "fetch_uuid", > src/kudu/master/hms_notification_log_listener.cc:98: return > kudu::Thread::Create("catalog manager", "hms-notification-log-listener", > src/kudu/master/master.cc:452: return Thread::Create("master", > src/kudu/master/catalog_manager.cc:787: > RETURN_NOT_OK(kudu::Thread::Create("catalog manager", "bgtasks", > src/kudu/rpc/acceptor_pool.cc:96: Status s = > kudu::Thread::Create("acceptor pool", "acceptor", > src/kudu/rpc/reactor.cc:193: return kudu::Thread::Create("reactor", "rpc > reactor", > src/kudu/rpc/reactor.cc:660:Status ReactorThread::CreateClientSocket(int > family, Socket* sock) { > src/kudu/rpc/result_tracker.cc:462: CHECK_OK(Thread::Create("server", > "result-tracker", > src/kudu/rpc/service_pool.cc:93: CHECK_OK(kudu::Thread::Create( > src/kudu/security/init.cc:318: RETURN_NOT_OK(Thread::Create("kerberos", > "reacquire thread", > src/kudu/server/diagnostics_log.cc:144: Status s = Thread::Create("server", > "diag-logger", > src/kudu/server/server_base.cc:837: return Thread::Create("server", > "excess-log-deleter", > src/kudu/server/server_base.cc:885: return Thread::Create("server", > "tcmalloc-memory-gc", > src/kudu/subprocess/server.cc:130: > RETURN_NOT_OK(Thread::Create("subprocess", "start", > src/kudu/subprocess/server.cc:153: > RETURN_NOT_OK(Thread::Create("subprocess", "responder", > src/kudu/subprocess/server.cc:157: > RETURN_NOT_OK(Thread::Create("subprocess", "reader", > src/kudu/subprocess/server.cc:160: > RETURN_NOT_OK(Thread::Create("subprocess", "writer", > src/kudu/subprocess/server.cc:163: return Thread::Create("subprocess", > "deadline-checker", > src/kudu/tools/tool_action_local_replica.cc:265: > RETURN_NOT_OK(Thread::Create("tool-tablet-copy", "check-progress", > src/kudu/tserver/heartbeater.cc:669: return > kudu::Thread::Create("heartbeater", "heartbeat", > src/kudu/tserver/scanners.cc:118: RETURN_NOT_OK(Thread::Create("scanners", > "removal_thread", > src/kudu/tserver/tablet_copy_service.cc:114: > CHECK_OK(Thread::Create("tablet-copy", "tc-session-exp", > src/kudu/util/cloud/instance_detector.cc:76: RETURN_NOT_OK(Thread::Create( > src/kudu/util/debug/trace_event_impl.cc:1364: Status s = > Thread::CreateWithFlags( > src/kudu/util/file_cache.cc:504: return Thread::Create("cache", > Substitute("$0-evict", cache_name_), > src/kudu/util/kernel_stack_watchdog.cc:71: CHECK_OK(Thread::CreateWithFlags( > src/kudu/util/maintenance_manager.cc:209: return > Thread::Create("maintenance", "maintenance_scheduler", > src/kudu/util/minidump.cc:288: return Thread::Create("minidump", > "sigusr1-handler", > src/kudu/util/pstack_watcher.cc:53: > CHECK_OK(Thread::Create("pstack_watcher", "pstack_watcher", > src/kudu/util/thread.h:118: // Flags passed to Thread::CreateWithFlags(). > src/kudu/util/ttl_cache.h:139: CHECK_OK(Thread::Create( {code} > > The direct purpose, the threadpool can unified some seperator threads, eg: > master's 'auto-rebalancer' (the Thread), 'expired-reserved-tables-deleter', > 'hms-notification-log-listener' ("catalog manager", "bgtasks"), and later's > leader-rebalancer's Thread, and some other threads. As tserver has some > others thread > > > The first one : [https://gerrit.cloudera.org/c/18679/] > -- This message was sent by Atlassian Jira (v8.20.10#820010)