> 기술 주변기기 > IT산업 > Ampere Altra 기반 인스턴스에서 실행할 때 10 가지 주요 질문

Ampere Altra 기반 인스턴스에서 실행할 때 10 가지 주요 질문

Christopher Nolan
풀어 주다: 2025-02-09 12:57:17
원래의
764명이 탐색했습니다.

Ampere System Performance 분석 : 10 가지 주요 질문과 답변

(이 기사는 원래 Ampere Computing에서 출판 됨) 10 Key Questions When Running on Ampere Altra-Based Instances 응용 프로그램은 새로운 클라우드 인스턴스 또는 서버 (또는 SUT, 테스트중인 시스템)에서 실행되거나 성능 문제를 찾거나 사용 가능한 시스템 리소스에서 최적의 성능을 보장하려고합니다. 이 기사에서는 요청해야 할 몇 가지 기본 질문과 답변 방법에 대해 설명합니다.

전제 조건 : 가상 머신 또는 서버를 이해하십시오

문제 해결 또는 성능 분석 연습을 시작하기 전에 사용 가능한 시스템 리소스를 알아야합니다. 시스템 수준 성능은 일반적으로 4 가지 구성 요소와 그 상호 작용 (CPU, 메모리, 네트워크 및 디스크)으로 요약됩니다. Brendan Gregg의 훌륭한 기사 "Linux Performance Analysis : 60000 밀리 초 빠른 결과 가이드", 성능 문제를 신속하게 평가하기위한 훌륭한 출발점을 참조하십시오. 이 기사에서는 성능 문제를 더 깊이 이해하는 방법을 설명합니다.

CPU 유형을 확인하십시오

CPU 유형, CPU 주파수, 코어 수 및 기타 CPU 관련 정보를 표시하는 명령을 실행하십시오.

메모리 구성을 확인하십시오 명령을 실행하면 물리적 메모리 및 총 스왑 메모리 양에 대한 정보 (메모리 활용의 고장 포함)에 대한 정보를 제공합니다. Multichase 벤치 마크를 실행하여 대기 시간, 메모리 대역폭 및로드 대기 시간을 결정하십시오.

네트워크 기능 평가

NIC 카드 하드웨어 설정에 대한 정보를 제공 할 명령을 실행하십시오. 또한 네트워크 장치 드라이버 및 하드웨어 설정을 제어하는 ​​데 사용됩니다. 클라이언트 서버 모델에서 워크로드를 실행하는 경우 클라이언트와 서버 간의 대역폭과 대기 시간을 이해하는 것이 가장 좋습니다. 대역폭을 결정하기 위해 간단한 IPERF3 테스트가 충분하며 대기 시간을 위해 간단한 핑 테스트 가이 값을 제공 할 수 있습니다. 클라이언트-서버 설정에서 네트워크 홉 수를 최소로 유지하는 것이 좋습니다. Traceroute는 라우팅을 표시하고 네트워크 전체의 패킷의 전송 지연을 측정하는 네트워크 진단 명령입니다.

스토리지 인프라를 이해하십시오 워크로드를 실행하기 전에 디스크 기능을 이해하는 것이 중요합니다. 디스크 및 파일 시스템의 처리량과 대기 시간을 이해하면 워크로드를 효율적으로 계획하고 설계하는 데 도움이됩니다. Flexible I/O (또는 "FIO")는 이러한 값을 결정하는 데 이상적인 도구입니다.

이제 상위 10 개 질문을 입력하십시오 > 1. 내 CPU가 양호한 상태입니까? $lscpu

총 소유 비용의 주요 구성 요소 중 하나는 CPU입니다. 따라서 CPU 사용의 효율성을 이해하는 것이 좋습니다. 유휴 CPU는 일반적으로 디스크 또는 네트워크 액세스 대기와 같은 외부 종속성이 있음을 의미합니다. 항상 CPU 사용률을 모니터링하고 핵심 사용법이 균일한지 확인하는 것이 좋습니다.

다음 이미지는
<code>ampere@colo1:~$ lscpu 

Architecture:                    aarch64 

CPU op-mode(s):                  32-bit, 64-bit 

Byte Order:                      Little Endian 

CPU(s):                          160 

On-line CPU(s) list:             0-159 

Thread(s) per core:              1 

Core(s) per socket:              80 

Socket(s):                       2 

NUMA node(s):                    2 

Vendor ID:                       ARM 

Model:                           1 

Model name:                      Neoverse-N1 

Stepping:                        r3p1 

CPU max MHz:                     3000.0000 

CPU min MHz:                     1000.0000 

BogoMIPS:                        50.00 

L1d cache:                       10 MiB 

L1i cache:                       10 MiB 

L2 cache:                        160 MiB 

NUMA node0 CPU(s):               0-79 

NUMA node1 CPU(s):               80-159 

Vulnerability Itlb multibit:     Not affected 

Vulnerability L1tf:              Not affected 

Vulnerability Mds:               Not affected 

Vulnerability Meltdown:          Not affected 

Vulnerability Mmio stale data:   Not affected 

Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl 

Vulnerability Spectre v1:        Mitigation; __user pointer sanitization 

Vulnerability Spectre v2:        Mitigation; CSV2, BHB 

Vulnerability Srbds:             Not affected 

Vulnerability Tsx async abort:   Not affected 

Flags:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid 

                                  asimdrdm lrcpc dcpop asimddp ssbs </code>
로그인 후 복사
로그인 후 복사
명령의 예제 출력을 보여줍니다.

10 Key Questions When Running on Ampere Altra-Based Instances > 2. 내 CPU가 가능한 가장 높은 주파수로 달리고 있습니까?

최신 CPU는 P 상태를 사용하여 더 높은 주파수가 필요하지 않을 때 CPU 전력 소비를 줄이기 위해 작동 주파수와 전압을 조정합니다. 이를 동적 전압 및 주파수 스케일링 (DVF)이라고하며 운영 체제에서 관리합니다. Linux에서 P 상태는 CPUFREQ 서브 시스템에 의해 관리되며 CPU 실행 빈도를 결정하기 위해 다른 알고리즘 (레귤레이터)을 사용합니다. 일반적으로 성능에 민감한 응용 프로그램의 경우 성능 조정기를 사용하는 것이 가장 좋습니다. 다음 명령은 CPUPOWER 유틸리티를 사용하여이를 달성합니다. CPU의 주파수 활용은 실행되어야한다는 점을 기억하십시오.

응용 프로그램을 실행할 때 CPU의 주파수를 확인하려면 다음 명령을 실행하십시오.

> 3. 응용 프로그램에서 내 시간을 커널 시간과 비교하는 방법은 무엇입니까?

때때로 CPU 시간의 백분율이 사용자 공간에서 또는 특권 시간 (예 : 커널 공간)에서 소비되는지 여부를 찾아야합니다. 커널 시간이 높을수록 특정 범주의 워크로드 (예 : 네트워크 바인딩 워크로드)에 대해 합리적이지만 문제가 발생할 수도 있습니다.

Linux 애플리케이션 상단을 사용하여 아래와 같이 사용자와 커널 시간이 얼마나 오래 소비되는지 확인할 수 있습니다.
<code>ampere@colo1:~$ lscpu 

Architecture:                    aarch64 

CPU op-mode(s):                  32-bit, 64-bit 

Byte Order:                      Little Endian 

CPU(s):                          160 

On-line CPU(s) list:             0-159 

Thread(s) per core:              1 

Core(s) per socket:              80 

Socket(s):                       2 

NUMA node(s):                    2 

Vendor ID:                       ARM 

Model:                           1 

Model name:                      Neoverse-N1 

Stepping:                        r3p1 

CPU max MHz:                     3000.0000 

CPU min MHz:                     1000.0000 

BogoMIPS:                        50.00 

L1d cache:                       10 MiB 

L1i cache:                       10 MiB 

L2 cache:                        160 MiB 

NUMA node0 CPU(s):               0-79 

NUMA node1 CPU(s):               80-159 

Vulnerability Itlb multibit:     Not affected 

Vulnerability L1tf:              Not affected 

Vulnerability Mds:               Not affected 

Vulnerability Meltdown:          Not affected 

Vulnerability Mmio stale data:   Not affected 

Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl 

Vulnerability Spectre v1:        Mitigation; __user pointer sanitization 

Vulnerability Spectre v2:        Mitigation; CSV2, BHB 

Vulnerability Srbds:             Not affected 

Vulnerability Tsx async abort:   Not affected 

Flags:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid 

                                  asimdrdm lrcpc dcpop asimddp ssbs </code>
로그인 후 복사
로그인 후 복사

- 각 CPU의 통계를 확인하고 개별 핫스팟/바쁜 CPU를 점검하십시오. 이것은 각 CPU에 대한 통계를보고하는 멀티 프로세서 통계 도구입니다 (-P 옵션)
<code>ampere@colo1:~$ free 

              total        used        free      shared  buff/cache   available 

Mem:      130256992     3422844   120742736        4208     6091412   125852984 

Swap:       8388604           0     8388604 
</code>
로그인 후 복사
<: :> CPU : 논리 CPU ID 또는 모든 CPU에 대한 요약 정보 <:> %usr : 사용자 시간, %nice 제외 우선 순위가 낮은 프로세스의 사용자 시간 <:>%sys : 시스템 시간 %iowait : io 대기 <:>%IRQ : 하드웨어 인터럽트 CPU 사용량 %소프트 : 소프트웨어 인터럽트 CPU 사용량 <:>%도둑질 : 다른 임차인에게 서비스를 제공하는 데 사용되는 시간 %게스트 : 클라이언트 가상 머신에서 소비 된 CPU 시간 최 <: :>%유휴 : 자유 시간

각 CPU에 대한 CPU 사용량을 식별하고 사용자 시간/코어 시간 비율, %USR, %SYS 및 %유휴 상태를 표시하는 것이 핵심 값입니다. 이러한 주요 값은 또한 단일 스레드 애플리케이션 또는 인터럽트 매핑으로 인해 발생할 수있는 "핫스팟"CPU를 식별하는 데 도움이 될 수 있습니다.

> 4. 내 응용 프로그램에 충분한 메모리가 있습니까?
    서버를 관리 할 때 새 응용 프로그램을 설치해야 할 수도 있고 응용 프로그램이 속도가 느려지기 시작했을 수도 있습니다. 시스템 리소스를 관리하고 시스템이 설치 한 시스템 메모리 및 시스템 메모리 활용을 이해하기 위해 명령은 귀중한 도구입니다. 는 특히 가상 메모리와 메모리를 적극적으로 교환하는 경우 메모리 활용을 모니터링하는 데 유용한 도구입니다.
    • . Linux free 명령에는 메모리 및 교환 통계가 표시됩니다. free

      출력은 전체 메모리, 중고 메모리 및 시스템의 사용 가능한 메모리를 표시합니다. 중요한 열은 사용 가능한 값으로, 응용 프로그램에 사용 가능한 메모리를 보여주고 교체해야합니다. 또한 즉시 재활용 할 수없는 메모리를 고려합니다. 10 Key Questions When Running on Ampere Altra-Based Instances

      . 이 명령은 현재 사용 가능한 메모리 및 페이징 통계를 포함하여 시스템 메모리, 건강에 대한 높은 수준의 관점을 제공합니다.
    • 명령은 활성 메모리가 스왑되는 (페이징)를 표시합니다.

      vmstat

      $vmstat 이 명령은 현재 상태에 대한 요약을 인쇄합니다. 열은 킬로 바이트로 기본적으로 다음과 같습니다

      <: :> swpd : 교환 된 메모리의 양 무료 : 사용 가능한 메모리

      버프 : 버퍼 캐시의 메모리 10 Key Questions When Running on Ampere Altra-Based Instances 캐시 : 페이지 캐시의 메모리 si : 메모리에 교환 (페이징) so : 메모리 교체 (페이징)

    • SI가 0이 아닌 경우 시스템은 메모리 압력을 받고 메모리를 스왑 장치로 바꾸고 있습니다.
    > 5. 충분한 메모리 대역폭을 받고 있습니까?

    충분한 메모리 대역폭을 이해하기 위해 먼저 시스템의 "최대 메모리 대역폭"값을 얻으십시오. "최대 메모리 대역폭"값은 다음과 같은 방법으로 찾을 수 있습니다.

    기본 드라마 클록 주파수 클럭 당 데이터 전송 수 : "이중 데이터 속도"(DDR*) 메모리가 사용되는 경우 두 번 메모리 버스 (인터페이스) 너비 : 예를 들어, DDR 3의 너비는 64 비트 (행이라고도 함) 입니다. 인터페이스 수 : 현대의 개인용 컴퓨터는 일반적으로 두 개의 메모리 인터페이스 (듀얼 채널 모드)를 사용하여 효과적인 128 비트 버스 너비를 달성합니다. 최대 메모리 대역폭 = 기본 드라마 클록 주파수 * 클럭 당 데이터 전송 횟수 * 메모리 참조 너비 * 인터페이스 수
  • 이 값은 "버스트 속도"라고도하는 시스템의 이론적 최대 대역폭을 나타냅니다. 이제 시스템에서 Multichase 또는 대역폭 벤치 마크를 실행하고 이러한 값을 확인할 수 있습니다.
  • 참고 : 버스트 속도는 지속 불가능한 것으로 밝혀졌으며 구현 된 값은 계산 된 값보다 약간 작을 수 있습니다.
  • > 6. 내 워크로드는 모든 CPU를 균형 잡힌 방식으로 사용합니까?
  • 성능 튜닝 또는 문제 해결의 일환으로 서버에서 워크로드를 실행할 때 현재 특정 프로세스의 CPU 핵심과 현재 CPU 코어에서 실행되는 프로세스의 리소스 활용 방법을 알고 싶을 수 있습니다. 첫 번째 단계는 CPU 코어에서 실행되는 프로세스를 찾는 것입니다. 이것은 HTOP을 사용하여 수행 할 수 있습니다. CPU 값은 HTOP의 기본 표시에 반영되지 않습니다. CPU 코어 값을 얻으려면 명령 줄에서
  • 를 시작하려면 f2
  • 키를 누르고 열로 이동하여 사용 가능한 열 아래에 프로세서를 추가하십시오. 현재 각 프로세스에서 사용하는 "CPU ID"는 "CPU"열에 나타납니다.
    • cpu/core를 표시하려면

      를 구성하는 방법 : $htop

      10 Key Questions When Running on Ampere Altra-Based Instances Core 4-6 표시 최대 값에 도달하기위한 명령 (HTOP Core Count는 "0"대신 "1"에서 시작) :

    • 선택한 통계 코어 확인을위한 명령 : $htop

      10 Key Questions When Running on Ampere Altra-Based Instances

      CPU 코어를 식별 한 후에는
    • 명령을 실행하여 각 CPU의 통계를 확인하고 개별 핫스팟/바쁜 CPU를 확인할 수 있습니다. 이것은 각 CPU (또는 코어)에 대한 통계를보고하는 멀티 프로세서 통계 도구입니다. 에 대한 자세한 내용은 "커널 시간과 비교하여 응용 프로그램에서 시간을 보내는 방법"을 참조하십시오.
    • is> 7. 내 네트워크가 내 응용 프로그램에 대한 병목 현상입니까?

      네트워크 병목 현상은 서버의 다른 리소스를 포화시키기 전에도 발생할 수 있습니다. 이 문제는 클라이언트 서버 모델에서 워크로드를 실행할 때 발견됩니다. 가장 먼저해야 할 일은 네트워크의 모습을 결정하는 것입니다. 클라이언트와 서버 간의 대기 시간 및 대역폭이 특히 중요합니다. IPERF3, PING 및 TRACEROUTE와 같은 도구는 네트워크의 한계를 결정하는 데 도움이되는 간단한 도구입니다. 네트워크 제한이 식별되면 및 $mpstat와 같은 도구를 사용하면 네트워크 활용을 모니터링하고 네트워크로 인한 시스템 병목 현상을 식별하는 데 도움이됩니다.

      10 Key Questions When Running on Ampere Altra-Based Instances

      . 이 명령은 CPU 통계, 디스크 통계, 네트워크 통계, 페이징 통계 및 시스템 통계를 포함한 시스템 리소스를 모니터링하는 데 사용됩니다. 네트워크 활용을 모니터링하려면 -n 옵션을 사용하십시오.

    이 명령은 시스템에서 수신하고 보낸 패킷의 처리량을 제공합니다. $mpstat $mpstat

    . 이 명령은 처리량 및 활용을 포함한 네트워크 인터페이스 통계를 인쇄합니다.

    $dstat $nicstat

    <:> 열에는 다음이 포함됩니다
      int : 인터페이스 이름
    • <:>%util : 최대 활용
    • SAT : 인터페이스 포화 통계를 반영하는 값
    • value 접두사 "r"= 읽기/수신 값 접두사 "w"= 쓰기/전송 1- kb/s : 초당 킬로바이트 2- PK/S : 초당 패킷
    • > 8. 내 디스크는 병목 현상입니까? 네트워크와 마찬가지로 디스크는 애플리케이션 성능 저하의 원인이 될 수 있습니다. 디스크 성능을 측정 할 때 다음 메트릭을 살펴 봅니다.
    • 활용률
    • 포화 iops (초당 입력/출력)
    • 처리량 응답 시간
    • 좋은 규칙은 응용 프로그램의 서버/인스턴스를 선택할 때 먼저 디스크의 I/O 성능을 벤치마킹하여 디스크 성능의 피크 또는 "상한"을 얻을 수 있도록해야합니다. 성능이 응용 프로그램의 요구를 충족하는지 디스크. Flexible I/O는 이러한 값을 결정하기위한 이상적인 도구입니다.
    • 응용 프로그램이 실행 된 후 가 실행되면 및
    • 를 사용하여 디스크 리소스 활용을 실시간으로 모니터링 할 수 있습니다.
    • 명령은 각 디스크에 대한 I/O 통계를 표시하여 워크로드 특성화, 활용 및 채도에 대한 메트릭을 제공합니다.

    첫 번째 줄 출력은 커널 버전, 호스트 이름, 데이터 아키텍처 및 CPU 카운트를 포함한 시스템의 요약을 표시합니다. 두 번째 줄은 시작 이후 시스템의 CPU 요약을 보여줍니다.

    다음 행에 표시된 각 디스크 장치의 경우 는 열에 기본 세부 사항이 표시됩니다.

    TPS : 초당 트랜잭션 수 KB_READ/S : 초당 킬로 바이트의 수 KB_WRTN/S : 킬로바이츠는 초당 작성 입니다 KB_READ : 총 킬로바이트의 총 수 KB_WRITE :
  • 명령은 CPU 통계, 디스크 통계, 네트워크 통계, 페이징 통계 및 시스템 통계를 포함한 시스템 리소스를 모니터링하는 데 사용됩니다. 디스크 사용을 모니터하려면 -d 옵션을 사용하십시오. 이 옵션은 디스크에 총 읽기 (읽기) 및 쓰기 (WRIT) 작업 수를 표시합니다.
  • 다음 이미지는 쓰기 집약적 인 워크로드를 보여줍니다.
  • NUMA 성능 손실 비용을 지불하고 있습니까?
  • 비 일관된 메모리 액세스 (NUMA)는 멀티 프로세싱을위한 컴퓨터 메모리 설계이며, 메모리 액세스 시간은 프로세서에 대한 메모리 위치에 따라 다릅니다. NUMA에서 프로세서는 비 로컬 메모리 (프로세서간에 공유되는 다른 프로세서 또는 메모리의 로컬 메모리)보다 자체 로컬 메모리에 더 빨리 액세스 할 수 있습니다. NUMA의 이점은 특히 특정 작업이나 사용자와 밀접한 관련이있는 서버에서 워크로드, 특히 서버에서 제한됩니다.
  • NUMA 시스템의 경우 프로세서와 메모리 뱅크 사이의 거리가 클수록 프로세서가 해당 메모리 뱅크에 액세스 할 수 있습니다. 성능에 민감한 응용 프로그램의 경우 시스템 운영 체제는 가장 가까운 메모리 뱅크에서 메모리를 할당해야합니다. 시스템 또는 프로세스의 메모리 할당을 실시간으로 모니터링하려면

    가 훌륭한 도구입니다. $numastat

    명령은 비 일관된 메모리 액세스 (NUMA) 시스템에 대한 통계를 제공합니다. 이 시스템은 일반적으로 여러 CPU 슬롯이있는 시스템입니다.

    numastat

    Linux 운영 체제는 가장 가까운 NUMA 노드에 메모리를 할당하려고 시도하고

    는 메모리 할당에 대한 현재 통계를 표시합니다. 10 Key Questions When Running on Ampere Altra-Based Instances

    numa_hit : 예상되지 않은 Numa 노드 에 메모리를 할당하십시오 numa_miss : 다른 곳에 있어야하는 로컬 할당을 표시하십시오 numa_foreign : 로컬로 할당 해야하는 원격 할당을 표시 Other_Node :이 노드에 메모리를 할당하고 프로세스는 다른 곳에서 실행됩니다

    numa_miss 및 numa_foreign 둘 다 선호하는 numa 노드에 메모리 할당이 표시됩니다. 이상적으로는 NUMA_MISS 및 NUMA_FOREIGN의 값은 메모리 I/O 성능이 불량 할 수 있으므로 최소한으로 유지해야합니다. $numastat

    명령은 프로세스의 NUMA 분포를 보는 데 사용될 수도 있습니다.
    • > 10. 응용 프로그램을 실행할 때 CPU는 무엇을하고 있습니까?
    • 시스템/인스턴스에서 응용 프로그램을 실행할 때 응용 프로그램이 수행하는 작업과 응용 프로그램이 CPU에서 사용하는 리소스를 이해하는 데 관심이 있습니다. 는 시스템에서 실행되는 각 개별 프로세스를 모니터링하는 명령 줄 도구입니다.
    • 주요 CPU 사용자는 사용자 시간과 시스템 시간으로 분류됩니다.
    • 이 Linux 도구는 사용자 시간 및 시스템 시간을 포함하여 프로세스 또는 스레드별로 CPU 사용을 분해합니다. 이 명령은 프로세스 (-d 옵션)에 대한 IO 통계를보고 할 수도 있습니다.

    uid : 모니터링되는 작업의 실제 사용자 ID 번호 PID : 모니터링중인 작업의 식별 번호 <: : cpu> %대기 : 작업이 실행되기를 기다릴 때 사용되는 CPU의 백분율

    %CPU : 작업에서 사용하는 CPU 시간의 총 백분율. $numastat -p <process></process> <: :> CPU : 작업이 첨부 된 프로세서/코어 번호 특정 프로세스에 대한 데이터를 수집하기 위해

    를 실행할 수도 있습니다.

    10 Key Questions When Running on Ampere Altra-Based Instances

    파트너십을 위해 전문가 영업 팀에 문의하거나 개발자 액세스 프로그램을 통해 Ampere 시스템에 액세스하는 방법을 배우십시오.

위 내용은 Ampere Altra 기반 인스턴스에서 실행할 때 10 가지 주요 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿