2025년 9월 25일:토토 커뮤니티 : 토토
이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.스포츠 토토 결과 PostgreSQL : 문서 : 17 : PG_TEST_TIMEING버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

pg_test_timing

이름

pg_test_timing --타이밍 오버헤드 측정

시놉시스

pg_test_timing [옵션...]

설명

pg_test_timing다음을 수행하는 도구입니다. 시스템의 타이밍 오버헤드를 측정하고 시스템 시간은 절대로 뒤로 이동하지 않습니다. 수집 속도가 느린 시스템 타이밍 데이터는 정확도가 떨어질 수 있습니다.설명하세요 분석결과.

옵션

pg_test_timing수락합니다 다음 명령줄 옵션:

-d기간
--기간=기간

테스트 기간을 초 단위로 지정합니다. 지속 시간이 길어지면 정확도가 약간 더 높으며 문제를 발견할 가능성이 더 높습니다. 시스템 시계가 거꾸로 이동합니다. 기본 테스트 기간 3초입니다.

-V
--버전

인쇄pg_test_timing버전 및 종료.

-?
--도움말

다음에 관한 도움말 표시pg_test_timing명령줄 인수 및 종료.

사용법

결과 해석 중

좋은 결과는 대부분의(90%) 개별 타이밍 호출을 표시합니다. 1마이크로초도 채 걸리지 않습니다. 루프 오버헤드당 평균은 다음과 같습니다. 심지어 100나노초 미만으로 낮아집니다. Intel의 이 예는 TSC 클럭 소스를 사용하는 i7-860 시스템은 우수한 성능을 보여줍니다. 성능:

3초 동안 타이밍 오버헤드를 테스트합니다.
오버헤드를 포함한 루프당 시간: 35.96nsec
타이밍 기간의 히스토그램:
< 총 개수의 usec %
     1 96.40465 80435604 
     2 3.59518 2999652  
     4 0.00015 126  
     8 0.00002 13  
    16 0.00000 2

루프당 시간에 대해 다른 단위가 사용된다는 점에 유의하십시오. 히스토그램. 루프는 몇 분 안에 해결될 수 있습니다. 나노초(nsec), 개별 젠 토토 호출은 1마이크로초(usec)까지 분해됩니다.

실행기 젠 토토 오버헤드 측정

쿼리 실행기가 다음을 사용하여 명령문을 실행할 때분석 설명, 개별 작업의 시간은 다음과 같습니다. 요약도 표시됩니다. 시스템의 오버헤드는 다음과 같을 수 있습니다. 를 사용하여 행을 계산하여 확인합니다.psql프로그램:

CREATE TABLE t AS SELECT * FROM generate_series(1,100000);
\timing
SELECT COUNT(*) FROM t;
설명 분석 선택 개수(*) FROM t;

측정된 i7-860 시스템은 9.8ms 내에 카운트 쿼리를 실행하는 반면분석 설명버전은 16.6ms가 소요됩니다. 각각 100,000개 이상의 행을 처리합니다. 6.8ms 차이 이는 행당 타이밍 오버헤드가 68ns임을 의미합니다. 이는 행당 약 2배입니다. pg_test_timing은 그럴 것이라고 추정했습니다. 상대적으로 작은 것조차도 오버헤드의 양이 완전히 시간이 지정된 카운트 문을 실행하게 만들고 있습니다. 거의 70% 더 길어졌습니다. 보다 실질적인 쿼리에서는 타이밍 오버헤드가 발생합니다. 문제가 덜할 것입니다.

시간 소스 변경

일부 최신 Linux 시스템에서는 시계를 변경할 수 있습니다 언제든지 젠 토토 데이터를 수집하는 데 사용되는 소스입니다. 두 번째 예 더 느린 acpi_pm으로 전환하면 속도가 느려질 수 있음을 보여줍니다. 빠른 결과를 위해 사용되는 동일한 시스템의 시간 소스 위:

# 고양이 /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
# echo acpi_pm  /sys/devices/system/clocksource/clocksource0/current_clocksource
# pg_test_timing
오버헤드를 포함한 루프당 시간: 722.92nsec
타이밍 기간의 히스토그램:
< 총 개수의 usec %
     1 27.84870 1155682 
     2 72.05956 2990371 
     4 0.07810 3241  
     8 0.01357 563  
    16 0.00007 3

이 구성에서는 샘플설명하세요 분석위에서는 115.9ms가 걸립니다. 1061nsec의 타이밍입니다. 오버헤드는 직접 측정한 것의 작은 배수입니다. 이 유틸리티. 이렇게 많은 타이밍 오버헤드는 실제 쿼리를 의미합니다. 그 자체는 설명된 시간의 아주 작은 부분만을 차지하고 있으며, 대신 대부분의 비용이 오버헤드로 소비되고 있습니다. 이에 구성, 모두분석 설명합계 많은 시간 제한 작업을 포함하는 작업은 다음과 같이 크게 부풀려질 것입니다. 타이밍 오버헤드.

FreeBSD에서는 시간 소스를 즉시 변경할 수도 있습니다. 부팅 중에 선택한 타이머에 대한 정보를 기록합니다.

# dmesg | grep "타임카운터"
타임카운터 "ACPI-fast" 주파수 3579545Hz 품질 900
타임카운터 "i8254" 주파수 1193182Hz 품질 0
타임카운터는 10,000밀리초마다 틱합니다.
타임카운터 "TSC" 주파수 2531787134Hz 품질 800
# sysctl kern.timecounter.hardware=TSC
kern.timecounter.hardware: ACPI-빠른 - TSC

다른 시스템에서는 부팅 시 시간 소스 설정만 허용할 수 있습니다. 켜기 이전 Linux 시스템에서는 "시계" 커널 설정이 유일한 방법입니다. 이런 변화를 만들어 보세요. 그리고 좀 더 최근의 것에서도, 클럭 소스에 대해 표시되는 유일한 옵션은 "jiffies"입니다. 지피는 이전 Linux 소프트웨어 시계 구현은 좋은 결과를 가져올 수 있습니다. 다음과 같이 충분히 빠른 타이밍 하드웨어가 뒷받침될 때의 해상도 이 예:

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
지피
$dmesg | grep time.c
time.c: 3.579545MHz WALL PM GTOD PIT/TSC 타이머를 사용합니다.
time.c: 2400.153MHz 프로세서가 감지되었습니다.
$ pg_test_timing
3초 동안 타이밍 오버헤드를 테스트합니다.
루프 오버헤드를 포함한 타이밍 기간당: 97.75ns
타이밍 기간의 히스토그램:
< 총 개수의 usec %
     1 90.23734 27694571 
     2 9.75277 2993204  
     4 0.00981 3010  
     8 0.00007 22  
    16 0.00000 1  
    32 0.00000 1

클럭 하드웨어 및 젠 토토 정확도

정확한 타이밍 정보 수집은 일반적으로 다음에서 수행됩니다. 다양한 정확도의 하드웨어 시계를 사용하는 컴퓨터. 일부 하드웨어에서는 운영 체제가 시스템 시계를 전달할 수 있습니다. 프로그램에 거의 직접적으로 시간을 보냅니다. 시스템 시계도 가능합니다. 단순히 타이밍 인터럽트를 제공하는 칩에서 파생되었습니다. 알려진 시간 간격으로 주기적 틱. 두 경우 모두, 운영 체제 커널은 이를 숨기는 클럭 소스를 제공합니다. 세부 사항. 하지만 해당 클럭 소스의 정확성과 속도는 반환할 수 있는 결과는 기본 하드웨어에 따라 다릅니다.

시간을 부정확하게 유지하면 시스템이 불안정해질 수 있습니다. 테스트 클록 소스에 대한 변경은 매우 주의 깊게 수행해야 합니다. 운영 체제 때로는 최고보다 신뢰성을 선호하기 위해 기본값이 만들어지기도 합니다. 정확성. 가상 머신을 사용하는 경우 호환되는 권장 시간 소스입니다. 가상 하드웨어 얼굴 타이머를 에뮬레이션할 때 추가적인 어려움이 있으며 종종 공급업체가 제안한 운영 체제 설정에 따라.

타임 스탬프 카운터(TSC) 클럭 소스가 가장 정확합니다. 현재 세대 CPU에서 사용 가능한 것 중 하나입니다. 선호하는 방법입니다 운영 체제에서 지원하는 시스템 시간 추적 TSC 시계는 신뢰할 수 있습니다. TSC가 할 수 있는 방법에는 여러 가지가 있습니다. 정확한 타이밍 소스를 제공하지 못하여 신뢰할 수 없게 됩니다. 이전 시스템에는 CPU에 따라 달라지는 TSC 클럭이 있을 수 있습니다. 온도로 인해 타이밍에 사용할 수 없게 됩니다. TSC를 사용하려고 합니다. 일부 구형 멀티코어 CPU는 보고된 시간을 제공할 수 있습니다. 여러 코어 간에 일관성이 없습니다. 이로 인해 시간이 걸릴 수 있습니다. 뒤로 가면 이 프로그램이 확인하는 문제입니다. 그리고 심지어 최신 시스템은 매우 정확한 TSC 타이밍을 제공하지 못할 수 있습니다. 공격적인 절전 구성.

최신 운영 체제에서는 알려진 TSC 문제를 확인할 수 있으며 이러한 신호가 나타나면 더 느리고 안정적인 클럭 소스로 전환하십시오. 만약에 귀하의 시스템은 TSC 시간을 지원하지만 기본값은 아닙니다. 정당한 이유로 장애인이 되십시오. 일부 운영 체제에서는 그렇지 않을 수도 있습니다. 가능한 모든 문제를 올바르게 감지하거나 TSC 사용을 허용합니다. 부정확하다고 알려진 상황에서도 마찬가지입니다.

고정밀 이벤트 타이머(HPET)는 다음에서 선호되는 타이머입니다. 사용 가능하지만 TSC가 정확하지 않은 시스템. 타이머 칩 자체는 최대 100나노초까지 허용하도록 프로그래밍 가능 하지만 시스템에서는 그 정도의 정확도를 볼 수 없을 수도 있습니다. 시계.

고급 구성 및 전원 인터페이스(ACPI)는 Linux가 acpi_pm이라고 부르는 전원 관리(PM) 타이머. acpi_pm에서 파생된 시계는 기껏해야 300나노초를 제공합니다. 해결.

이전 PC 하드웨어에 사용되는 타이머에는 8254 프로그래밍 가능 타이머가 포함됩니다. 간격 타이머(PIT), 실시간 시계(RTC), 고급 프로그래밍 가능한 인터럽트 컨트롤러(APIC) 타이머 및 사이클론 타이머. 이 타이머는 밀리초 단위의 분해능을 목표로 합니다.

저자

개미 아스마