cubrid icon indicating copy to clipboard operation
cubrid copied to clipboard

[CBRD-24462] Improve the logic that determines the number of threads to be used when running the backupdb utility, and additionally print the number of threads specified by administrator

Open H2SU opened this issue 1 year ago • 0 comments

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

Purpose

  • 문제 상황

    • backup 유틸리티 사용 시 -t 옵션을 사용해 백업에 사용할 쓰레드 개수를 설정할 수 있는데 -o 옵션을 사용해 자세한 백업 정보를 출력할 때, 사용자가 입력한 쓰레드 개수가 출력되지 않음
    • CPU 코어 수를 구하는 함수(fileio_os_sysconf)는 플랫폼 별 구현이 따로 되어있어 유지보수 측면에서 좋지 않아 교체가 필요함
    • CPU 코어 수를 구하는 함수는 하이퍼쓰레딩을 자체적으로 고려하고 있는데 함수 외부에서 하이퍼쓰레딩을 이중으로 고려하는 문제
  • 1번 문제 원인

    • 사용자가 입력한 쓰레드 개수와 CPU 코어 수, cubrid.conf 파일에 설정된 max_clients 파라미터 값 중 가장 작은 값을 백업에 사용될 쓰레드 개수로 설정하고, 해당 값을 출력해주고 있음
    • 사용자가 입력한 쓰레드 개수 값을 추가로 출력
  • 2번 문제 원인

    • fileio_os_sysconf 함수는 플랫폼 별 구현이 따로 되어있어 추후 유지보수 측면을 고려하여 변경하는 것이 좋다고 판단
    • fileio_os_sysconf 함수를 호출하는 모든 코드를 수정
  • 3번 문제 원인

    • CPU 코어 수를 구하는 함수에서 자체적으로 하이퍼쓰레딩을 고려하고 있는데 함수 외부에서 추가로 하이퍼쓰레딩을 고려하여 x2 를 해주고 있어 쓰레드 계산식이 잘못되는 문제가 발생함

주요 함수 및 변수

  • CPU 코어 수를 구하는 함수
    • fileio_os_sysconf()
    • cubthread::system_core_count()
  • 사용자 CPU 코어 수
    • num_cpus
  • 사용자가 입력한 쓰레드 개수
    • num_threads
    • specified_thread_count
  • max_clients 파라미터 값
    • NUM_NORMAL_TRANS
  • 최종적으로 계산된 사용할 쓰레드 개수
    • thread_info_p->num_threads
    • session.read_thread_info.num_threads

Implementation

  • 사용자가 입력한 쓰레드 개수를 추가로 출력하도록 수정
  • CPU 코어 수를 구하는 함수를 모두 fileio_os_sysconf 함수에서 cubthread::system_core_count로 변경
  • fileio_os_sysconf 함수는 사용하는 곳이 없기 때문에 #if defined(ENABLE_UNUSED_FUNCTION) ~#endif 처리
  • 백업에 사용될 쓰레드 개수를 정하는 계산식에서 하이퍼쓰레딩을 고려하여 위 함수를 통해 구한 CPU 코어 수에 x2 를 해주는 부분 삭제

H2SU avatar Oct 10 '24 09:10 H2SU