31.2. 시스템 토폴로지 유형


오늘날의 컴퓨팅에서 대부분의 최신 시스템에는 여러 프로세서가 있기 때문에 CPU의 개념은 잘못된 개념입니다. 시스템의 토폴로지는 이러한 프로세서가 서로 그리고 다른 시스템 리소스에 연결하는 방식입니다. 이는 시스템과 애플리케이션 성능 및 시스템의 튜닝 고려 사항에 영향을 줄 수 있습니다.

다음은 최신 컴퓨팅에 사용되는 두 가지 기본 토폴로지 유형입니다.

SMP(대칭 멀티프로세서) 토폴로지
SMP 토폴로지를 사용하면 모든 프로세서가 동일한 시간 내에 메모리에 액세스할 수 있습니다. 그러나 공유 및 동일한 메모리 액세스는 본질적으로 모든 CPU에서 직렬화된 메모리 액세스를 강제하기 때문에 SMP 시스템 확장 제약 조건은 일반적으로 허용되지 않습니다. 이러한 이유로 사실상 모든 최신 서버 시스템은 NUMA 시스템입니다.
NUMA(Non-Uniform Memory Access) 토폴로지

NUMA 토폴로지는 SMP 토폴로지보다 최근에 개발되었습니다. NUMA 시스템에서 다중 프로세서는 소켓에 물리적으로 그룹화됩니다. 각 소켓에는 해당 메모리에 대한 로컬 액세스 권한이 있는 전용 메모리 및 프로세서 영역이 있으며, 이를 전체적으로 노드라고 합니다. 동일한 노드의 프로세서는 해당 노드의 메모리 은행에 대한 빠른 속도로 액세스하고, 해당 노드에 없는 메모리 은행에 대한 액세스 속도가 느려집니다.

따라서 비로컬 메모리에 액세스할 때 성능이 저하됩니다. 따라서 NUMA 토폴로지가 있는 시스템에서 성능에 민감한 애플리케이션은 애플리케이션을 실행하는 프로세서와 동일한 노드에 있는 메모리에 액세스해야 하며 가능한 경우 원격 메모리에 액세스하지 않아야 합니다.

성능에 민감한 다중 스레드 애플리케이션은 특정 프로세서가 아닌 특정 NUMA 노드에서 실행하도록 를 구성하는 것이 좋습니다. 이것이 적합한지 여부는 시스템과 애플리케이션의 요구 사항에 따라 달라집니다. 여러 애플리케이션 스레드가 동일한 캐시 데이터에 액세스하는 경우 동일한 프로세서에서 실행하도록 해당 스레드를 구성하는 것이 적합할 수 있습니다. 그러나 동일한 프로세서에서 액세스하고 캐시하는 여러 스레드가 동일한 프로세서에서 실행되는 경우 각 스레드는 이전 스레드에서 액세스하는 캐시된 데이터를 제거할 수 있습니다. 즉, 각 스레드가 캐시를 '누락'하고 메모리에서 데이터를 가져와 캐시에서 데이터를 교체하는 실행 시간이 낭비됩니다. perf 도구를 사용하여 과도한 수의 캐시 누락이 있는지 확인합니다.

31.2.1. 시스템 토폴로지 표시

시스템의 토폴로지를 이해하는 데 도움이 되는 여러 명령이 있습니다. 다음 절차에서는 시스템 토폴로지를 결정하는 방법을 설명합니다.

절차

  • 시스템 토폴로지의 개요를 표시하려면 다음을 수행합니다.

    $ numactl --hardware
    available: 4 nodes (0-3)
    node 0 cpus: 0 4 8 12 16 20 24 28 32 36
    node 0 size: 65415 MB
    node 0 free: 43971 MB
    [...]
  • CPU 수, 스레드, 코어, 소켓 및 NUMA 노드 수와 같은 CPU 아키텍처에 대한 정보를 수집하려면 다음을 수행합니다.

    $ lscpu
    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    Byte Order:            Little Endian
    CPU(s):                40
    On-line CPU(s) list:   0-39
    Thread(s) per core:    1
    Core(s) per socket:    10
    Socket(s):             4
    NUMA node(s):          4
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 47
    Model name:            Intel(R) Xeon(R) CPU E7- 4870  @ 2.40GHz
    Stepping:              2
    CPU MHz:               2394.204
    BogoMIPS:              4787.85
    Virtualization:        VT-x
    L1d cache:             32K
    L1i cache:             32K
    L2 cache:              256K
    L3 cache:              30720K
    NUMA node0 CPU(s):     0,4,8,12,16,20,24,28,32,36
    NUMA node1 CPU(s):     2,6,10,14,18,22,26,30,34,38
    NUMA node2 CPU(s):     1,5,9,13,17,21,25,29,33,37
    NUMA node3 CPU(s):     3,7,11,15,19,23,27,31,35,39
  • 시스템의 그래픽 표현을 보려면 다음을 수행합니다.

    # yum install hwloc-gui
    # lstopo

    그림 31.1. lstopo 출력

    lstopo
  • 자세한 텍스트 출력을 보려면 다음을 수행합니다.

    # yum install hwloc
    # lstopo-no-graphics
    Machine (15GB)
      Package L#0 + L3 L#0 (8192KB)
        L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
            PU L#0 (P#0)
            PU L#1 (P#4)
           HostBridge L#0
        PCI 8086:5917
            GPU L#0 "renderD128"
            GPU L#1 "controlD64"
            GPU L#2 "card0"
        PCIBridge
            PCI 8086:24fd
              Net L#3 "wlp61s0"
        PCIBridge
            PCI 8086:f1a6
        PCI 8086:15d7
            Net L#4 "enp0s31f6"

추가 리소스

  • numactl(8), lscpu(1)lstopo(1) 도움말 페이지
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.