>  기사  >  운영 및 유지보수  >  매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

Linux中文社区
Linux中文社区앞으로
2023-08-03 16:20:12977검색

Linux 운영 체제에 대한 관심과 기본 지식에 대한 강한 열망으로 이 기사를 편집했습니다. 이 문서는 기본 지식을 테스트하기 위한 지표로도 사용할 수 있습니다. 또한 이 문서는 시스템의 모든 측면을 다루고 있습니다. 완전한 컴퓨터 시스템 지식, 네트워크 지식 및 운영 체제 지식이 없으면 문서의 도구를 완전히 익히는 것은 불가능합니다. 또한 시스템 성능 분석 및 최적화는 장기적인 시리즈입니다.


이 문서는 주로 Netflix 수석 성능 설계자 Brendan Gregg가 Linux 성능 튜닝 도구를 업데이트하고 Linux 시스템 성능 최적화와 관련된 기사를 수집한 블로그 게시물을 기반으로 한 포괄적인 기사이며, 원칙 및 원칙을 결합합니다. 관련된 성능 테스트 도구에 대해 설명합니다.


배경 지식: 성능 문제를 분석할 때 알아야 할 배경 지식이 있습니다. 예를 들어, 하드웨어 캐시, 또 다른 예로는 운영 체제 커널이 있습니다. 애플리케이션의 동작 세부 사항은 이러한 사항과 얽혀 있는 경우가 많습니다. 예를 들어 일부 프로그램은 캐시를 완전히 활용할 수 없어 성능이 저하될 수 있습니다. 예를 들어, 너무 많은 시스템 호출이 불필요하게 호출되어 커널/사용자 전환 등이 자주 발생합니다. 이것은 이 글의 후속 내용을 위한 길을 닦기 위한 것입니다. 튜닝에 대해서는 아직 아는 것이 많지 않습니다. 모두가 함께 배우고 발전할 수 있기를 바랍니다.


【성능 분석 도구】

먼저 사진을 보겠습니다.

매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

위 사진은 Brendan Gregg가 공유한 성능 분석입니다. 여기에 있는 모든 도구는 man을 통해 도움말 문서를 얻을 수 있습니다.


▲ vmstat - 가상 메모리 통계

vmstat(VirtualMeomoryStatistics, 가상 메모리 통계)는 Linux에서 메모리를 모니터링하는 일반적인 도구로 운영 체제의 가상 메모리, 프로세스 및 CPU를 모니터링할 수 있습니다. 전반적인 상황을 모니터링하세요.


vmstat의 일반적인 사용법: vmstat 간격 시간은 간격 초마다 한 번 샘플링을 의미하며, 시간을 생략하면 사용자가 수동으로 중지할 때까지 데이터가 수집됩니다.
간단한 예:

매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

ctrl+c를 사용하여 vmstat의 데이터 수집을 중지할 수 있습니다.


첫 번째 행은 시스템이 시작된 이후 평균을 보여주고, 두 번째 행은 지금 무슨 일이 일어나고 있는지 보여주기 시작하며, 다음 행은 5초 간격으로 무슨 일이 일어나고 있는지 보여줍니다. 각 열의 의미는 다음과 같이 헤더에 있습니다. 표시:

▪ procs: r 열은 CPU를 기다리고 있는 프로세스 수를 보여주고, b 열은 중단 없이 대기 중인(IO를 기다리는) 프로세스 수를 보여줍니다.

memory: swapd 열은 디스크에서 스왑된 블록 수(페이지 스와핑)를 표시하고, 나머지 열에는 사용 가능한 블록 수(사용되지 않음) 및 버퍼로 사용되고 있는 블록 수를 표시합니다. , 운영 체제의 캐시로 사용되는 양.

swap: 스왑 활동을 표시합니다. 초당 스왑 인(디스크에서) 및 스왑 아웃(디스크로)되는 블록 수입니다.

io: 블록 장치에서 읽은(bi) 블록 수와 쓴(bo) 블록 수를 표시하며 일반적으로 하드 디스크 I/O를 반영합니다.

▪ 시스템: 초당 인터럽트(in) 및 컨텍스트 전환(cs) 수를 표시합니다.

▪ CPU: 사용자 코드 실행(비커널), 시스템 코드 실행(커널), 유휴 및 IO 대기를 포함한 다양한 작업에 소비된 모든 CPU 시간의 백분율을 표시합니다.

메모리 부족 증상: 사용 가능한 메모리가 급격히 감소, 버퍼 및 캐시 재활용이 도움이 되지 않음, 스왑 파티션(swpd)의 과도한 사용, 페이지 교환(swap)이 잦음, 읽기 및 쓰기 디스크 수 증가(io) , 페이지 폴트(in )가 증가하고 컨텍스트 스위치(cs) 수가 증가하며 IO를 기다리는 프로세스 수(b)가 증가하고 IO를 기다리는 데 많은 CPU 시간이 소비됩니다(wa)


▲iostat - 중앙 처리 장치 통계 보고용

iostat는 전체 시스템, 어댑터, tty 장치, 디스크 및 CD-ROM에 대한 중앙 처리 장치(CPU) 통계 및 입출력 통계를 보고하는 데 사용됩니다. 기본적으로 vmstat와 동일한 CPU 사용량 정보를 사용하려면 다음 명령을 사용하여 확장 장치 통계를 표시합니다.

매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

첫 번째 줄에는 시스템 시작 이후의 평균이 표시되고 그 다음에는 증분 평균, 장치당 한 행이 표시됩니다.

일반적인 Linux 디스크 IO 표시기 약어 습관: rq는 요청, r은 읽기, w는 쓰기, qu는 대기열, sz는 크기, a는 평균, tm은 시간, svc는 서비스입니다.

▪rrqm/s 및 wrqm/s: 초당 읽기 및 쓰기 요청을 결합한 "합체"는 운영 체제가 대기열에서 여러 논리적 요청을 가져와 실제 디스크에 대한 하나의 요청으로 병합한다는 의미입니다.

▪r/s 및 w/s: 초당 장치에 전송된 읽기 및 쓰기 요청 수입니다.

▪rsec/s 및 wsec/s: 초당 읽고 쓴 섹터 수입니다.

▪avgrq –sz: 요청된 섹터 수입니다.

▪avgqu –sz: 장치 대기열에서 대기 중인 요청 수입니다.

▪await: 각 IO 요청에 소요된 시간입니다.

▪svctm: 실제 요청(서비스) 시간입니다.

▪%util: 하나 이상의 활성 요청이 있었던 시간의 비율입니다.


▲dstat--시스템 모니터링 도구

dstat는 입력에 비해 CPU 사용량, 디스크 IO 상태, 네트워크 패킷 전송 상태 및 페이지 변경 상태를 보여줍니다. vmstat 및 iostat가 더 상세하고 직관적입니다. 사용할 때는 명령어를 직접 입력하면 되고, 물론 특정 매개변수를 사용할 수도 있습니다.

는 다음과 같습니다. dstat –cdlmnpsy

매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션


▲iotop--LINUX 프로세스 실시간 모니터링 도구

iotop 명령은 하드 디스크 IO를 표시하기 위한 전용 명령입니다. 스타일은 top 명령과 유사하며 어떤 프로세스가 IO 로드를 구체적으로 생성하는지 표시할 수 있습니다. 디스크 I/O 사용량을 모니터링하는 데 사용되는 최고의 도구입니다. PID, 사용자, I/O, 프로세스 및 기타 관련 정보를 포함하여 top과 유사한 UI를 가지고 있습니다.


비대화형 방식으로 사용할 수 있습니다: iotop –bod 간격, 각 프로세스의 I/O를 보려면 pidstat, pidstat –d instat를 사용할 수 있습니다.


공식 계정 리눅스 중국어 커뮤니티 백엔드 검색 후 "private kitchen"이라고 답하시면 깜짝 선물을 받으실 수 있습니다.


▲pidstat--시스템 리소스 모니터링

pidstat는 주로 CPU, 메모리, 장치 IO, 작업 전환, 스레드 등과 같은 전체 또는 특정 프로세스의 시스템 리소스 사용량을 모니터링하는 데 사용됩니다. .

사용법: pidstat –d 간격; pidstat는 CPU 사용량 정보를 계산하는 데에도 사용할 수 있습니다. pidstat –u 간격은 메모리 정보를 계산하는 데 사용됩니다. Pidstat –r 간격.


top

top 명령의 요약 영역에는 시스템 성능 정보의 다섯 가지 측면이 표시됩니다.

1. 로드: 시간, 로그인한 사용자 수, 평균 시스템 로드

2. 프로세스: 실행 중, 절전 모드, 중지, 좀비

3.cpu: 사용자 모드, NICE , 유휴, IO 대기, 인터럽트 등

4. 메모리: 전체, 사용됨, 사용 가능(시스템 관점), 버퍼, 캐시

5. 스왑 파티션: 전체, 사용됨, 사용 가능

작업 영역에는 기본적으로 프로세스 ID, 유효 사용자, 프로세스 우선 순위, NICE 값, 가상 메모리, 프로세스에서 사용하는 물리적 메모리 및 공유 메모리, 프로세스 상태, CPU 사용량, 메모리 사용량, 누적 CPU 시간 및 프로세스 명령이 표시됩니다. 라인 정보.


htop

htop은 Linux 시스템의 대화형 프로세스 뷰어이며 텍스트 모드 애플리케이션(콘솔 또는 X 터미널)에는 ncurses가 필요합니다.
매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

Htop을 사용하면 사용자가 대화형으로 작업하고, 색상 테마를 지원하고, 프로세스 목록을 가로 또는 세로로 스크롤할 수 있으며, 마우스 작업을 지원합니다.

top에 비해 htop은 다음과 같은 장점이 있습니다.

▪ 프로세스 목록을 가로 또는 세로로 스크롤하여 모든 프로세스와 전체 명령줄을 볼 수 있습니다.

▪ 시작 시 최고 속도보다 빠릅니다.

▪ 프로세스 종료 시 프로세스 ID를 입력할 필요가 없습니다.

▪ htop은 마우스 작업을 지원합니다.


▲mpstat
mpstat은 Multiprocessor Statistics의 약자로 실시간 시스템 모니터링 도구입니다. /proc/stat 파일에 저장된 CPU에 대한 일부 통계 정보를 보고합니다. 다중 CPU 시스템에서는 모든 CPU의 평균 상태 정보를 볼 수 있을 뿐만 아니라 특정 CPU의 정보도 볼 수 있습니다. 일반적인 사용법: mpstat –P 모든 간격 시간.


netstat

Netstat은 IP, TCP, UDP, ICMP 프로토콜과 관련된 통계 데이터를 표시하는 데 사용되며 일반적으로 기기의 각 포트의 네트워크 연결을 확인하는 데 사용됩니다. .

▲일반적인 사용법:

netstat –npl은 열려고 하는 포트가 이미 열려 있는지 확인할 수 있습니다.

netstat –rn 라우팅 테이블 정보를 인쇄합니다.

netstat –in 시스템에 대한 인터페이스 정보를 제공하고 각 인터페이스의 MTU, 입력 패킷 수, 입력 오류, 출력 패킷 수, 출력 오류, 충돌 및 현재 출력 대기열 길이를 인쇄합니다.


ps--현재 프로세스의 상태를 표시합니다.

ps에는 매개변수가 너무 많습니다. 일반적으로 사용되는 방법은 ps aux입니다. #hsserver; ef |grep #hundsun

▪ 특정 프로그램을 종료하는 방법: ps aux | grep mysqld | grep -v grep | awk '{print $2}' xargs kill -9

좀비 프로세스: ps –eal | awk '{if ($2 == "Z"){print $4}}' |

프로그램 실행 중에 수신된 시스템 호출 및 신호를 추적하여 프로그램 또는 명령 실행 중에 발생한 비정상적인 상황을 분석하는 데 도움을 줍니다.

예: Linux에서 mysqld가 로드하는 구성 파일을 확인하려면 다음 명령을 실행할 수 있습니다. strace –e stat64 mysqld –print –defaults > /dev/null


uptime

시스템이 총 실행된 시간과 시스템의 평균 로드를 인쇄할 수 있습니다. uptime 명령으로 출력되는 마지막 세 숫자는 1분, 5분, 15분 동안의 시스템 평균 로드를 의미합니다. 각기.


lsof

lsof(열린 파일 나열)는 현재 시스템에서 열려 있는 파일을 나열하는 도구입니다. lsof 도구를 사용하여 시스템 감지 및 문제 해결을 위해 이 목록을 볼 수 있습니다. 일반적인 용도:

파일 시스템 차단 lsof /boot

포트 번호가 사용 중인 프로세스 확인 lsof -i: 3306

사용자 lsof –u 사용자 이름

사용자가 연 파일 보기 lsof –p 4838

프로세스로 열린 파일 보기 lsof –i @192.168.34.128

원격 개방형 네트워크 링크 보기

perf

perf는 Linux 커널과 함께 제공되는 시스템 성능 최적화 도구입니다. 장점은 Linux 커널과의 긴밀한 통합에 있습니다. 커널에 추가된 새로운 기능을 최초로 적용할 수 있으며 이를 통해 핫 기능과 캐시 미스 비율을 볼 수 있어 개발자가 프로그램 성능을 최적화하는 데 도움이 됩니다.


perf, Oprofile 등과 같은 성능 튜닝 도구의 기본 원리는 모니터링되는 개체를 샘플링하는 것입니다. 가장 간단한 경우는 틱 인터럽트를 기반으로 샘플링하는 것입니다. 즉, 샘플링 지점이 내에서 트리거됩니다. 틱 인터럽트. 프로그램의 현재 컨텍스트를 확인하려면 여기를 클릭하십시오. 프로그램이 foo() 함수에서 시간의 90%를 소비한다면 샘플링 지점의 90%는 foo() 함수의 컨텍스트에 속해야 합니다. 행운은 따르기 어렵습니다. 그러나 샘플링 빈도가 충분히 높고 샘플링 시간이 충분히 길다면 위의 추론이 더 신뢰할 수 있을 것이라고 생각합니다. 따라서 틱별 샘플링을 실행하면 프로그램의 어느 부분이 가장 많은 시간을 소모하는지 파악하고 분석에 집중할 수 있습니다.


이 도구에 대해 더 자세히 알고 싶다면 다음을 참조하세요.
http://blog.csdn.net/trochiluses/article/details/10261339


요약: 위의 일반적으로 사용되는 성능 테스트 명령을 결합하고 기사 시작 부분의 성능 분석 도구 다이어그램을 접촉하면 성능 분석 과정에서 어떤 측면의 성능이 어떤 도구(명령)를 사용하는지 처음으로 이해할 수 있습니다.


【일반적으로 사용되는 성능 테스트 도구】

두 번째 부분의 성능 분석 명령 도구에 능숙하고 능숙하며 몇 가지 성능 테스트 도구를 소개하기 전에 몇 가지 성능 테스트 도구를 간략하게 이해하겠습니다.


▪ perf_events: Linux 커널 코드로 출시 및 유지 관리되는 성능 진단 도구로, 커널 커뮤니티에서 유지 관리 및 개발됩니다. Perf는 애플리케이션의 성능 통계 분석뿐만 아니라 성능 통계 및 커널 코드 분석에도 사용할 수 있습니다.

추가 참고자료: http://blog.sina.com.cn/s/blog_98822316010122ex.html.


eBPF 도구: bcc를 사용한 성능 추적 도구인 eBPF 맵은 맞춤형 eBPF 프로그램을 사용한 커널 튜닝에 널리 사용될 수 있으며, 사용자 수준 비동기 코드도 읽을 수 있습니다. 중요한 것은 이 외부 데이터를 사용자 공간에서 관리할 수 있다는 것입니다. 이 k-v 형식 지도 데이터 본문은 생성, 추가, 삭제 및 기타 작업을 위해 사용자 공간에서 bpf 시스템 호출을 호출하여 관리됩니다. 더 보기: http://blog.csdn.net/ljy1988123/article/details/50444693.


perf-tools: perf_events(perf) 및 ftrace를 기반으로 하는 Linux 성능 분석 및 튜닝 도구 세트입니다. Perf-Tools에는 라이브러리 종속성이 거의 없으며 사용하기 쉽습니다. Linux 3.2 이상의 커널 버전을 지원합니다. 추가 정보: https://github.com/brendangregg/perf-tools.


▪ bcc (BPF Compiler Collection): eBPF를 이용한 성능 분석 도구입니다. 몇 가지 유용한 도구와 예제를 포함하여 효율적인 커널 추적 및 조작 프로그램을 만들기 위한 도구 키트입니다. Linux 3.15에 처음 추가된 새로운 기능인 eBPF라고 공식적으로 불리는 확장 BPF(Berkeley Packet Filter)를 활용해 보세요. 다목적에는 Linux 4.1 이상의 BCC가 필요합니다.

추가 참조: https://github.com/iovisor/bcc#tools.


ktap: Linux 스크립트를 위한 새로운 유형의 동적 성능 추적 도구입니다. 사용자가 Linux 커널 역학을 추적할 수 있습니다. ktap은 상호 운용 가능하도록 설계되어 사용자가 운영 통찰력을 조정하고 커널과 애플리케이션의 문제를 해결하고 확장할 수 있습니다. 이는 Linux 및 Solaris DTrace SystemTap과 유사합니다. 추가 참조: https://github.com/ktap/ktap.


Flame 그래프: 성능, 시스템 탭, ktap 시각화를 사용하는 그래픽 소프트웨어로, 가장 자주 사용되는 코드 경로를 빠르고 정확하게 식별할 수 있습니다. github.com/brendangregg/를 사용할 수 있습니다. Flamegraph 개발 소스 코드의 절차적 생성.

추가 참조: http://www.brendangregg.com/flamegraphs.html.

1. Linux 관찰 도구 | Linux 성능 관찰 도구

매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

▪ 먼저 배울 기본 도구는 다음과 같습니다:
uptime, top(htop), mpstat, isstat, vmstat, free, ping, nicstat, dstat.


▪ 고급 명령은 다음과 같습니다:
sar, netstat, pidstat, strace, tcpdump, blktrace, iotop, slabtop, sysctl, /proc.

자세한 명령어 사용법은 http://www.open-open.com/lib/view/open1434589043973.html을 참조하세요. 2. Linux 벤치마킹 도구 | Linux 성능 평가 도구

는 다양한 모듈의 성능 테스트에 해당 도구를 사용할 수 있습니다. 자세한 내용은 아래 첨부 문서를 참조하세요. 매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

3. Linux 튜닝 도구 | Linux 성능 튜닝 도구

는 주로 Linux 커널 소스 코드 계층에서 튜닝을 수행하는 성능 튜닝 도구입니다. 아래 첨부문서를 참고하시면 됩니다.

매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션


4. Linux 관찰 가능성 sar | Linux 성능 관찰 도구

매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션

sar(System Activity Reporter 시스템 활동 보고서)는 현재 LINUX에서 사용할 수 있는 가장 포괄적인 시스템 성능 분석 도구 중 하나입니다. 다양한 측면 파일 읽기 및 쓰기, 시스템 호출 사용량, 디스크 I/O, CPU 효율성, 메모리 사용량, 프로세스 활동 및 IPC 관련 활동을 포함한 시스템 활동을 보고합니다.


sar는 일반적으로 사용됩니다: sar [options] [-A] [-o file] t [n]
여기서:
t는 샘플링 간격, n은 샘플링 횟수입니다. , 기본값은 1입니다.
-o 파일은 명령 결과를 바이너리 형식으로 파일에 저장하는 것을 의미합니다. 여기서 file은 파일 이름입니다.
옵션은 명령줄 옵션입니다

위 내용은 매우 포괄적인 컬렉션 - Linux 성능 분석 도구 요약 컬렉션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Linux中文社区에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제