2.4. 무엇을 모니터링할것인가?

앞서 설명했듯이, 모든 시스템에는 CPU 파워, 대역폭, 메모리 및 스토리지와 같은 자원이 존재합니다. 처음 보기엔 이 4가지 자원만 모니터링하면 된다고 여기실 수도 있습니다.

천만에요. 모니터링이란 그렇게 간단하지 않습니다. 예를 들어서 디스크 드라이브를 생각해보십시오. 디스크 드라이브 성능을 확인하기 위해서는 어떠한 사항을 살피시겠습니까?

  • 얼마나 많은 여유 공간이 남아있는지?

  • 일초당 평균적으로 얼마나 자주 입출력 작업을 실행하는지?

  • 각 입출력 작업을 완료하는데 평균적으로 시간이 얼마나 걸리는지?

  • 얼마나 많은 읽기/쓰기 입출력 작업이 진행되었는지?

  • 각 입출력 작업에서 평균적으로 읽기/쓰기된 데이터의 양은 얼마나되는지?

지금까지 질문한 내용은 극히 일부에 불과하며, 디스크 드라이브의 성능을 연구하기 위해서는 보다 많은 방법을 사용 가능합니다. 여기서 중요한 것은 각 자원마다 다양한 유형의 데이터가 존재한다는 사실을 꼭 염두하시기 바랍니다.

다음 부분에서는 각 주요 자원 유형에 따른 유용한 자원 정보를 설명하겠습니다.

2.4.1. CPU 파워 모니터링

기본적으로 CPU 파워를 모니터링하는 작업은 CPU 이용률이 100 퍼센트에 도달했는지 확인하는 작업 보다 훨씬 어려울 수 있습니다. 만일 CPU 이용률이 100 퍼센트 이하로 계속 유지된다면, 시스템이 어떠한 작업을 운영하든지에 상관없이 더 많은 작업을 실행할 수 있는 추가 프로세싱 파워가 남아있습니다.

그러나 한번도 CPU 이용률이 100 퍼센트에 이르지 않는 경우는 거의 드물다고 할 수 있습니다. CPU 이용률이 100 퍼센트에 이르게되면 CPU 이용률 데이터를 보다 상세하게 살피어, 대부분의 프로세싱 파워가 어디에 소모되고 있는지 찾아내어야 합니다. 다음은 자주 사용되는 CPU 이용률 통계에 대한 설명입니다:

사용자 대 시스템 (User Versus System)

사용자 수준 프로세싱을 실행하는데 걸린 시간과 시스템 수준 프로세싱에 걸린 시간을 퍼센트 단위로 비교함으로서 시스템 작업 부하가 주로 어플리케이션을 실행하는데서 비롯되었는지 또는 운영 체제 작업 부하로 인한것인지를 알아내는데 도움이 됩니다. 사용자 수준 퍼센트가 높은 (사용자가 성능에 만족하지 못하는 경우 예외) 경우는 바람직하다고 할 수 있으며, 반면 시스템 수준 퍼센트가 높게 나타나는 경우에는 문제가 있으니 보다 깊은 조사가 필요합니다.

문맥 전환 (Context Switches)

현재 수행중이던 프로세스를 멈추고 CPU를 다른 프로세스에 넘겨줄 때, 이를 문맥 전환(context switch)이라 합니다. 문맥 전환이 실행될 때마다 운영 체제는 CPU를 제어해야하므로, 과도한 문맥 전환 작업은 시스템 수준 CPU 소모를 높이게됩니다.

인터럽트 (Interrupts)

인터럽트란 이름에서 알 수 있듯이 인터럽트란 CPU에 의해 수행 중이던 프로세싱이 갑자기 변경되는 상황을 말합니다. 인터럽트는 주로 하드웨어 활동 (예, 입출력 장치가 입출력 작업을 완료함)이나 소프트웨어 (예, 소프트웨어가 제어 어플리케이션 프로세싱을 중간에 인터럽트함)에 의해 발생합니다. 인터럽트는 시스템 수준에서 수행되어야만 하므로 인터럽트 비율이 높아질수록 시스템 수준 CPU 사용률도 높아지게 됩니다.

실행 가능 프로세스 (Runnable Processes)

프로세스는 여러가지 상태로 나타납니다. 예를 들자면:

  • 입출력 작업이 완료되기를 대기 중인 상태

  • 메모리 관리 서브시스템이 페이지 폴트를 처리하기를 기다리는 상태

이러한 상태의 프로세스는 CPU가 필요하지 않습니다.

그러나 언젠가는 프로세스 상태가 실행 가능한 상태로 변경됩니다. 실행 가능 프로세스란 이름 그대로 CPU 시간을 할당받는대로 작업을 시작 가능한 프로세스란 의미입니다. 그러나 동시에 한개 이상의 프로세스가 실행 가능해진다면, 모든 실행 가능 프로세스 중 하나의 프로세스[1]를 제외하고는 CPU를 이용할 수 있는 차례를 기다려야 합니다. 실행 가능한 프로세스의 수를 모니터링함으로서 CPU가 얼마나 바쁘게 실행중인지 확인 가능합니다.

또한 성능을 측정하기 위해서는 운영 체제가 처리하는 여러 다른 서비스가 CPU 이용률에 미치는 영향도 확인하셔야 합니다. 메모리 관리, 입출력 처리 등이 여기에 포함됩니다. 시스템 성능 모니터링 과정에서 이러한 통계 정보를 살핌으로서 서로 다른 영역의 정보도 밝혀낼 수 있습니다. 즉 CPU 이용률 통계를 모니터링하면서 입출력 서브시스템의 문제도 발견할 가능성이 있으며, 또는 메모리 이용률 통계 자료를 보고 어플리케이션 설계 결함을 알아낼 수도 있습니다.

따라서 시스템 성능 모니터링시에는 한가지 통계 자료만 따로 살피는 것이 불가능합니다. 전체적인 통계를 조사해야만 시스템 성능에 대한 의미있는 정보를 알아낼 수가 있습니다.

2.4.2. 대역폭 모니터링

대역폭 모니터링은 이 장에서 설명된 다른 자원 모니터링 보다 어렵습니다. 그 이유는 성능 통계 자료는 장치를 기반으로 나타나지만, 대역폭이 중요하게 사용되는 위치는 장치를 연결하는 버스이기 때문입니다. 한개 이상의 장치가 한 버스를 공유할 경우, 각 장치마다 통계 자료는 적절히 나타나지만, 여러 장치가 버스에 부과하는 추가 실제 작업 부하는 통계 자료 보다 훨씬 높습니다.

대역폭 모니터링이 힘든 또 다른 이유는 해당 장치에 대한 통계 자료를 얻지 못할 경우도 있기 때문입니다. 특히 시스템 확장 버스나 데이터패스(datapaths)[2]의 경우 더욱 그러합니다. 비록 100 퍼센트 정확한 대역폭 관련 정보를 얻는 것은 항상 쉽지만은 않지만, 종종 관련 통계 자료를 함께 이용하여 어느정도 분석이 가능할 만한 충분한 정보를 얻을 수도 있습니다.

자주 사용되는 대역폭 관련 통계 정보의 예:

받아온/내보낸 바이트수

한개 이상의 버스 — 네트워크의 활용량을 보여주는 네트워크 인터페이스 통계 자료.

인터페이스 갯수와 속도

이러한 네트워크 관련 통계 자료는 과도한 충돌(collision)이 일어나는지, 송수신 오류가 발생하는지 등의 정보를 보여줍니다. 이러한 통계를 이용하여 (특히 네트워크 상 여러 시스템에 대한 통계 자료가 얻을 수 있다면), 기본 네트워크 진단 도구를 사용하지 않고서도 어느정도 네트워크 문제 해결이 가능합니다.

1초당 전송률

이 통계 정보는 보통 디스크와 고성능 테이프 드라이브와 같은 블록 입출력 장치에 대한 정보를 모으는데 사용되며, 이 정보를 이용하여 특정 장치가 대역폭 한계에 이르렀는지를 알아낼 수 있습니다. 디스크와 테이프 드라이브의 기계적 특성으로 인해 일초당 수행할 수 있는 입출력 작업수에는 한계가 있습니다; 이 한계에 다다르면 성능이 갑자기 느려지는 현상이 발생합니다.

2.4.3. 메모리 모니터링

성능 모니터링 분야 중 메모리 이용률 모니터링은 가장 풍부한 성능 통계 자료를 제공합니다. 요구에 의해 페이징되는(demand-paged) 가상 메모리를 사용하는 최신 운영 체제의 복잡한 특성으로 인해 여러 다양한 메모리 이용률 통계 자료가 존재합니다. 따라서 시스템 관리자가 자원 관리 작업을 수행시 바로 이 메모리 모니터링에 대부분의 시간을 투자하게 됩니다.

다음은 자주 사용되는 메모리 관리 통계 자료에 대한 간략한 소개입니다:

페이지 인/페이지 아웃 (Page Ins/Page Outs)

이 통계 자료를 이용하여 시스템 메모리에서 연결된 대용량 기억장치 (보통 디스크 드라이브)로 페이지 유출량을 측정할 수 있습니다. 페이지 인과 페이지 아웃 비율이 모두 높다면 시스템의 물리적 메모리가 부족하여 쓰래싱(thrashing)하고 있거나, 또는 실제 어플리케이션을 실행하는 것 보다 메모리에서 페이지를 보내고 가져오는데 더 많은 자원을 소모하고 있다는 증거입니다.

활성/비활성 페이지 (Active/Inactive Pages)

이 통계 자료는 메모리에 상주한 페이지가 얼마나 자주 사용되는지 보여줍니다. 비활성화 페이지가 부족한 경우 물리적 메모리가 부족하다는 사실을 알 수 있습니다.

여유, 공유, 버퍼, 캐시 페이지 (Free, Shared, Buffered, and Cached Pages)

이 통계 자료는 간단한 활성/비활성 페이지 통계 자료와 비교하여 보다 상세한 정보를 제공합니다. 이 통계 자료를 이용하여 전체적인 메모리 이용률을 알아내는 것이 가능합니다.

스왑 인/스왑 아웃 (Swap Ins/Swap Outs)

이 통계 자료는 시스템 전체 스와핑 작업을 보여줍니다. 이 통계 비율이 매우 높다면 물리적 메모리가 부족하다는 것을 가리킵니다.

성공적으로 메모리 이용량을 모니터링하기 위해서는 우선 요구에 의해 페이징되는 가상 메모리 운영 체제의 작업 방식을 잘 이해하셔야 합니다. 이 주제 하나만으로도 책 한권의 분량에 다다르지만, 기본적인 개념은 4 장에서 다루고 있습니다. 이 장에서는 실제 시스템 모니터링에 대한 정보와 더불어 요구에 의해 페이징되는 가상 메모리 운영 체제의 작업 방식에 대한 기본적으로 알아야할 바탕 정보를 알려드립니다.

2.4.4. 스토리지 모니터링

일반적으로 스토리지 모니터링은 다음과 같은 두가지 다른 수준에서 수행됩니다:

  • 충분한 디스크 공간 모니터링

  • 스토리지 관련 성능 문제 해결을 위한 모니터링

이렇게 두가지로 나누는 이유는 성능과 관련된 문제는 야기시키지 않으면서도 디스크 드라이브 공간이 부족한 현상이 발생하는 상황과 같이 디스크 공간 면에서는 심각한 문제이지만 스토리지 관련 문제는 전혀 아닌 경우가 있을 수 있기 때문입니다. 이와 반대로 디스크 드라이브에는 99 퍼센트 여유 공간이 있지만, 성능 면에서는 한계를 넘어서는 문제가 발생할 수도 있습니다.

그러나 많은 경우에 시스템은 두 분야(여유 공간 및 스토리지 문제)에서 자원 부족 현상을 경험하기 마련입니다. 따라서 한 분야에서 문제가 발생할 경우 다른 쪽에도 영향을 어느정도 끼칠 가능성이 있습니다. 이러한 현상의 좋은 예로서 디스크 드라이브의 여유 공간이 0 퍼센트에 가까워지면서 입출력 성능이 더더욱 느려지게 되는 경우를 들 수 있으며, 이 경우에 입출력 작업 부하가 극도로 높아지면, 입출력 작업이 너무나 느려져 어플리케이션 자체가 더 이상 제대로 실행되지 않을 수도 있습니다.

스토리지 모니터링에 필요한 통계 자료는 다음과 같습니다:

여유 공간

여유 공간은 아마도 모든 시스템 관리자가 신중하게 모니터링하는 자원 중의 하나일 것입니다. 여유 공간을 한번도 확인하지 않는 시스템 관리자는 거의 없다고해도 과언이 아닙니다 (또는 여유 공간 확인 작업을 자동화하는 것도 가능합니다).

파일 시스템 관련 통계 자료

이 통계 자료 (예, 파일/디렉토리 수, 평균 파일 크기 등)은 오직 여유 공간 퍼센트를 확인하는 것 보다 자세한 추가 정보를 제공합니다. 여러 작은 파일로 구성된 파일 시스템에 의해 부과된 입출력 작업 부하는 한개의 대용량 파일로 구성된 파일 시스템에 의해 부과된 작업 부하와 다릅니다. 따라서 시스템 관리자는 이 통계 자료를 이용하여 시스템의 성능을 최적화할 수 있게 설정 가능합니다.

1초당 전송률

이 통계 자료는 특정 장치가 대역폭 한계에 도달했는지 확인하는데 유용합니다.

일초당 읽기/쓰기 비율 (Reads/Writes per Second)

이 통계는 일초당 전송률을 보다 자세하게 구분함으로서 시스템 관리자로 하여금 각 스토리지 장치마다 입출력 작업 부하 현황를 보다 깊게 이해할 수 있게 해줍니다. 일부 스토리지 기술은 읽기와 쓰기 작업에 대한 성능이 매우 다를 수 있으므로, 이 자료는 매우 중요합니다.


+ Recent posts