프로세스가 CPU, 메모리 또는 디스크에 바인딩되어 있는지 어떻게 알 수 있습니까?
프로세스가 CPU, 메모리 또는 디스크에 바인딩되어 있는지 어떻게 알 수 있습니까?
답변:
부두가 필요합니다. 따라 다릅니다. 예:
메모리가 충분하고 디스크가 너무 바쁘지 않으면 CPU 바운드 일 수 있습니다 . CPU 사용량과 경계가 100 % 인 경우 CPU 범위를 확인하십시오. 그렇지 않은 경우 구현에 인공 병목 현상이 발생합니다. 예를 들어 듀얼 코어 CPU에서 단일 스레드 프로세스는 CPU 사용량이 50 %를 초과하지 않습니다.
CPU와 메모리를 사용할 수 있지만 디스크 사용량이 많거나 IO 대기 시간이 길면 IO가 바인딩 된 것 같습니다. 디스크 추가 (RAID?)가 도움이되는지 확인하십시오.
위의 어느 것도? 사용 가능한 메모리를 확인하십시오.
충분한 메모리? 프로세스 자체에 인공적인 병목 현상이있을 수 있습니다. 예를 들어 누군가 수면을 제거하는 것을 잊었을 수 있습니까 (1)? Naah는 그렇게 쉬운 일이 아닙니다. ;)
성능에 민감한 제품을 다루는 대부분의 회사에서 성능 엔지니어를위한 전체 실험실이있는 이유가 있습니다!
sar, vmstat, iostat, oprofile, lockstat, dtrace, 제품 별 성능 모니터링 도구 등과 같은 도구를 사용하여 성능 문제를 디버그하십시오.
언급 된 다른 도구뿐만 아니라 ps l PID
관련 프로세스 ID를 삽입하여 실행 하거나 STATE 및 WCHAN 열을 top 또는 htop에서 확인하십시오.
D (디스크 용) 상태이면 파일 IO를 수행하는 것입니다. 많은 파일을 읽거나 많은 메모리를 사용하고 스왑하기 때문일 수 있습니다. WCHAN 열은 내부에 어떤 커널 기능이 있는지 알려줍니다. 인터넷 검색을하거나 여기에서 질문하면 의미를 알 수 있습니다.
R (실행) 상태 인 경우 사용자 공간에서 CPU를 사용하고 있습니다. 즉, 그 시점에 CPU가 바인드 된 것입니다.
S (잠자기) 상태 인 경우 인터럽트 가능한 시스템 호출 내부에 있습니다. 이는 실제로 잠자고 있거나 네트워크 트래픽 또는 잠금 대기와 같은 작업을 수행하고 있음을 의미 할 수 있습니다. 다시 말하지만, 특정 wchan을 보면 더 많은 것을 알 수 있습니다.
프로세스의 "대기 채널"이란 무엇입니까?를 참조하십시오 .