리눅스 서버에서 메모리 사용량과로드 평균을 이해하는 방법


57

128GB의 메모리와 24 개의 코어를 가진 Linux 서버를 사용하고 있습니다. 나는 얼마나 많이 사용하는지 확인하기 위해 top을 사용합니다. 출력은 게시물 끝에 붙여 넣습니다. 두 가지 질문이 있습니다.

(1) 실행중인 각 프로세스가 매우 작은 백분율의 메모리를 차지한다는 것을 알았습니다 (% MEM은 0.2 % 이하, 대부분 0.0 %). 그러나 네 번째 출력 라인에서와 같이 총 메모리가 거의 어떻게 사용되는지 ( "Mem : 총 130766620k, 130161072k 사용, 605548k 무료, 919300k 버퍼")? 모든 프로세스에서 사용 된 메모리 백분율의 합은 거의 100 %에 미치지 못할 것 같습니다.

(2) 첫 번째 줄의 부하 평균을 이해하는 방법 ( "로드 평균 : 14.04, 14.02, 14.00")?

감사합니다.

편집하다:

감사!

또한 한 번에 현재로드를 이해하지 않고 서버를 크래킹 한 사람이 되었기 때문에 사용 된 메모리 백분율을 기준으로 대략적인 숫자를 듣고 서버가 많이로드되었는지 확인합니다.

스왑은 메모리와 거의 같은 것으로 간주됩니까? 예를 들어, 메모리와 스왑의 크기가 거의 같은 경우, 메모리가 거의 소진되었지만 스왑이 여전히 사용 가능한 경우, 사용한 메모리 비율 + 스왑이 여전히 높지 않은 것으로보고 다른 것을 실행할 수 있습니다 프로세스?

CPU 또는 메모리 (또는 메모리 + 스왑) 사용을 어떻게 고려 하시겠습니까? 둘 중 하나가 너무 높거나 둘 다 도달하면 걱정됩니까?

상단 출력 :

$ 최고

 
상위-12:45:33 최대 19 일, 23:11, 18 명의 사용자,로드 평균 : 14.04, 14.02, 14.00
작업 : 총 484 개, 12 개 실행, 472 개 잠자기, 0 개 중지, 0 좀비
CPU : 36.7 % us, 19.7 % sy, 0.0 % ni, 43.6 % id, 0.0 % wa, 0.0 % hi, 0.0 % si, 0.0 % st
Mem : 총 130766620k, 130161072k 사용, 605548k 무료, 919300k 버퍼
스왑 : 총 63111312k, 500556k 사용, 62610756k 무료, 124437752k 캐시

  PID 사용자 PR NI VIRT RES SHR S % CPU % MEM TIME + 명령
 6529 sanchez 18-2 1075m 219m 13m S 100 0.2 13760 : 23 MATLAB
13210 timothy 18-2 48336 37m 1216 R 100 0.0 3 : 56.75 부조리
13888 timothy 18-2 48336 37m 1204 R 100 0.0 2 : 04.89 부조리
14542 timothy 18-2 48336 37m 1196 R 100 0.0 1 : 08.34 부조리
14544 timothy 18-2 2888 2076400 R 100 0.0 1 : 06.14 수집 데이터
 6183 sanchez 18-2 1133m 195m 13m S 100 0.2 13676 : 04 MATLAB
 6795 sanchez 18-2 1079m 210m 13m S 100 0.2 13734 : 26 MATLAB
10178 timothy 18-2 48336 37m 1204 R 100 0.0 11 : 33.93 부조리 
12438 timothy 18-2 48336 37m 1216 R 100 0.0 5 : 38.17 부조리
13661 timothy 18-2 48336 37m 1216 R 100 0.0 2 : 44.13 부조리
14098 timothy 18-2 48336 37m 1204 R 100 0.0 1 : 58.31 부조리
14335 티모시 18-2 48336 37m 1196 R 100 0.0 1 : 08.93 부조리
14765 티모시 18-2 48336 37m 1196 R 99 0.0 0 : 32.57 부조리
13445 timothy 18-2 48336 37m 1216 R 99 0.0 3 : 01.37 부조리
28990 루트 20,000 S 2 0.0 65 : 50.21 pdflush
12141 tim 18-2 19380 16601024 R 1 0.0 0 : 04.04 위로
 1240 루트 15-5 000 S 0 0.0 16 : 07.11 kjournald
 9019 근 2096m 4460 2616 S 0 0.0 82 : 19.51 kdm_greet
    1 근 20 4028728 592 S 0 0.0 0 : 03.11 init
    2 루트 15-5 000 S 0 0.0 0 : 00.00 k 스레드
    3 루트 RT-5500 S 0 0.0 0 : 01.01 마이그레이션 / 0
    4 근 15 -500 S0 0.0 0 : 08.13 ksoftirqd / 0
    5 루트 RT -500 S0 0.0 0 : 00.00 워치 독 / 0
    6 루트 RT-5500 S 0 0.0 17 : 27.31 마이그레이션 / 1
    7 근 15 -50000 S 0 0.0 0 : 01.21 ksoftirqd / 1
    8 루트 RT -500 S 0 0.0 0 : 00.00 워치 독 / 1
    9 루트 RT-5500 S 0 0.0 10 : 02.56 마이그레이션 / 2
   10 근 15 -50000 S 0 0.0 0 : 00.34 ksoftirqd / 2
   11 루트 RT -500 S0 0.0 0 : 00.00 워치 독 / 2
   12 루트 RT-5500 S 0 0.0 4 : 29.53 마이그레이션 / 3
   13 근 15 -500 000 S 0 0.0 0 : 00.34 ksoftirqd / 3

2
메모리에 대한 좋은 대답은 이것을 참조하십시오. serverfault.com/questions/38065/#38074
Zoredache

그리고이 대답 은 하중 평균에 대한 간단한 요약 또는 자세한 내용은 오랫동안 읽었습니다 .
Nickolay

답변:


56

(1) 실행중인 각 프로세스가 매우 작은 백분율의 메모리를 차지한다는 것을 알았습니다 (% MEM은 0.2 % 이하, 대부분 0.0 %). 그러나 네 번째 출력 라인에서와 같이 총 메모리가 거의 어떻게 사용되는지 ( "Mem : 총 130766620k, 130161072k 사용, 605548k 무료, 919300k 버퍼")? 모든 프로세스에서 사용 된 메모리 백분율의 합은 거의 100 %에 미치지 못할 것 같습니다.

현재 사용중인 메모리 양을 확인하려면을 실행하십시오 free -m. 다음과 같은 출력을 제공합니다.

             캐시 된 총 사용 가능한 공유 버퍼
멤 : 2012 1923 88 0 91515
-/ + 버퍼 / 캐시 : 1316 695
스왑 : 3153256 2896

상단 행 '사용'(1923) 값은 거의 항상 상단 행 mem 값 (2012)과 거의 일치합니다. 리눅스는 여분의 메모리를 사용하여 디스크 블록을 캐시하는 것을 좋아하기 때문에 (515).

사용 된 핵심 수치는 버퍼 / 캐시 행 사용 값 (1316)입니다. 이것은 응용 프로그램이 현재 사용중인 공간의 양입니다. 최상의 성능을 위해서는이 숫자가 총 (2012) 메모리보다 작아야합니다. 메모리 부족 오류를 방지하려면 총 메모리 (2012) 및 스왑 공간 (3153)보다 작아야합니다.

사용 가능한 메모리 양을 빨리 보려면 버퍼 / 캐시 행 여유 값 (695)을보십시오. 총 메모리 (2012)-실제 사용 된 메모리 (1316)입니다. (2012-1316 = 696, 695가 아니라 반올림 문제 일 것입니다)

(2) 첫 번째 줄의 부하 평균을 이해하는 방법 ( "로드 평균 : 14.04, 14.02, 14.00")?

로드 평균에 대한이 기사는 훌륭한 트래픽 비유를 사용하며 지금까지 내가 찾은 최고의 것입니다 : Linux CPU로드 이해-언제 걱정해야합니까? . 사람들이 지적한대로 귀하의 경우 :

다중 프로세서 시스템에서로드는 사용 가능한 프로세서 코어 수에 상대적입니다. "100 % 사용률"표시는 단일 코어 시스템에서 1.00, 이중 코어에서 2.00, 쿼드 코어에서 4.00입니다.

따라서로드 평균 14.00 및 24 코어로 서버에 과부하가 걸리지 않습니다.


17

Linux를 포함한 유닉스 계열 시스템은 사용 가능한 RAM을 가장 효율적으로 사용할 수 있도록 설계되었습니다. 매우 일반적인 용어로, 각 MB의 RAM에 3 가지 상태가 있습니다.

  1. 비어 있는
  2. 프로세스에서 사용
  3. 버퍼에 사용

세 번째 상태는 스크래치 공간으로 만 사용되며 필요할 때마다 다시 할당하기위한 것입니다. 즉 프로그램에 사용 가능한 총 메모리는 실제로 Free + UsedforBuffers입니다. 따라서 특정 프로세스에 할당 된 버퍼 할당 공간이 실제로 표시되지 않습니다.

로드 평균 질문은 쉽게 잘못 해석 될 수 있으므로 조금 더 흥미 롭습니다. 전체 기사는이 linuxjournal 기사를 참조하십시오 . 가장 좋은 요약은 기사에서 직접 인용 한 것입니다.

로드 평균 계산은 Linux 실행 대기열에서 실행 중 또는 중단 불가능으로 표시된 프로세스의 평균 이동으로 생각하는 것이 가장 좋습니다.

즉, 평균로드 수를 (실행중인 프로세스 수) + (IO에서 대기중인 프로세스 수)로 생각할 수 있습니다. 주어진 시간에 $ CORE 수의 프로세스를 실행할 수 있다는 것을 명심하십시오. 나는 14의 평균로드가 상당히 낮다고 말합니다.


감사! 로드가 많고 새 프로세스를 실행하지 않는 것으로 간주되는 메모리 (또는 메모리 + 스왑)의 사용 된 백분율은 얼마입니까? 메모리 또는 메모리 + 스왑을 모두 보십니까? 사용 된 스왑이 실제로 사용 된 스왑 크기의 맨 위에 표시됩니까? CPU로드 평균과 관련하여 "로드 평균 / 코어 번호"로 실제로드를 측정합니까? 서버가 많이로드되었다고 생각하십니까? 감사합니다.
Tim

2
로드는 단지 지표 일뿐입니다. 일반적으로 코어보다 큰로드는 나쁜 것입니다. 일반적으로 사용되는 메모리 비율이 높으면 좋지 않습니다. '이 정도면 괜찮습니다'라고 말할 수있는 이진 값이 아닙니다. RAM이 부족하면 더 많은 프로세스를 실행할 수 없습니다. 부족하지 않으면 충분합니다. 상황의 세부 사항에 따라 크게 다릅니다.
Cian

4

로부터 sar매뉴얼 페이지

       로드 평균은 실행 가능한 평균 수 또는 
       실행중인 작업 (R 상태) 및 무정전 작업 수
       지정된 간격 동안 절전 (D 상태).

로부터 uptime매뉴얼 페이지

       시스템로드 평균은 평균 프로세스 수입니다.
       실행 가능하거나 중단 불가능한 상태입니다. 실행 가능한 상태의 프로세스
       CPU를 사용 중이거나 CPU 사용을 기다리는 중입니다. Unin‐의 프로세스
       terruptable state는 디스크 대기와 같은 일부 I / O 액세스를 기다리고 있습니다.
       평균은 세 시간 간격에 걸쳐 취해집니다. 평균로드
       시스템의 CPU 수에 대해 정규화되지 않으므로로드 평균
       1 세는 단일 CPU 시스템이 4 일 동안 항상로드됨을 의미합니다.
       CPU 시스템 시간의 75 %가 유휴 상태임을 의미합니다.

3
  1. 리눅스는 얼마 top전부터 기본적으로 쓸모없는 방식으로 메모리를 관리해 왔으며 , 일반적으로 사용자 프로세스에 필요하지 않을 때 대부분의 머신 메모리를 다양한 용도로 할당합니다.
  2. 로드 평균은 실행 중이거나 실행 대기중인 평균 프로세스 수입니다. 일반적으로 시스템 대기 시간 / 응답 성과 강한 음의 상관 관계를 가지므로 가능한 한 낮게 원합니다. 그러나 각 CPU가 특정 시점에 무언가를 실행할 수 있기 때문에 14에서 꽤 잘하는 것 같습니다.

감사! 1과 관련하여 일부 프로세스가 맨 위에 나타나지 않지만 많은 메모리를 사용하고 있음을 의미합니까? 또는 메모리에 대한 네 번째 출력 줄 ( "Mem : 총 130766620k, 사용 된 130161072k, 605548k 사용 가능, 919300k 버퍼")이 오해의 소지가있는 경우 상단 및 제 경우에 표시된 모든 프로세스에서 사용한 메모리 백분율의 합계를 확인해야합니다. 새로운 메모리 소비 프로세스를 안전하게 실행할 수 있습니까?
Tim

2
다른 답변에서 지적했듯이로드 평균은 프로세서 수와 비교해야하므로 14 코어는 24 코어 시스템에서 그다지 많지 않습니다. 단일 코어 시스템에서는 14 / 24 = 0.58과 비슷합니다.
David Z

@ 팀 : 나는 후자를 의미합니다.
혼돈

0

로드 평균은 좋은 것입니다. 기본적으로 100 % 활용률 이상으로 발생하는 상황을 이해할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.