Linux 로드 평균 로드 문제에 대한 자세한 설명

不言
풀어 주다: 2019-03-12 17:24:10
앞으로
2804명이 탐색했습니다.

이 기사는 Linux 로드 평균 로드 문제에 대한 자세한 설명을 제공합니다. 이는 특정 참조 값을 가지고 있으므로 도움이 될 수 있습니다.

한 인터뷰에서 면접관이 질문을 했는데, CPU 사용량은 높지 않은데, 로드(평균 로드)가 매우 높다는 문제를 어떻게 찾나요?

저는 당시 로드의 의미를 이해하지 못했습니다. 면접관은 이 지표가 중단 없는 상태의 더 많은 프로세스를 반영한다고 설명했습니다. 과거 백엔드 개발 경험을 바탕으로 시스템에 io 차단이 더 있을 수 있다고 답변했는데, 이는 주로 네트워크 io 문제에서 발생합니다. tcp 연결에 time_wait 상태가 많이 있는지 확인하려면 netstat -tnp 명령을 사용하세요. ..

내 대답은 매우 일방적이라는 것을 알고 있습니다. 나중에 검토하고 메모하세요.

로드 평균이란 무엇입니까

Linux에 익숙한 사람들은 top uptime 명령을 사용하여 로드 평균 표시기를 볼 수 있다는 것을 알고 있습니다.

man uptime을 사용하여 로드 평균을 확인하세요. 설명:

시스템 로드 평균은 실행 가능 또는 중단 불가능 상태에 있는 프로세스의 평균 수입니다. 실행 가능 상태의 프로세스는 CPU를 사용 중이거나 CPU 사용을 기다리고 있습니다. 중단 불가능한 상태의 프로세스는 일부 I/O 액세스를 기다리고 있습니다(예: 디스크 대기). 평균은 세 가지 시간 간격에 대해 계산됩니다. 로드 평균은 시스템의 CPU 수에 대해 정규화되지 않으므로 로드 평균 1은 의미합니다. 단일 CPU 시스템은 항상 로드되지만 4 CPU 시스템에서는 75%의 시간 동안 유휴 상태였습니다.

핵심 사항을 이해하세요. 평균 로드는 단위 시간 내에 시스템이 실행 가능한 상태임을 의미합니다. 상태 및 중단할 수 없는 상태 상태에 있는 평균 프로세스 수로, 평균 활성 프로세스 수라고 합니다. CPU 사용량과 직접적인 관련이 없다는 점은 주목할 가치가 있습니다.

ps aux 명령을 사용하여 프로세스 상태를 확인하세요.

R 상태, 실행 가능 상태(실행 중/실행 가능) CPU가 사용 중이거나 CPU를 기다리는 프로세스의 D 상태인 무정전 상태(Uninterruptitle Sleep, 디스크 절전이라고도 함)는 커널 상태의 핵심 프로세스에 있는 프로세스로 중단할 수 없습니다.

왜 D 상태를 중단할 수 없나요? 예를 들어 시스템은 데이터의 일관성을 보장하기 위해 디스크보다 먼저 다른 프로세스나 인터럽트에 의해 중단될 수 없습니다. 장치가 데이터를 반환하는데, 중단되면 디스크 데이터와 프로세스 데이터 사이에 불일치가 발생하기 쉽습니다. 따라서 무정전(D) 상태는 프로세스 및 하드웨어 장치에 대한 시스템의 보호 메커니즘입니다.

평균 활성 프로세스 수는 엄밀히 말하면 활성 프로세스 수의 지수적 감소 평균입니다(특정 수량의 감소율은 해당 값에 비례함). 일반적으로 단위 시간당 활성 프로세스 수로 이해될 수 있습니다.

CPU 사용률 및 로드 밸런싱

CPU 관점에서 로드 평균은 단위 시간당 CPU를 점유하는 프로세스 수만 반영하며 CPU 사용률은 프로세스 수와 직접적인 관련이 없습니다. top vmstat 명령을 사용하면 됩니다. CPU 사용률을 보면 다음과 같은 표시가 있습니다:

%us: 사용자 공간 프로그램의 CPU 사용량을 나타냅니다(nice를 통해 예약되지 않음). %sy: 시스템 공간, 주로 커널 프로그램의 CPU 사용량을 나타냅니다. %ni: 사용자 공간에서 nice를 통해 예약된 프로그램의 CPU 사용량을 나타냅니다. %id: 유휴 CPU %wa: 실행 시 CPU가 io를 기다리는 시간 %hi: CPU가 처리한 하드 인터럽트 수 %si: CPU가 처리한 소프트 인터럽트 수 %st: 가상 CPU가 훔친 CPU machine

합리적인 평균 부하를 측정하는 방법

일반적으로 부하 평균이 CPU 수보다 낮으면 기계 성능이 서비스 요구 사항을 충족하는 것입니다. 부하 평균은 CPU 수를 직접 초과해도 상관 없습니다. CPU 사용률을 나타내며 더 많은 IO 차단으로 인해 발생할 수 있습니다. 로드 평균이 CPU 수의 70%보다 높을 경우 프로세스의 응답 속도가 느려져 서비스의 정상적인 기능에 영향을 줄 수 있습니다.

역사적 변화의 관점에서

일반적으로 최고 가동 시간은 1분, 5분, 15분 세 가지 시점의 부하 평균 지표를 제공합니다. 이는 최근 시스템의 상태 변화 추세를 반영합니다. 실제 생산 환경에서는 장기적인 모니터링 기록을 만들어야 합니다. 예를 들어 평균 부하가 CPU 부하의 2배인 등 비정상적인 수치 변화가 있는 경우 문제를 분석하고 조사해야 합니다.

균형 로드와 CPU 사용률의 두 지표 간의 차이점을 종합적으로 분석하면 다음과 같은 가능한 상황이 결합됩니다.

로드 평균이 높거나, CPU 사용량이 높거나, CPU 집약적인 프로세스(스레드)가 실행 중임) 또는 CPU를 기다리는 프로세스(스레드)가 많습니다. 로드 평균은 높고 CPU 사용량은 낮습니다. IO 집약적인 프로세스가 실행 중인 경우 일반 로드 평균은 낮고 CPU는 낮습니다. 존재하지 않습니다

시뮬레이션 사례 및 도구

균형 부하 및 CPU 사용률이라는 두 지표를 서로 다르게 조합한 사례를 분석하고 지표 변경의 원인을 찾을 수 있는 방법은 무엇입니까?

다음 환경은 Linux Arch 4.19/4 CPU/8G 메모리

도구 목록

스트레스 시스템 스트레스 테스트 도구

sysstat 성능 분석 도구 패키지입니다.

mpstat 멀티코어 CPU 분석 성능 도구, mp는 멀티 프로세서(multi-processor) pidstat 프로세스 성능 분석 도구, pid는 프로세스 ID를 의미합니다. 프로세스의 CPU, 메모리, I/O 및 컨텍스트 전환 표시기를 보는 데 사용됩니다

# 模拟一个进程, 对 cpu 使用率 100%,限时 600s
stress --cpu 1 --timeout 600
로그인 후 복사

IO 집중 프로세스

stress -i 옵션 , sync()에서 회전하는 N 작업자 생성()

# 模拟一个进程不停的执行 sync
stress -i 1 --timeout 600
로그인 후 복사
다수의 프로세스 시나리오
# 模拟16个进程, 对 cpu 使用率 100%,限时 600s
stress --cpu 16 --timeout 600
로그인 후 복사
# 🎜🎜#

Tool Indicators

mpstat -P ALL 5 모두 모니터링 CPU를 사용하고 5초마다 데이터 세트를 출력합니다. %usr 사용량, %iowait IO 차단 시간 표시기를 통해 CPU 집약적인지 pidstat -u 5 1 통계 간격 5를 확인할 수 있습니다. 초, CPU를 사용한 프로세스의 데이터, %usr 사용량, %wait CPU 사용 대기 시간 표시에 주의하세요. 이를 통해 프로세스(스레드)가 너무 많은지 확인할 수 있습니다

# 🎜🎜#

위 내용은 Linux 로드 평균 로드 문제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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