cubrid
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
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 를 해주는 부분 삭제