Skip to content

[CBRD-26013] Allow using available workers even when requested parallelism exceeds available capacity#6778

Open
youngjinj wants to merge 12 commits intoCUBRID:developfrom
youngjinj:CBRD-26013
Open

[CBRD-26013] Allow using available workers even when requested parallelism exceeds available capacity#6778
youngjinj wants to merge 12 commits intoCUBRID:developfrom
youngjinj:CBRD-26013

Conversation

@youngjinj
Copy link
Contributor

@youngjinj youngjinj commented Jan 19, 2026

http://jira.cubrid.org/browse/CBRD-26013

Purpose

병렬 워커 풀이 완전히 고갈되지 않은 경우, 요청한 병렬 수준을 모두 확보하지 못하더라도 가용 스레드 범위 내에서 부분 병렬 실행을 허용하여 전체 처리량과 응답 시간을 개선합니다.

Implementation

  1. parallel_query::worker_manager_global

    • try_reserve_workers()가 요청 개수 전부가 아닌, 실제로 가용한 개수만큼 반환하도록 변경
  2. parallel_query::worker_manager

    • release_workers()가 해제할 개수를 인자로 받지 않도록 변경
    • worker_manager 생성 시 저장해둔 reserved 개수만큼 자동 해제하도록 동작 변경
  3. HASHJOIN_MANAGER

    • 멤버 타입을 cubthread::entry_workpool *에서 parallel_query::worker_manager *로 변경
  4. parallel_query::hash_join::task_manager

    4-1. 변경

    • 멤버 타입을 cubthread::entry_workpool *에서 parallel_query::worker_manager *로 변경
    • 전역 Parallel Worker Pool을 사용하도록 변경

    4-2. 추가

    • cubthread::entry & 멤버 추가 (메인 스레드 참조 유지)

    4-3. 제거

    • stop_execution() 멤버 함수 제거
    • 전역 Parallel Worker Pool에서는 사용할 수 없음
    • 기존 코드에서도 실질적으로 불필요
  5. parallel_query::hash_join::task_execution_guard

    • 기존 parallel_query::hash_join::entry_manager 역할을 대체
      • execute 시 메인 스레드 정보 복사
      • Resource tracking 시작/종료 관리
    • split_task::execute, join_task::execute 시작 시 guard를 생성하고, 스코프 종료 시 정리 코드가 실행되도록 구성 (RAII)
  6. thread_get_main_thread() 추가

    • 최상위 스레드를 찾기 위한 반복 로직을 함수로 분리
  7. 미사용 코드 제거

    • cubthread::entry_manager: m_skip_end_resource_tracks_in_recycle
    • parallel_query::callable_task: worker_manager_with_dedicated_pool 관련 코드
    • parallel_query::worker_manager_with_dedicated_pool
    • parallel_query::worker_manager_reserver
    • parallel_query::hash_join::worker_pool_manager
    • parallel_query::hash_join::entry_manager

Remarks

N/A

@youngjinj youngjinj self-assigned this Jan 19, 2026
@youngjinj
Copy link
Contributor Author

/run sql medium

@youngjinj
Copy link
Contributor Author

/run sql medium

@youngjinj
Copy link
Contributor Author

/run shell

@youngjinj
Copy link
Contributor Author

/run sql medium

@youngjinj
Copy link
Contributor Author

/run shell

@youngjinj youngjinj marked this pull request as ready for review January 23, 2026 07:29
@youngjinj
Copy link
Contributor Author

/run sql medium

@youngjinj youngjinj marked this pull request as draft January 23, 2026 08:17
@youngjinj
Copy link
Contributor Author

/run sql medium

@youngjinj
Copy link
Contributor Author

/run shell

@youngjinj youngjinj marked this pull request as ready for review January 28, 2026 02:12
@youngjinj
Copy link
Contributor Author

youngjinj commented Jan 28, 2026

sql 테스트 중 core가 발생해서 잠시 리뷰를 중단(draft) 했었습니다.
문제가 해결되었고, 리뷰 다시 요청드립니다.

  • shell 테스트 fail 1건은 확인된 1건입니다.

@youngjinj
Copy link
Contributor Author

/run sql medium

@youngjinj
Copy link
Contributor Author

/run shell

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants