달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/admin-primer/s1-resource-rhlspec.html

2.5.레드햇 리눅스 스펙 정보

Red Hat Linux comes with a variety of resource monitoring tools. While there are more than those listed here, these tools are representative in terms of functionality. The tools are:

레드햇 리눅스는 다양한 리소스 모니터링 툴을 가지고 있다. 여기 소개하는 것은 보다 잘 알려진 것들이며 이들보다 더 많은 툴들이 존재한다.  

  • free

  • top (그리고 top의 그래픽 버전인 GNOME System Monitor 도 있다.)

  • vmstat

  • The Sysstat suite of resource monitoring tools

2.5.1. free


free 명령어는 시스템 메모리 현황을 보여준다.


Mem: 줄은 물리적인 메모리, Swap:은 스왑 메모리의 현황이다. 그리고 -/+/ buffers/cache:는 현재 시스템 버퍼에서 사용중인 물리적 메모리의 양이다.

 total used free shared buffers cached 
Mem: 255508 240268 15240 0 7592 86188 
-/+ buffers/cache: 146488 109020 
Swap: 530136 26268 503868

free는 기본적으로 그 순간의 메모리 현황을 보여주는 것이기때문에 매우 짧은 주기의 모니터링이나 메모리 관련 장애가 발생한 순간에 빠른 상황판단을 할 때 유용하다. 비록 free -s 옵션을 쓰면 메모리 현황을 반복적으로 보여주기는 하지만 그 변화를 제대로 감지하기는 힘들다.

Tip Tip
 

free -s를 좀 더 유용하게 쓰는 방법은 watch 명령어와 함께 쓰는 것이다. 예를 들어 매 2초마다 메모리 현황을 보려한다면 이렇게 해보라.

watch free

watch 명령어는 2초마다 free 명령어를 실행시킨다. 이렇게 하면 지나간 화면을 스크롤 하지 않아도 시간에 따른 메모리 현황을 좀 더 쉽게 알아볼 수 있다. 그리고 -n 옵션을 써서 화면을 갱신시키고 -d 옵션으로 바뀐 부분만 반전시킬 수도 있다.

watch -n 1 -d free

자세한 부분은 man page를 보면 알 수 있다. watch는 여러 곳에서 다양하게 응용할 수 있으므로 기억하도록 하자.

2.5.2. top

free가 메모리 관련 정보만 표시할 수 있는 반면에, top은 CPU 현황, 프로세스 통계, 메모리 현황같은 것들을  보여준다. 게다가 free와는 다르게 연속으로 갱신된다. watch free 한것처럼....그러나 watch top을 할 필요는 없다.

11:13am up 1 day, 31 min, 5 users, load average: 0.00, 0.05, 0.07 89 processes: 85 sleeping, 3 running, 1 zombie, 0 stopped CPU states: 0.5% user, 0.7% system, 0.0% nice, 98.6% idle Mem: 255508K av, 241204K used, 14304K free, 0K shrd, 16604K buff Swap: 530136K av, 56964K used, 473172K free 64724K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 8532 ed 16 0 1156 1156 912 R 0.5 0.4 0:11 top 1520 ed 15 0 4084 3524 2752 S 0.3 1.3 0:00 gnome-terminal 1481 ed 15 0 3716 3280 2736 R 0.1 1.2 0:01 gnome-terminal 1560 ed 15 0 11216 10M 4256 S 0.1 4.2 0:18 emacs 1 root 15 0 472 432 416 S 0.0 0.1 0:04 init 2 root 15 0 0 0 0 SW 0.0 0.0 0:00 keventd 3 root 15 0 0 0 0 SW 0.0 0.0 0:00 kapmd 4 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0 5 root 15 0 0 0 0 SW 0.0 0.0 0:00 kswapd 6 root 25 0 0 0 0 SW 0.0 0.0 0:00 bdflush 7 root 15 0 0 0 0 SW 0.0 0.0 0:00 kupdated 8 root 25 0 0 0 0 SW 0.0 0.0 0:00 mdrecoveryd 12 root 15 0 0 0 0 SW 0.0 0.0 0:00 kjournald 91 root 16 0 0 0 0 SW 0.0 0.0 0:00 khubd 185 root 15 0 0 0 0 SW 0.0 0.0 0:00 kjournald 186 root 15 0 0 0 0 SW 0.0 0.0 0:00 kjournald 576 root 15 0 712 632 612 S 0.0 0.2 0:00 dhcpcd

화면은 두가지 섹션으로 구분되는데 위쪽은 uptime, 평균 부하량, 프로세스 갯수, CPU 상태, 메모리와 스왑의 현황 통계등을 표시한다. 아래쪽은 top이 실행되고 있는 동안의 정확한 프로세스 레벨의 통계를 표시한다.

Warning Warning
 

top이 보이기는 간단하게 보이지만 사실은 그렇지 않다.  간단한 명령줄을 제공하는데 프로세스의 우선순위를 바꿀 수도 있고 kill 시그널을 날릴 수도 있다. top 실행화면에서 [?]를 누르면 도움말이 나오니 참조하기 바란다. [q]를 치면 빠져나온다.

2.5.2.1. The GNOME System Monitor — top의 그래픽 버전

GUI에 익숙한 유저들은 GNOME System Monitor 를 사용해도 좋을 것이다. top 처럼 시스템 전체 현황,  프로세스 갯수, 메모리와 스왑 현황, 프로세스 레벨의 통계를 보여주는 유틸이다.

그러나 GNOME System Monitor 는 이런 정보들을 그림으로 알기 쉽게 표시해준다. 다음은 GNOME System Monitor 에서 프로세스 리스트를 표시한 것이다.

그림 2-1. The GNOME System Monitor 프로세스 정보 표시

보여지는 각 프로세스들을 선택하고 More Info 를 클릭하면 좀 더 상세한 정보가 표시된다.

CPU, 메모리, 디스크 사용량 등을 알고 싶으면 System Monitor 탭을 선택하면 된다.

2.5.3. vmstat

시스템 성능을 간결한 형태로 보고싶으면 vmstat를 사용한다. 이 툴은 프로세스, 메모리, 스왑, I/O, 시스템, 그리고 CPU 현황을 한줄에 표시해준다.  

 procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 1 0 0 0 524684 155252 338068 0 0 1 6 111 114 10 3 87 

프로세스 관련 필드는

  • r — CPU사용을 기다리는 실행가능 프로세스의 갯수

  • b — 인터럽트가 불가능한 슬립 상태에 있는 프로세스의 갯수

  • w — 스왑아웃됐지만 실행가능상태에 있는 프로세스의 갯수

메모리 관련 필드는

  • swpd — 사용된 가상 메모리의 양

  • free — 가용 메모리의 양

  • buff — 버퍼에 사용된 메모리의 양

  • cache — 페이지 캐쉬로 사용된 메모리의 양

스왑 관련 필드는

  • si — 디스크에서 스왑-인 된 메모리의 양

  • so — 디스크로 스왑-아웃된 메모리의 양

I/O 관련 필드는

  • bi — 블럭 장치로 보내진 블럭들

  • bo— 블럭 장치로부터 받은 블럭들

시스템 관련 필드는

  • in — 초당 인터럽트의 갯수

  • cs — 초당 문맥교환된 갯수

CPU관련 필드는

  • us — CPU가 유저레벨 코드를 실행한 시간의 비율

  • sy — CPU가 시스템 레벨 코드를 실행한 시간의 비율

  • id — 가 대기상태에 있는 시간의 비율

옵션없이 vmstat를 실행하면 단 한줄만이 표시된다. 이 줄은 시스템이 부팅된 시간부터 계산된 평균값이다.

그러나 대부분의 관리자들은 이 데이터는 신경쓰지 않는다. 대신 설정된 시간 간격에 따라 반복적으로 표시되는 통계 데이타를 이용한다. 예를 들어 vmstat 1 은 1초 간격으로 새로운 현황줄을 표시한다. vmstat 1 10 은 1초 간격으로 새로운 현황줄을 10회 표시한다.

경험있는 관리자들은 vmstat 를 리소스와 성능적인 문제를 빨리 판단하려 할 때 사용한다. 그러나 좀처럼 보이지 않는 것을 알아내려 한다면 다른 도구를 같이 사용해야 한다.

2.5.4. Sysstat Suite - 확장 리소스 모니터링 툴

여태까지 소개했던 툴이 매우 짧은 주기의 모니터링엔 도움이 되는 반면, 시스템 리소스 현황의 스냅샷을 제공하지는 못한다. 게다가 그런 간단한 툴로는 시스템의 여러 양상을 모니터링하지 못한다.

그러므로 좀 더 복잡하고 정교한 툴이 필요하게 되었고 Sysstat이 바로 그런 툴이다.

Sysstat contains the following tools related to collecting I/O and CPU statistics:

Sysstat는 다음과 같은 I/O와 CPU관련 정보를 수집하는 툴이다.

iostat

한개 이상의 디스크의 I/O 통계와 CPU 활용도의 개요를 제공한다.

mpstat

좀 더 깊이있는 CPU 통계를 제공한다.

Sysstat는 또한 시스템 리소스 활용 데이터를 수집하고 그 데이터에 기초하여 매일 리포트를 생성한다. 그 툴들은

sadc

시스템 활동 데이타 수집프로그램으로 알려져 있다. sadc는 일정한 형태의 시스템 리소스 활용데이타를 수집하고 파일로 저장한다.

sar

sadc로 생성된 데이터 파일로부터 리포트를 생성한다. sar는 데이터의 집중적인 분석을 위해 대화형으로 리포트를 화면에 표시하거나 파일로 저장할 수 있다.

2.5.4.1. The iostat command


iostat 명령어는 가장 기본적인 CPU와 디스크 I/O 통계를 제공하는 툴이다.

Linux 2.4.18-18.8.0 (pigdog.example.com) 12/11/2002 avg-cpu: %user %nice %sys %idle 6.11 2.56 2.15 89.18 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn dev3-0 1.68 15.69 22.42 31175836 44543290 

첫번째 줄에서는 커널 버전, 호스트이름, 현재 날짜를 표시하고 그 다음줄은 부팅 시점부터 시스템의 평균 CPU 현황을 개략적으로 표시한다. CPU 현황 리포트는 다음과 같은 비율을 포함한다.

  • 유저 모드로 사용된 시간 (어플리케이션 실행등)

  • nice로 우선순위를 변경한 프로세스가 유저모드에서 사용된 시간

  • 커널 모드에서 사용된 시간

  • 대기시간

CPU 현황 다음엔 장치 현황 리포트다. 이것은 한 줄당 각각의 개별 디스크 현황을 나타내며 다음과 같은 정보를 포함하고 있다.

  • 장치 명세를 나타낸다. dev<major-number>-sequence-number 와 같이 표시하며 <major-number>는 장치의 메이저 넘버, <sequence-number> 는 장치의 0에서 시작하는 순차(sequence)시퀀스 넘버를 나타낸다.

  • 초당 전송률 (또는 I/O 수행율)

  • 초당 읽은 512바이트 블럭의 갯수

  • 초당 쓴 512바이트 블럭의 갯수

  • 512바이트 블럭의 총 읽은 갯수

  • 512바이트 블럭의 총 쓴 갯수

이것은 단지 iostat가 보여줄 수 있는 정보의 일부분일 뿐이다. 자세한 사항은 man page를 참조하라.

2.5.4.2. The mpstat command

mpstat 명령어는 옵션없이 수행하면 iostat의 정보와 차이가 없다.

Linux 2.4.18-14smp (pigdog.example.com) 12/11/2002 07:09:26 PM CPU %user %nice %system %idle intr/s 07:09:26 PM all 6.40 5.84 3.29 84.47 542.47 

CPU가 핸들링하고 있는 초당 인터럽트 갯수를 보여주는 컬럼을 제외하면 정말 차이가 없다. 하지만 -P ALL 옵션을 사용해보면 상황은 틀려진다.

Linux 2.4.18-14smp (pigdog.example.com) 12/11/2002 07:13:03 PM CPU %user %nice %system %idle intr/s 07:13:03 PM all 6.40 5.84 3.29 84.47 542.47 07:13:03 PM 0 6.36 5.80 3.29 84.54 542.47 07:13:03 PM 1 6.43 5.87 3.29 84.40 542.47 

다중 프로세서 시스템에서 mpstat는 각각의 CPU에 대한 현황을 보여준다. CPU가 얼마나 효율적으로 사용되고있는 지 알 수 있다.

2.5.4.3. The sadc command

위에 언급했듯이, sadc 명령어는 시스템 현황 데이터를 수집하고 추후 분석을 위해 파일로 저장한다. 기본적으로 데이터는 /var/log/sa/ 디렉토리에 쌓인다. 이 파일들은 sa<dd> 의 형식으로 저장되며 <dd> 는 날짜를 나타낸다.

sadc는 일반적으로 sa1 스크립트로 실행한다. 이 스크립트는 /etc/crond.d에 위치한 sysstat 파일을 참조하여 cron에 의해 주기적으로 수행된다. sa1 스크립트는 매초단위로 sadc를 실행한다. 기본적으로 cron은 10분마다 sa1 스크립트를 실행하며 /var/log/sa/sa<dd> 파일에 일정한 시간간격으로 수집된 데이터를 저장한다.

2.5.4.4. The sar command

sar 명령어는 sadc가 수집한 데이터를 바탕으로 시스템 현황 리포트를 생성한다. 레드햇 리눅스에 설정된 바에 따르면 sar는 sadc가 수집한 데이터를 자동으로 리포트로 생성한다. 이 리포트는 sar<dd> 의 형식으로   /var/log/sa에 저장되며 <dd>는 날짜를 나타낸다.

sar는 일반적으로 sa2 스크립트에 의해 수행된다. 이 스크립트는 sysstat파일을 참조하여 cron에 의해 주기적으로 수행된다. 보통 cron은 매일 23시 53분에 sa2를 수행하며 그 날의 데이터에 대한 리포트를 생성한다.

2.5.4.4.1. 리포트 파악하기

sar 리포트의 표시형식은 여러가지 섹션으로 구성된 레드햇 리눅스의 설정에 따른다. 각 섹션은 데이터가 수집된 날짜 순으로 정렬되며 일정한 형식의 데이터를 담고있다. sadc가 매 10분 마다 초단위로 수행되도록 설정되었기 때문에 기본적인 sar 리포트는 00:00 부터 23:59까지 10분 마다 증가한다. [2]

리포트의 각 섹션은 섹션에 포함된 데이터의 개요를 먼저 설명한다. 머릿말은 일정한 간격으로 반복되어 리포팅을 거듭할 수록 데이터 해석을 더 쉽게 할 수 있도록 한다. 각 섹션은 그 섹션의 평균 데이터를 표시하며 끝맺음을 한다.

00:30부터 23:40까지 수집된 데이터의 sar 리포트 샘플이다.

00:00:01 CPU %user %nice %system %idle 00:10:00 all 6.39 1.96 0.66 90.98 00:20:01 all 1.61 3.16 1.09 94.14 … 23:50:01 all 44.07 0.02 0.77 55.14 Average: all 5.80 4.99 2.87 86.34 

이 섹션에선 CPU 현황이 표시되고있다. 이것은 iostat의 결과와 매와 흡사하다.

듀얼 프로세서 시스템에서 수집된 CPU 현황에서 생성된 섹션에서 보듯이 다른 섹션은 매 시간 단순한 한 줄 이상의 데이터 가치를 가지고 있다.

00:00:01 CPU %user %nice %system %idle 00:10:00 0 4.19 1.75 0.70 93.37 00:10:00 1 8.59 2.18 0.63 88.60 00:20:01 0 1.87 3.21 1.14 93.78 00:20:01 1 1.35 3.12 1.04 94.49 … 23:50:01 0 42.84 0.03 0.80 56.33 23:50:01 1 45.29 0.01 0.74 53.95 Average: 0 6.00 5.01 2.74 86.25 Average: 1 5.61 4.97 2.99 86.43 

레드햇 리눅스의 sar 설정은 17가지의 서로 다른 데이터를 생성하도록 되어있다. 자세한 사항은 man 페이지를 참조하기 바란다.

Notes

[1]

장치의 메이져 넘버는 ls -l 명령으로 확인할 수 있다. 예를 들어 ls -l /dev/hda를 하면,

brw-rw---- 1 root disk 3, 0 Aug 30 19:31 /dev/hda 

여기서 메이져 넘버는 3이며 파일의 그룹과 마이너 넘버 사이에 표시된다.

[2]

시스템 부하가 변하기 때문에 데이터가 수집된 실제 시간은 1-2초 정도 틀릴 수 있다.

Posted by tornado
|