it-swarm-ko.tech

프로세스가 CPU, 메모리 또는 디스크 바운드인지 어떻게 알 수 있습니까?

프로세스가 CPU, 메모리 또는 디스크에 바인딩되어 있는지 어떻게 알 수 있습니까?

41
ssanj

부두가 필요합니다. 따라 다릅니다. 예:

  • 메모리가 충분하고 디스크가 너무 바쁘지 않으면 아마도 가능 CPU 바운드입니다. CPU 사용량과 경계가 100 % 인 경우 CPU 범위를 확인하십시오. 그렇지 않은 경우 구현에 인공 병목 현상이 발생합니다. 예 : 듀얼 코어 CPU에서는 단일 스레드 프로세스가 CPU 사용량의 50 %를 초과하지 않습니다.

  • CPU와 메모리를 사용할 수 있지만 디스크 사용량이 많거나 IO 대기 시간이 길면 IO가 바인드되었을 가능성이 높습니다. 디스크 추가 (RAID?)가 도움이되는지 확인하십시오.

  • 위의 어느 것도? 사용 가능한 메모리를 확인하십시오.

  • 충분한 메모리? 프로세스 자체에 인공적인 병목 현상이있을 수 있습니다. 즉 누군가 누군가 잠을 제거하는 것을 잊었을 수 있습니까 (1)? Naah는 그렇게 쉬운 일이 아닙니다. ;)

성능에 민감한 제품을 다루는 대부분의 회사에서 성능 엔지니어를위한 전체 실험실이있는 이유가 있습니다!

Sar, vmstat, iostat, oprofile, lockstat, dtrace, 제품 별 성능 모니터링 도구 등과 같은 도구를 사용하여 성능 문제를 디버그하십시오.

16
Sudhanshu

iotop을 (를) 확인하십시오. 유용 할 수 있습니다

11
ithkuil

여러 프로세스 통계 (메모리, CPU 사용량, I/O 등)를 실시간으로 확인하는 데 유용한 도구는 htop입니다. Sudhanshu가 명명 한보다 전문화 된 도구를 대체하지는 않지만 좋은 시작일 수 있습니다.

9
JanC

언급 된 다른 도구뿐만 아니라 _ps l PID_를 실행하고 관련 프로세스 ID를 삽입하거나 top 또는 htop에서 STATE 및 WCHAN 열을 확인하십시오.

D (디스크 용) 상태이면 파일 IO를 수행하는 것입니다. 많은 파일을 읽거나 많은 메모리를 사용하고 스왑하기 때문일 수 있습니다. WCHAN 열은 내부에 어떤 커널 기능이 있는지 알려줍니다. 인터넷 검색을하거나 여기에서 질문하면 의미를 알 수 있습니다.

R (실행) 상태 인 경우 사용자 공간에서 CPU를 사용하고 있습니다. 즉, 그 시점에 CPU가 바인드 된 것입니다.

S (잠자기) 상태 인 경우 인터럽트 가능한 시스템 호출 내부에 있습니다. 이는 실제로 잠자고 있거나 네트워크 트래픽 또는 잠금 대기와 같은 작업을 수행하고 있음을 의미 할 수 있습니다. 다시 말하지만, 특정 wchan을 보면 더 많은 것을 알 수 있습니다.

프로세스의 "대기 채널"이란 무엇입니까?

4
poolie

top을 실행하고 CPU 사용량 라인을보십시오. 사용자 %가 높으면 CPU에 바인딩되어 있음을 나타냅니다. 대기 %가 높으면 IO 바운드임을 나타냅니다.

2
psusi