리눅스 lscpu 명령 상세 설명

lscpu 명령어란?

lscpu 명령은 CPU 아키텍처 정보를 표시하는 리눅스 유틸리티입니다. 이 명령은 sysfs, /proc/cpuinfo 및 해당 아키텍처에 적용되는 특정 라이브러리(예: Powerpc의 librtas)에서 CPU 아키텍처 정보를 수집합니다. 출력은 파싱이나 사람이 쉽게 읽을 수 있도록 최적화될 수 있습니다.

이 정보에는 CPU 수, 스레드, 코어, 소켓 및 비균일 메모리 접근(NUMA) 노드 수가 포함됩니다. 또한 CPU 캐시, 캐시 공유, 패밀리, 모델, bogoMIPS, 바이트 순서 및 스텝핑 정보도 제공됩니다.

가상화 환경에서 표시되는 CPU 아키텍처 정보는 일반적으로 물리(호스트) 시스템과 다른 게스트 운영 시스템의 구성을 반영합니다. 물리 토폴로지 정보를 검색하는 아키텍처에서 lscpu는 호스트 시스템의 물리적 소켓, 칩, 코어 수도 표시합니다.

기본 사용법

가장 간단한 형태의 lscpu 명령은 다음과 같습니다:

lscpu

출력 해석

lscpu 명령 실행 시 다음과 같은 정보가 표시됩니다:

Architecture:          x86_64  // 아키텍처
CPU op-mode(s):        32-bit, 64-bit  // 운영 모드
Byte Order:            Little Endian  // 바이트 순서
CPU(s):                4    // 전체 CPU 수
On-line CPU(s) list:   0-3  // 온라인 CPU 목록
Thread(s) per core:    1    // 코어당 스레드 수
Core(s) per socket:    4    // 소켓당 코어 수
Socket(s):             1    // 물리적 소켓 수
NUMA node(s):          1    // NUMA 노드 수
Vendor ID:             GenuineIntel  // 제조업체 ID
CPU family:            6     // CPU 패밀리
Model:                94    // 모델 번호
Model name:          Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz  // 모델 이름
Stepping:             3     // 스텝핑 정보
CPU MHz:              900.023  // 현재 CPU 속도
CPU max MHz:          3700.0000  // 최대 CPU 속도
CPU min MHz:          800.0000  // 최소 CPU 속도
BogoMIPS:             6624.00  // MIPS 추정치
Virtualization:       VT-x  // 가상화 기술
L1d cache:           32K  // L1 데이터 캐시
L1i cache:           32K  // L1 명령 캐시
L2 cache:            256K  // L2 캐시
L3 cache:            8192K  // L3 캐시
NUMA node0 CPU(s):   0-3  // NUMA 노드 0에 할당된 CPU
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp

주요 옵션

lscpu 명령은 다양한 옵션을 지원합니다:

  • -a, --all: 온라인 및 오프라인 CPU 모두 표시 (기본값은 -e 옵션과 함께 사용)
  • -b, --online: 온라인 CPU만 표시 (기본값은 -p 옵션과 함께 사용)
  • -c, --offline: 오프라인 CPU만 표시
  • -e, --extended[=리스트]: 읽기 쉬운 형식의 확장 정보 표시
  • -p, --parse[=리스트]: 파싱하기 쉬운 형식으로 출력
  • -s, --sysroot 디렉토리: 지정된 디렉토리를 시스템 루트로 사용
  • -x, --hex: CPU 목록 대신 16진수 마스크 표시
  • -y, --physical: 논리 ID 대신 물리 ID 표시
  • -h, --help: 도움말 표시
  • -V, --version: 버전 정보 표시

확장 출력 예시

다음 명령은 확장된 형식으로 CPU 정보를 표시합니다:

lscpu -e=CPU,노드,소켓,코어,온라인,최대MHz,최소MHz

출력 예시:

CPU  노드  소켓  코어  온라인  최대MHz    최소MHz
0    0     0     0     예      3700.0000  800.0000
1    0     0     1     예      3700.0000  800.0000
2    0     0     2     예      3700.0000  800.0000
3    0     0     3     예      3700.0000  800.0000

파싱 가능한 형식 예시

다음 명령은 파싱하기 쉬운 형식으로 CPU 정보를 표시합니다:

lscpu -p=CPU,코어,소켓,노드,,L1d:L1i

출력 예시:

# CPU,코어,소켓,노드,,L1d,L1i
0,0,0,0,,0,0
1,1,0,0,,1,1
2,2,0,0,,2,2
3,3,0,0,,3,3

중요 개념

  • 소켓(Socket): 물리 CPU가 삽입되는 슬롯의 수
  • 코어(Core): 물리 CPU 내에서 실제 작업을 수행하는 처리 단위
  • 스레드(Thread): 각 코어에서 동시에 실행될 수 있는 논리적 처리 단위 (인텔의 하이퍼스레딩 기술)
  • NUMA(비균일 메모리 접근): 여러 CPU가 메모리를 공유할 때 발생하는 지연 시간을 최소화하기 위한 메모리 접근 방식

CPU 정보 확인

다음 명령들을 사용하여 다양한 CPU 정보를 확인할 수 있습니다:

# 물리 CPU 수 확인
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

# 논리 CPU 수 확인
cat /proc/cpuinfo | grep "processor" | wc -l

# 코어 수 확인
cat /proc/cpuinfo | grep "cores" | uniq

# 특정 CPU 온라인/오프라인 상태 변경
echo 0 > /sys/devices/system/cpu/cpu1/online  # CPU1 오프라인
echo 1 > /sys/devices/system/cpu/cpu1/online  # CPU1 온라인

결론

lscpu 명령은 시스템의 CPU 구성을 빠르게 파악할 수 있는 유용한 도구입니다. 다양한 옵션을 사용하여 필요한 정보만 선택적으로 추출하거나, 파싱하기 쉬운 형식으로 출력하여 스크립트에서 활용할 수 있습니다. 특히 서버 환경에서 여러 CPU를 사용하는 경우, lscpu 명령을 통해 시스템의 전체적인 CPU 구성을 이해하는 데 큰 도움이 됩니다.

태그: 리눅스 CPU 시스템 관리 lscpu 아키텍처

6월 7일 01:07에 게시됨