스레드 지원 조정 가능 매개변수
조정 가능한 스레드 지원 매개변수에는 여러 가지가 있습니다.
- ACT_TIMEOUT
참조: 스레드 환경 변수
항목 설명자 용도: 활성화 시간종료에 대한 시간(초)을 조정합니다. 값: 디폴트: DEF_ACTOUT. 범위: 양의 정수 표시: echo $ACT_TIMEOUT 이 값은 내부적으로 설정되므로, echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: ACT_TIMEOUT=n export ACT_TIMEOUT 변경사항이 이 쉘에 즉시 적용됩니다. 변경사항은 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 ACT_TIMEOUT = n 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 해당사항 없음 - AIXTHREAD_COND_DEBUG
참조: 스레드 디버그 옵션
항목 설명자 용도: 디버거에 사용될 조건 변수 리스트를 유지합니다. 값: 디폴트: OFF. 범위: ON, OFF 표시: echo $AIXTHREAD_COND_DEBUG 이 값은 내부적으로 설정되므로, echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_COND_DEBUG={ON|OFF}export AIXTHREAD_COND_DEBUG변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_COND_DEBUG={ON|OFF} 명령을 추가하면 영구적으로 변경됩니다.
진단: 이 변수를 ON으로 설정하면 스레드 애플리케이션을 디버깅하기 쉬워지지만, 약간의 오버헤드가 발생할 수 있습니다. 조정: 프로그램에 활성 조건 변수가 많이 포함되어 있고 프로그램이 조건 변수를 자주 작성했다가 제거하는 경우, 조건 변수 리스트를 유지하는 데 드는 오버헤드가 높아질 수 있습니다. 이 변수를 OFF로 설정하면 리스트를 사용할 수 없게 됩니다. - AIXTHREAD_DISCLAIM_GUARDPAGES
항목 설명자 용도: Guardpage 스택이 디스클레임되었는지 여부를 제어합니다. 값: 디폴트: OFF. 범위: ON, OFF 표시: echo $AIXTHREAD_DISCLAIM_GUARDPAGES 이 값은 내부적으로 설정되므로, echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_DISCLAIM_GUARDPAGES={ON|OFF};export AIXTHREAD_DISCLAIM_GUARDPAGES변경사항이 이 쉘에 즉시 적용됩니다. 변경사항은 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 AIXTHREAD_GUARDPAGES=n 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: pthread 스택에 Guardpage가 사용된 경우 AIXTHREAD_DISCLAIM_GUARDPAGES = ON으로 설정하면 pthread가 작성될 때 Guardpage가 디스클레임됩니다. 이 매개변수를 사용하면 스레드 애플리케이션의 메모리 사용 공간을 줄일 수 있습니다.
참조: 스레드 환경 변수 - AIXTHREAD_ENRUSG
참조: 스레드 환경 변수
항목 설명 용도: pthread 자원 수집을 사용 또는 사용 안함으로 설정합니다. 값: 디폴트: OFF. 범위: ON, OFF 표시: echo $AIXTHREAD_ENRUSG 이 값은 내부적으로 설정되므로, echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_ENRUSG={ON|OFF}export AIXTHREAD_ENRUSG변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_ENRUSG={ON|OFF} 명령을 추가하면 영구적으로 변경됩니다.
진단: 이 매개변수를 ON으로 설정하면 프로세스의 모든 pthread에 대한 자원을 수집할 수 있지만, 약간의 오버헤드가 발생할 수 있습니다. 조정: 해당사항 없음 - AIXTHREAD_GUARDPAGES
참조: 스레드 환경 변수
항목 설명자 용도: pthread 스택의 끝에 추가할 Guardpage 수를 제어합니다. 값: 디폴트: 1. 여기서 1은 페이지 수에 대한 10진수 값으로, 4K, 64K 등일 수 있습니다. 범위: n의 범위 표시: echo $AIXTHREAD_GUARDPAGES 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_GUARDPAGES=nexport AIXTHREAD_GUARDPAGES변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_GUARDPAGES=n 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 해당사항 없음 - AIXTHREAD_MINKTHREADS
참조: 프로세스 전반의 경합 유효범위에 대한 변수
항목 설명자 용도: 사용해야 할 최소 커널 스레드 수를 제어합니다. 값: 디폴트: 8. 범위: 양의 정수 값 표시: echo $AIXTHREAD_MINKTHREADS 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_MINKTHREADS=nexport AIXTHREAD_MINKTHREADS 변경사항이 이 쉘에 즉시 적용됩니다. 변경사항은 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 AIXTHREAD_MINKTHREADS =n 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 이 변수에 설정된 값 미만에서는 라이브러리 스케줄러가 커널 스레드를 교정하지 않습니다. 커널 스레드는 실질적으로 어떤 지점에서든지 교정할 수 있습니다. 일반적으로, 커널 스레드는 pthread 종료 후 교정 대상이 됩니다. - AIXTHREAD_MNRATIO
참조: 프로세스 전반의 경합 유효범위에 대한 변수
항목 설명자 용도: 라이브러리의 축척인수 배율을 제어합니다. 이 비율은 pthread를 작성 및 종료하는 데 사용됩니다. 값: 디폴트: 8:1, 범위: 두 개의 양수 값(p:k). 여기서 k는 p 변수에 정의된 실행 가능한 pthread 수를 처리하는 데 사용해야 하는 커널 스레드 수입니다. 표시: echo $AIXTHREAD_MNRATIO 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_MNRATIO=p:kexport AIXTHREAD_MNRATIO 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_MNRATIO =p:k 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 상당히 많은 스레드가 있는 애플리케이션에 유용합니다. 그러나 1:1 비율일 때 더 나은 성능이 제공되므로 항상 이 비율인지 테스트하십시오. - AIXTHREAD_MUTEX_DEBUG
참조: 스레드 디버그 옵션
항목 설명자 용도: 디버거에 사용될 활성 Mutex 리스트를 유지합니다. 값: 디폴트: OFF. 가능한 값: ON, OFF 표시: echo $AIXTHREAD_MUTEX_DEBUG 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_MUTEX_DEBUG={ON|OFF}export AIXTHREAD_MUTEX_DEBUG 이 변경사항은 즉시 적용되며 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 AIXTHREAD_MUTEX_DEBUG={ON|OFF} 명령을 추가하면 영구적으로 변경됩니다.
진단: 이 변수를 ON으로 설정하면 스레드 애플리케이션을 디버깅하기 쉬워지지만, 약간의 오버헤드가 발생할 수 있습니다. 조정: 프로그램에 활성 Mutex가 많이 포함되어 있고 프로그램이 Mutex를 자주 작성했다가 제거하는 경우, Mutex 리스트를 유지하는 데 드는 오버헤드가 높아질 수 있습니다. 변수를 OFF로 설정하면 리스트를 사용할 수 없게 됩니다. - AIXTHREAD_MUTEX_FAST
참조: 스레드 디버그 옵션
항목 설명자 용도: 최적화된 Mutex 잠금 메커니즘을 사용합니다. 값: 디폴트: OFF. 가능한 값: ON, OFF 표시: echo $AIXTHREAD_MUTEX_FAST 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_MUTEX_FAST={ON|OFF}export AIXTHREAD_MUTEX_FAST 이 변경사항은 즉시 적용되며 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 AIXTHREAD_MUTEX_FAST={ON|OFF} 명령을 추가하면 영구적으로 변경됩니다.
진단: 이 변수를 ON으로 설정하면 스레드 애플리케이션이 최적화된 Mutex 잠금 메커니즘을 사용하게 되므로 성능이 향상됩니다. 조정: 과도한 Mutex 경합으로 인해 프로그램 성능이 저하될 경우, 이 변수를 ON으로 설정하면 프로세스 개인용 Mutex에서만 작동하는 최적화된 Mutex 잠금 메커니즘이 pthread 라이브러리에 사용됩니다. 이러한 프로세스 개인용 Mutex는 pthread_mutex_init 루틴을 사용하여 초기화해야 하며, pthread_mutex_destroy 루틴을 사용하여 제거해야 합니다. - AIXTHREAD_READ_GUARDPAGES
참조: 스레드 환경 변수
항목 설명자 용도: pthread 스택의 끝에 추가되는 Guardpage에 대한 읽기 액세스 권한을 제어합니다. 값: 디폴트: OFF. 범위: ON, OFF 표시: echo $AIXTHREAD_READ_GUARDPAGES 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_READ_GUARDPAGES={ON|OFF}export AIXTHREAD_GUARDPAGES변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_READ_GUARDPAGES={ON|OFF} 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 해당사항 없음 - AIXTHREAD_RWLOCK_DEBUG
참조: 스레드 디버그 옵션
항목 설명자 용도: 디버거에 사용될 읽기-쓰기 잠금 리스트를 유지합니다. 값: 디폴트: OFF. 범위: ON, OFF 표시: echo $AIXTHREAD_RWLOCK_DEBUG 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_RWLOCK_DEBUG={ON|OFF}export AIXTHREAD_RWLOCK_DEBUG 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_RWLOCK_DEBUG={ON|OFF} 명령을 추가하면 영구적으로 변경됩니다.
진단: 이 매개변수를 ON으로 설정하면 스레드 애플리케이션을 디버깅하기 쉬워지지만, 약간의 오버헤드가 발생할 수 있습니다. 조정: 프로그램에 활성 읽기-쓰기 잠금이 많이 포함되어 있고 프로그램이 읽기-쓰기 잠금을 자주 작성했다가 제거하는 경우, 읽기-쓰기 잠금 리스트를 유지하는 데 드는 오버헤드가 높아질 수 있습니다. 이 변수를 OFF로 설정하면 리스트를 사용할 수 없게 됩니다. - AIXTHREAD_SUSPENDIBLE
참조: 스레드 디버그 옵션
항목 설명자 용도: pthread_suspend_np 또는 pthread_suspend_others_np 루틴과 함께 다음 루틴을 사용하는 애플리케이션의 교착 상태를 방지합니다. - pthread_getrusage_np
- pthread_cancel
- pthread_detach
- pthread_join
- pthread_getunique_np
- pthread_join_np
- pthread_setschedparam
- pthread_getschedparam
- pthread_kill
값: 디폴트: OFF. 범위: ON, OFF 표시: echo $AIXTHREAD_SUSPENDIBLE 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_SUSPENDIBLE={ON|OFF}export AIXTHREAD_SUSPENDIBLE 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_SUSPENDIBLE={ON|OFF} 명령을 추가하면 영구적으로 변경됩니다.
진단: 이 변수와 관련하여 약간의 성능 저하가 발생합니다. 조정: 앞서 말한 기능이 pthread_suspend_np routine 또는 pthread_suspend_others_np 루틴과 함께 사용되는 경우에만 이 변수를 사용해야 합니다. - AIXTHREAD_SCOPE
참조: 스레드 환경 변수
항목 설명자 용도: 경합 유효범위를 제어합니다. 값 P는 프로세스 기반 경합 유효범위(M:N)를 의미합니다. 값 S는 시스템 기반 경합 유효범위(1:1)를 의미합니다. 값: 디폴트: P. 가능한 값: P 또는 S 표시: echo $AIXTHREAD_SCOPE 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_SCOPE={P|S}export AIXTHREAD_SCOPE 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_SCOPE={P|S} 명령을 추가하면 영구적으로 변경됩니다.
진단: 작업 지정된 스레드가 예상보다 적은 경우, 시스템 유효범위를 시도합니다. 조정: 테스트를 수행하면 특정 애플리케이션의 경우 시스템 기반 경합 유효범위(S)를 사용할 때 성능이 향상됨을 알 수 있습니다. 이 환경 변수를 사용하면 디폴트 속성을 사용하여 작성된 스레드에만 영향을 미칩니다. pthread_create에 대한 attr 매개변수가 NULL일 경우 디폴트 속성이 사용됩니다. - AIXTHREAD_SLPRATIO
참조: 프로세스 전반의 경합 유효범위에 대한 변수
항목 설명자 용도: 휴면 상태의 스레드용으로 예약되어 보류 중인 커널 스레드의 수를 제어합니다. 값: 디폴트: 1:12. 범위: 두 개의 양수 값(k:p). 여기서 k는 휴면 상태인 pthreads p용으로 예약되어 보류 중인 커널 스레드 수입니다. 표시: echo $AIXTHREAD_SLPRATIO 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_SLPRATIO=k:pexport AIXTHREAD_SLPRATIO 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_SLPRATIO =k:p 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 일반적으로 휴면 상태인 pthread는 한 번에 하나씩 해제되므로 이들을 지원하는 데는 더 적은 수의 커널 스레드가 필요합니다. 따라서 커널 자원이 절약됩니다. - AIXTHREAD_STK=n
항목 설명자 용도: pthread마다 할당해야 하는 10진 바이트 수입니다. 이 값은 pthread_attr_setstacksize 루틴으로 재정의할 수 있습니다. 값: 디폴트: 32비트 애플리케이션의 경우 98,304바이트, 64비트 애플리케이션의 경우 196,608바이트. 범위: 0 - 268,435,455 범위의 10진 정수 값이며, 가장 근접한 페이지(현재 4,096)로 반올림됩니다. 표시: echo $AIXTHREAD_STK 이 값은 내부적으로 설정되므로, echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_STK=sizeexport AIXTHREAD_STK 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 AIXTHREAD_STK=size 명령을 추가하면 영구적으로 변경됩니다.
진단: 실패한 프로그램의 분석 내용이 스택 오버플로우를 나타내는 경우, 디폴트 스택 크기를 늘릴 수 있습니다. 조정: 32비트 애플리케이션에서 32,000 스레드 한계에 도달하려고 할 경우, 디폴트 스택 크기를 줄여야 할 수 있습니다. - AIXTHREAD_AFFINITY
참조: 스레드 환경 변수
항목 설명자 용도: 향상된 선호도 지원 시스템에서 pthread 구조, 스택 및 스레드 로컬 스토리지의 배치를 제어합니다. 값: 디폴트: existing. 범위: existing, always, attempt 표시: echo $AIXTHREAD_AFFINITY 이 값은 내부적으로 설정되므로, echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: AIXTHREAD_AFFINITY ={default|strict|first-touch} export AIXTHREAD_AFFINITY
진단: 이 변수를 strict 로 설정하면 스레드 성능은 향상되지만, 시작 시간이 길어집니다.
이 변수를 default로 설정하면 이전에 밸런싱을 이룬 구현이 유지됩니다.
이 변수를 first-touch로 설정하면 실행시간 이점과 함께 시작 성능 비용에 대해 밸런싱이 조정됩니다.
조정: 스레드가 오래 실행될 것으로 예상되는 경우 이 변수를 strict 로 설정하면 성능이 향상됩니다. 그러나 단기 실행 스레드가 여러 개일 경우 변수를 default 또는 first touch로 설정해야 합니다. - MALLOCBUCKETS
참조: Malloc 버킷
항목 설명자 용도: 작은 할당 요청을 여러 개 발행하는 애플리케이션의 성능을 향상시킬 수 있도록 디폴트 메모리 할당자에서 버킷 기준 확장을 사용으로 설정합니다. 값: MALLOCTYPE=buckets MALLOCBUCKETS=[[ number_of_buckets:n | bucket_sizing_factor:n | blocks_per_bucket:n | bucket_statistics:[stdout|stderr|pathname]],...]
다음 테이블은 MALLOCBUCKETS의 디폴트 값을 표시합니다.- MALLOCBUCKETS 옵션
- 디폴트 값
- number_of_buckets1
- 16
- bucket_sizing_factor(32비트)2
- 32
- bucket_sizing_factor(64비트)3
- 64
- blocks_per_bucket
- 10244
참고:1. 허용되는 최소값은 1이고, 허용되는 최대값은 128입니다.
2. 32비트 구현의 경우, bucket_sizing_factor에 지정된 값이 8의 배수여야 합니다.
3. 64비트 구현의 경우, bucket_sizing_factor에 지정된 값이 16의 배수여야 합니다.
4. bucket_statistics 옵션은 디폴트에 따라 사용 안함으로 설정됩니다.
표시: echo $MALLOCBUCKETS; echo $MALLOCTYPE 변경: 환경 변수를 반출하는 쉘 고유의 메소드를 사용하십시오. 진단: malloc 성능이 느리고 작은 malloc 요청이 많이 발행되는 경우, 이러한 특징이 성능을 향상시킵니다. 조정: malloc 버킷을 사용으로 설정하려면 MALLOCTYPE 환경 변수를 값 "buckets"으로 설정해야 합니다. 대부분의 애플리케이션에서는 디폴트 값만으로 충분하지만, MALLOCBUCKETS 환경 변수를 사용하여 malloc 버킷의 디폴트 구성을 변경할 수 있습니다.
number_of_buckets:n 옵션은 힙당 사용 가능한 버킷 수를 지정하는 데 사용할 수 있습니다. 여기서 n은 버킷 수입니다. n에 지정된 값은 사용 가능한 모든 힙에 적용됩니다.
bucket_sizing_factor:n 옵션은 버킷 크기 조정 요소를 지정하는 데 사용됩니다. 여기서 n은 바이트 단위의 버킷 크기 조정 요인입니다.
blocks_per_bucket:n 옵션은 처음에 각 버킷에 포함되는 블록 수를 지정하는 데 사용할 수 있습니다. 여기서 n은 블록 수입니다. 이 값은 모든 버킷에 적용됩니다. 값 n은 또한 모든 블록이 할당되어 버킷이 자동으로 확장되는 경우에 추가해야 할 블록 수를 판별하는 데도 사용됩니다.
bucket_statistics 옵션은 malloc 버킷이 사용 가능한 동안 malloc 서브시스템을 호출하는 프로세스가 종료될 때마다 malloc 서브시스템이 malloc 버킷에 대한 통계 요약을 출력하도록 지정합니다. 이 요약에는 버킷 구성 정보와 버킷별 처리된 할당 요청 수가 표시됩니다. malloc 멀티힙을 통해 여러 개의 힙이 사용 가능하게 된 경우 버킷별로 표시되는 할당 요청의 수는 모든 힙에서 해당 버킷에 대해 처리된 모든 할당 요청의 합이 됩니다.
버킷에 대한 통계 요약은 다음 출력 대상(bucket_statistics 옵션으로 지정됨)에 기록됩니다.- stdout
- 표준 출력
- stderr
- 표준 오류
- pathname
- 사용자 지정 경로 이름
사용자 지정 경로 이름을 제공하면 파일이 있는 경우 파일의 기존 내용에 통계 출력이 추가됩니다. 출력이 또 다른 프로세스에 대한 입력으로 파이프되는 프로세스의 경우 표준 출력을 출력 대상으로 사용하지 마십시오.
- MALLOCMULTIHEAP
참조: 스레드 환경 변수
항목 설명자 용도: 프로세스 개인용 세그먼트 내의 힙 수를 제어합니다. 값: 디폴트: 32. 범위: 1 - 32 범위의 양수 표시: echo $MALLOCMULTIHEAP 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: MALLOCMULTIHEAP=[[heaps:n | considersize],...] export MALLOCMULTIHEAP 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 MALLOCMULTIHEAP=[[heaps:n | considersize],...] 명령을 추가하면 영구적으로 변경됩니다.
진단: malloc 잠금(세그먼트 F에 있음)에 대한 잠금 경합을 찾거나 실행 가능한 예상 스레드보다 적은지 찾습니다. 조정: 힙 수가 적으면 프로세스의 크기를 줄이는 데 도움이 됩니다. malloc 서브시스템을 과도하게 사용하는 특정 멀티스레드 사용자 프로세스의 경우 애플리케이션을 시작하기 전에 MALLOCMULTIHEAP=1 환경 변수를 반출하면 향상된 성능을 얻을 수 있습니다. 잠재적인 성능 향상은 특히 멀티스레드 C++ 프로그램에서 두드러질 수 있는데, 이는 constructor 또는 destructor가 호출될 때마다 malloc 서브시스템을 사용할 수 있기 때문입니다.
멀티스레드 사용자 프로세스가 SMP 시스템에서 실행 중일 때, 특히 시스템 유효범위 스레드가 사용될 때(M:N 비율이 1:1일 때) 성능 향상이 가장 두드러집니다. 그러나 어떤 경우에는 다른 조건이나 단일프로세서에서도 성능 개선이 나타날 수도 있습니다.
considersize 옵션을 지정한 경우, 대체 힙 선택 알고리즘이 사용되어 요청을 처리하는 데 필요한 사용 가능 공간이 충분히 있는 사용 가능한 힙을 선택하려고 시도합니다. 따라서 sbrk() 호출의 수가 줄어들어 프로세스의 작업 세트 크기를 최소화할 수 있습니다. 그러나 이 알고리즘에 필요한 처리 시간이 다소 길어집니다.
- NUM_RUNQ
참조: 스레드 환경 변수
항목 설명 용도: 실행 큐의 디폴트 개수를 변경합니다. 값: 디폴트: 실행시간에 발견된 활성 프로세서 수. 범위: 양의 정수 표시: echo $NUM_RUNQ 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: NUM_RUNQ=n export NUM_RUNQ 변경사항이 이 쉘에 즉시 적용됩니다. 변경사항은 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 NUM_RUNQ=n 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 해당사항 없음 - NUM_SPAREVP
참조: 스레드 환경 변수
항목 설명자 용도: pth_init시간 동안 malloc 처리될 vp 구조 수를 설정합니다.값: 디폴트: NUM_SPARE_VP. 범위: 양의 정수 표시: echo $NUM_SPAREVP 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: NUM_SPAREVP=n export NUM_SPAREVP 변경사항이 이 쉘에 즉시 적용됩니다. 변경사항은 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 NUM_SPAREVP=n 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 해당사항 없음 - SPINLOOPTIME
참조: 스레드 환경 변수
항목 설명자 용도: 다른 프로세서에 양보하기 전에 사용 중인 잠금을 재시도하는 횟수를 제어합니다(libpthreads에만 적용). 값: 디폴트: 단일프로세서의 경우 1, 멀티프로세서의 경우 40. 범위: 양의 정수 표시: echo $SPINLOOPTIME 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: SPINLOOPTIME=nexport SPINLOOPTIME 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 SPINLOOPTIME=n 명령을 추가하면 영구적으로 변경됩니다.
진단: 스레드가 종종 휴면 상태(긴 유휴 시간)로 전환된다면 SPINLOOPTIME이 충분히 높지 않은 것일 수 있습니다. 조정: 멀티프로세서 시스템에서 값을 디폴트 40에서 늘리면 pthread Mutex 경합이 발생할 때 도움이 될 수 있습니다. - STEP_TIME
참조: 스레드 환경 변수
항목 설명자 용도: 활성화 시간종료 중 VP를 작성하기 위해 시도하는 횟수를 조정합니다. 값: 디폴트: DEF_STEPTIME. 범위: 양의 정수 표시: echo $STEP_TIME 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: STEP_TIME=n export STEP_TIME 변경사항이 이 쉘에 즉시 적용됩니다. 변경사항은 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 STEP_TIME=n 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 해당사항 없음 - VP_STEALMAX
참조: 스레드 환경 변수
항목 설명자 용도: 스틸할 수 있는 VP 수를 조정하거나 VP 스틸링(stealing)을 끕니다. 값: 디폴트: 없음. 범위: 양의 정수 표시: echo $VP_STEALMAX 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: VP_STEALMAX=n export VP_STEALMAX 변경사항이 이 쉘에 즉시 적용됩니다. 변경사항은 이 쉘에서 로그아웃할 때까지 유효합니다. /etc/environment 파일에 VP_STEALMAX=n 명령을 추가하면 영구적으로 변경됩니다.
진단: 해당사항 없음 조정: 해당사항 없음 - YIELDLOOPTIME
참조: 스레드 환경 변수
항목 설명자 용도: 사용 중인 잠금을 블록하기 전에 프로세서를 양보하는 횟수를 제어합니다(libpthreads에만 적용). 우선순위가 충분한 다른 실행 가능한 커널 스레드가 있다는 가정 하에 프로세서가 다른 커널 스레드에 양보됩니다. 값: 디폴트: 0. 범위: 양수 값. 표시: echo $YIELDLOOPTIME 이 매개변수는 내부적으로 켜져 있으므로 echo 명령으로 초기 디폴트 값이 표시되지 않습니다.
변경: YIELDLOOPTIME=nexport YIELDLOOPTIME 변경사항이 이 쉘에 즉시 적용됩니다. 이 쉘에서 로그아웃할 때까지 변경사항이 적용됩니다. /etc/environment 파일에 YIELDLOOPTIME=n 명령을 추가하면 영구적으로 변경됩니다.
진단: 스레드가 종종 휴면 상태(긴 유휴 시간)로 전환된다면 YIELDLOOPTIME이 충분히 높지 않은 것일 수 있습니다. 조정: 잠금 대기 중에는 스레드가 휴면 상태로 전환되지 않게 하려면 이 값을 디폴트 0에서 늘리는 것이 좋습니다.