이 기사는 Linux의 Numa 아키텍처에 대한 관련 지식을 제공하는 데 도움이 되기를 바랍니다.
다음 사례는 Ubuntu 16.04 기준이며, 다른 Linux 시스템에도 적용 가능합니다. 제가 사용한 케이스 환경은 다음과 같습니다.
머신 구성: 32 CPU, 64GB 메모리
NUMA의 스토리지 레벨 개념:
1) 프로세서 레이어: 프로세서 레이어라고 불리는 단일 물리적 코어. 2) 로컬 노드 계층: 노드의 모든 프로세서에 대해 이 노드를 로컬 노드라고 합니다. 3) 홈 노드 계층: 로컬 노드에 인접한 노드를 홈 노드라 한다. 4) 원격 노드 계층: 로컬 노드나 이웃 노드가 아닌 노드를 원격 노드라고 합니다. 다양한 유형의 노드의 메모리에 액세스하는 CPU 속도는 다릅니다. 로컬 노드에 액세스하는 속도는 가장 빠르며, 원격 노드에 액세스하는 속도는 가장 느립니다. 즉, 액세스 속도는 노드의 거리와 관련됩니다. 거리가 멀수록 액세스 속도가 느려집니다. 이 거리를 For Node Distance라고 합니다. 애플리케이션은 서로 다른 CPU 모듈 간의 상호 작용을 최소화하도록 노력해야 합니다. 애플리케이션을 CPU 모듈에서 수정할 수 있으면 애플리케이션의 성능이 크게 향상됩니다.
** Kunpeng 920 프로세서를 사용하는 CPU 칩의 구성에 대해 이야기해 보겠습니다. ** Kunpeng 920 프로세서 시스템 온 칩의 각 슈퍼 코어 클러스터에는 6개의 코어 클러스터, 2개의 I/O 클러스터 및 4개의 DDR 컨트롤러가 포함되어 있습니다. 각 슈퍼 코어 클러스터는 CPU 칩에 패키지되어 있습니다. 각 칩은 최대 3200MT/s의 데이터 전송 속도를 갖춘 4개의 72비트(64비트 데이터 + 8비트 ECC) 고속 DDR4 채널을 통합합니다. 단일 칩은 최대 512GB×4 DDR 저장 공간을 지원할 수 있습니다. L3 캐시는 물리적으로 L3 캐시 TAG와 L3 캐시 데이터의 두 부분으로 나뉩니다. L3 캐시 TAG는 각 코어 클러스터에 통합되어 청취 대기 시간을 줄입니다. L3 Cache DATA는 온칩 버스에 직접 연결됩니다. Hydra Root Agent(Hydra Home Agent, HHA)는 멀티 칩 시스템의 캐시 일관성 프로토콜을 처리하는 모듈입니다. POE_ICL은 일반적으로 패킷 시퀀서, 메시지 큐, 메시지 배포로 사용되거나 프로세서 코어의 특정 작업을 구현하는 데 사용할 수 있는 시스템 구성 하드웨어 가속기입니다. 또한 각 슈퍼 코어 클러스터는 ARM의 GICv4 사양과 호환되는 GICD(Generic Interrupt Controller Distributor) 모듈로 물리적으로 구성됩니다. 단일 칩 또는 다중 칩 시스템에 여러 슈퍼 코어 클러스터가 있는 경우 시스템 소프트웨어에는 하나의 GICD만 표시됩니다.
numactl 사용법
Linux에서는 수동 조정 명령인 numactl을 제공합니다(기본적으로 설치되지 않음). Ubuntu에서의 설치 명령은 다음과 같습니다.
sudo apt install numactl -y
우선 man numactl 또는 numactl을 통해 알아볼 수 있습니다. --h 매개변수의 기능과 출력 내용입니다. 시스템의 Numa 상태를 확인하십시오:
numactl --hardware
다음을 실행하여 얻은 결과:
available: 4 nodes (0-3) node 0 cpus: 0 1 2 3 4 5 6 7 node 0 size: 16047 MB node 0 free: 3937 MB node 1 cpus: 8 9 10 11 12 13 14 15 node 1 size: 16126 MB node 1 free: 4554 MB node 2 cpus: 16 17 18 19 20 21 22 23 node 2 size: 16126 MB node 2 free: 8403 MB node 3 cpus: 24 25 26 27 28 29 30 31 node 3 size: 16126 MB node 3 free: 7774 MB node distances: node 0 1 2 3 0: 10 20 20 20 1: 20 10 20 20 2: 20 20 10 20 3: 20 20 20 10
이 그림과 명령에서 얻은 결과에 따르면 이 시스템에는 총 4개의 노드가 있음을 알 수 있습니다. , 각각 8개의 CPU와 16G 메모리를 수신합니다. 여기서 주목해야 할 점은 CPU가 공유하는 L3 캐시도 자체적으로 해당 공간을 받게 된다는 점입니다. numastat 명령을 통해 Numa 상태를 확인할 수 있습니다. 반환 값 내용:
numa_hit: 이 노드에 메모리를 할당하기 위한 것이며, 이 노드에서 할당된 횟수입니다. 이 노드에 메모리를 할당했지만 최종적으로 다른 노드에서 할당되었습니다. 할당 횟수
numa_foreign: 다른 노드에 할당하려고 할 때 이 노드에서 메모리가 할당된 횟수입니다. interleave_hit: 인터리브 전략을 사용하여 이 노드에서 메모리를 할당한 횟수
local_node: 이 노드의 프로세스가 이 노드에서 할당된 횟수 해당 노드에 할당된 횟수
other_node: 횟수입니다. 다른 노드 프로세스는 노드에 할당됩니다
참고: numa_miss 값이 상대적으로 높은 것으로 확인되면 할당 전략을 조정해야 함을 의미합니다. 예를 들어 지정된 프로세스 연결이 지정된 CPU에 바인딩되어 메모리 적중률이 향상됩니다.
root@ubuntu:~# numastat node0 node1 node2 node3 numa_hit 19480355292 11164752760 12401311900 12980472384 numa_miss 5122680 122652623 88449951 7058 numa_foreign 122652643 88449935 7055 5122679 interleave_hit 12619 13942 14010 13924 local_node 19480308881 11164721296 12401264089 12980411641 other_node 5169091 122684087 88497762 67801
NUMA 메모리 할당 전략
--localalloc 또는 -l: 프로세스가 로컬 노드에서 메모리 할당을 요청하도록 지정합니다. --membind=nodes 또는 -m 노드: 프로세스가 지정된 노드에서만 메모리 할당을 요청할 수 있도록 지정합니다. --preferred=node: 메모리 확보를 위해 권장 노드를 지정합니다. 획득에 실패하면 다른 노드를 시도하세요. --interleave=nodes 또는 -i 노드: 프로세스가 라운드 로빈 알고리즘을 사용하여 지정된 노드에서 메모리 할당을 인터리브 방식으로 요청하도록 지정합니다.
numactl --interleave=all mongod -f /etc/mongod.conf
因为NUMA默认的内存分配策略是优先在进程所在CPU的本地内存中分配,会导致CPU节点之间内存分配不均衡,当开启了swap,某个CPU节点的内存不足时,会导致swap产生,而不是从远程节点分配内存。这就是所谓的swap insanity 现象。或导致性能急剧下降。所以在运维层面,我们也需要关注NUMA架构下的内存使用情况(多个内存节点使用可能不均衡),并合理配置系统参数(内存回收策略/Swap使用倾向),尽量去避免使用到Swap。
Node->Socket->Core->Processor
随着多核技术的发展,将多个CPU封装在一起,这个封装被称为插槽Socket;Core是socket上独立的硬件单元;通过intel的超线程HT技术进一步提升CPU的处理能力,OS看到的逻辑上的核Processor数量。
Socket = Node
Socket是物理概念,指的是主板上CPU插槽;Node是逻辑概念,对应于Socket。
Core = 物理CPU
Core是物理概念,一个独立的硬件执行单元,对应于物理CPU;
Thread = 逻辑CPU = Processor
Thread是逻辑CPU,也就是Processo
lscpu的使用
显示格式:
Architecture:架构
CPU(s):逻辑cpu颗数
Thread(s) per core:每个核心线程,也就是指超线程
Core(s) per socket:每个cpu插槽核数/每颗物理cpu核数
CPU socket(s):cpu插槽数
L1d cache:级缓存(google了下,这具体表示表示cpu的L1数据缓存)
L1i cache:一级缓存(具体为L1指令缓存)
L2 cache:二级缓存
L3 cache:三级缓存
NUMA node0 CPU(s) :CPU上的逻辑核,也就是超线程
执行lscpu,结果部分如下:
root@ubuntu:~# lscpu Architecture: x86_64 CPU(s): 32 Thread(s) per core: 1 Core(s) per socket: 8 Socket(s): 4 L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 20480K NUMA node0 CPU(s): 0-7 NUMA node1 CPU(s): 8-15 NUMA node2 CPU(s): 16-23 NUMA node3 CPU(s): 24-31
相关推荐:《Linux视频教程》
위 내용은 Linux의 Numa 아키텍처에 대해 이야기해 보겠습니다. (그림과 텍스트로 자세한 설명)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

시작시 init =/bin/bash 또는 단일 매개 변수를 추가하여 Linux 유지 관리 모드가 입력됩니다. 1. 유지 보수 모드를 입력하십시오 : 그루브 메뉴를 편집하고 시작 매개 변수를 추가하십시오. 2. 파일 시스템을 다시 마운트하여 읽고 쓰기 모드 : MOUNT-OREMOUNT, RW/. 3. 파일 시스템 수리 : FSCK/DEV/SDA1과 같은 FSCK 명령을 사용하십시오. 4. 데이터 손실을 피하기 위해 데이터를 백업하고주의해서 작동합니다.

이 기사에서는 데비안 시스템에서 Hadoop 데이터 처리 효율성을 향상시키는 방법에 대해 설명합니다. 최적화 전략에는 하드웨어 업그레이드, 운영 체제 매개 변수 조정, Hadoop 구성 수정 및 효율적인 알고리즘 및 도구 사용이 포함됩니다. 1. 하드웨어 리소스 강화는 모든 노드에 일관된 하드웨어 구성, 특히 CPU, 메모리 및 네트워크 장비 성능에주의를 기울일 수 있도록합니다. 전반적인 처리 속도를 향상시키기 위해서는 고성능 하드웨어 구성 요소를 선택하는 것이 필수적입니다. 2. 운영 체제 조정 파일 설명 자 및 네트워크 연결 : /etc/security/limits.conf 파일을 수정하여 파일 설명자의 상한을 늘리고 동시에 시스템에 의해 열 수 있습니다. JVM 매개 변수 조정 : Hadoop-env.sh 파일에서 조정

이 안내서는 데비안 시스템에서 syslog를 사용하는 방법을 배우도록 안내합니다. Syslog는 로깅 시스템 및 응용 프로그램 로그 메시지를위한 Linux 시스템의 핵심 서비스입니다. 관리자가 시스템 활동을 모니터링하고 분석하여 문제를 신속하게 식별하고 해결하는 데 도움이됩니다. 1. syslog에 대한 기본 지식 syslog의 핵심 기능에는 다음이 포함됩니다. 로그 메시지 중앙 수집 및 관리; 다중 로그 출력 형식 및 대상 위치 (예 : 파일 또는 네트워크) 지원; 실시간 로그보기 및 필터링 기능 제공. 2. Syslog 설치 및 구성 (RSYSLOG 사용) Debian 시스템은 기본적으로 RSYSLOG를 사용합니다. 다음 명령으로 설치할 수 있습니다 : sudoaptupdatesud

데비안 시스템에 적합한 Hadoop 버전을 선택할 때는 다음과 같은 주요 요소를 고려해야합니다. 1. 안정성 및 장기 지원 : 안정성과 보안을 추구하는 사용자의 경우 Debian11 (Bullseye)과 같은 데비안 안정 버전을 선택하는 것이 좋습니다. 이 버전은 완전히 테스트되었으며 최대 5 년의 지원주기가있어 시스템의 안정적인 작동을 보장 할 수 있습니다. 2. 패키지 업데이트 속도 : 최신 Hadoop 기능 및 기능을 사용해야하는 경우 Debian의 불안정한 버전 (SID)을 고려할 수 있습니다. 그러나 불안정한 버전에는 호환성 문제와 안정성 위험이있을 수 있습니다. 3. 커뮤니티 지원 및 자원 : 데비안은 풍부한 문서를 제공하고

이 기사에서는 Tigervnc를 사용하여 데비안 시스템에서 파일을 공유하는 방법에 대해 설명합니다. 먼저 tigervnc 서버를 설치 한 다음 구성해야합니다. 1. TigervNC 서버를 설치하고 터미널을 엽니 다. 소프트웨어 패키지 목록 업데이트 : sudoaptupdate tigervnc 서버를 설치하려면 : sudoaptinstalltigervnc-standalone-servertigervnc-common 2. VNC 서버 비밀번호를 설정하도록 tigervnc 서버 구성 : vncpasswd vnc 서버 : vncserver : 1-localhostno

데비안 메일 서버의 방화벽 구성은 서버 보안을 보장하는 데 중요한 단계입니다. 다음은 iptables 및 방화구 사용을 포함하여 일반적으로 사용되는 여러 방화벽 구성 방법입니다. iptables를 사용하여 iptables를 설치하도록 방화벽을 구성하십시오 (아직 설치되지 않은 경우) : sudoapt-getupdatesudoapt-getinstalliptablesview 현재 iptables 규칙 : sudoiptables-l configuration

Debian Mail 서버에 SSL 인증서를 설치하는 단계는 다음과 같습니다. 1. OpenSSL 툴킷을 먼저 설치하십시오. 먼저 OpenSSL 툴킷이 이미 시스템에 설치되어 있는지 확인하십시오. 설치되지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다. 개인 키 및 인증서 요청 생성 다음에 다음, OpenSSL을 사용하여 2048 비트 RSA 개인 키 및 인증서 요청 (CSR)을 생성합니다.

Debian 시스템에서 메일 서버의 가상 호스트를 구성하려면 일반적으로 Apache가 웹 서버 기능에 주로 사용되기 때문에 Apache Httpserver가 아닌 Mail Server 소프트웨어 (예 : Postfix, Exim 등)를 설치하고 구성하는 것이 포함됩니다. 다음은 메일 서버 가상 호스트 구성을위한 기본 단계입니다. PostFix Mail Server 업데이트 시스템 패키지 설치 : SudoaptupDatesudoAptUpgrade PostFix 설치 : Sudoapt


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
