2010-11-30 3 views
4

저는 최근에 성능 문제를 조사하기 위해 prstat와 prstat -ma lot을 사용 해왔고, 기본적으로 샘플링과 마이크로 상태 계산의 차이를 이해했다고 생각합니다. 솔라리스 10. 그래서 나는 항상 정확히 같은 숫자를 보여주기를 기대하지 않습니다.Solaris에서 prstat과 'prstat -m'의 차이점 해석하기

오늘 나는 2가 너무 크게 다른 결과를 보인 상황에 직면했으며, 나는 그것을 해석하고 결과를 이해하는 데 문제가있었습니다. 이 머신은 다수의 대규모 WebSphere 프로세스와 Oracle 데이터베이스가있는로드가 많은 8-CPU Solaris 10입니다. 이 시스템은 실제로 약 15 분 동안 중단되었습니다 (부하 평균은> 700). 나는 prstat 정보를 얻는 데 어려움을 겪었지만 "prtstat 1 1"과 "prtstat -m 1 1"의 결과물을 하나씩 얻을 수있었습니다. 출력의

상단 라인 :

prstat의 1 : 1 (몇 초 후에)

 
    PID USERNAME SIZE RSS STATE PRI NICE  TIME CPU PROCESS/NLWP 
    8379 was  3208M 2773M cpu5 60 0 5:29:13 19% java/145 
    7123 was  3159M 2756M run  59 0 5:26:45 7.7% java/109 
    5855 app1  1132M 26M cpu2 60 0 0:01:01 7.7% java/18 
16503 monitor 494M 286M run  59 19 1:01:08 7.1% java/106 
    7112 oracle  15G 15G run  59 0 0:00:10 4.5% oracle/1 
    7124 oracle  15G 15G cpu3 60 0 0:00:10 4.5% oracle/1 
    7087 app1  15G 15G run  58 0 0:00:09 4.0% oracle/1 
    7155 oracle  96M 6336K cpu1 60 0 0:00:07 3.6% oracle/1 
... 
Total: 495 processes, 4581 lwps, load averages: 74.79, 35.35, 23.8 

prstat의 -m 1

 
    PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/NLWP 
    7087 app1  0.1 56 0.0 0.2 0.4 0.0 13 30 96 2 33 0 oracle/1 
    7153 oracle 0.1 53 0.0 3.2 1.1 0.0 1.0 42 82 0 14 0 oracle/1 
    7124 oracle 0.1 47 0.0 0.2 0.2 0.0 0.0 52 77 2 16 0 oracle/1 
    7112 oracle 0.1 47 0.0 0.4 0.1 0.0 0.0 52 79 1 16 0 oracle/1 
    7259 oracle 0.1 45 9.4 0.0 0.3 0.0 0.1 45 71 2 32 0 oracle/1 
    7155 oracle 0.0 42 11 0.0 0.5 0.0 0.1 46 90 1 9 0 oracle/1 
    7261 oracle 0.0 37 9.5 0.0 0.3 0.0 0.0 53 61 1 17 0 oracle/1 
    7284 oracle 0.0 32 5.9 0.0 0.2 0.0 0.1 62 53 1 21 0 oracle/1 
... 
Total: 497 processes, 4576 lwps, load averages: 88.86, 39.93, 25.51 

I 매우 곤란 해석을 출력. prstat은 정상적인 상황에서 기대하는 것처럼 Java 처리의 상당 부분이 일부 오라클과 함께 진행되고 있다고합니다. prtstat -m은 엄청난 양의 시스템 시간을 소비하는 오라클이 전적으로 지배적 인 시스템을 보여 주며 전반적인 CPU에 과부하가 걸렸습니다 (LAT가 많음).

나는이 시간 동안 시스템이 느낀 것과 밀접한 관련이 있기 때문에 prstat -m의 출력을 믿고 싶어합니다. 완전히 부진하고 WebSphere에서 계속 진행되는 사용자 요청 처리가 거의 필요하지 않습니다.하지만 prstat는 왜 다른 수치를 보여 줍니까?

모든 설명은 환영합니다!

CU, 조

답변

4

사용 수치가 계산되는 방식의 CPU에서 Solaris에서 prstat -m 알려진 문제있다 - 당신이 볼 수있는 값이 따라서 프로세스의 모든 쓰레드 (LWP를)를 통해 평균 및되었습니다 훨씬 멀리있다 많은 수의 스레드를 가질 수있는 Java 응용 프로그램 서버 (예 : NLWP 참조)와 같이 많이 사용되는 다중 스레드 프로세스의 경우 너무 낮습니다. 그것들 중 12 개 미만은 CPU hog이기 때문에 자바에 의한 CPU 사용량은 "낮음"으로 보입니다. 그 효과를보기 위해 LWP (스레드) 붕괴를 얻으려면 prstat -Lm으로 전화해야합니다. 참조 :

http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6780169

더 성능 모니터링 데이터없이 당신이 무엇을 본 적이 아닌 투기 설명을 제공하기 어렵다. 내가 자바 내에서 잠금 경합을 가정합니다. 이를 일으킬 수있는 특정 작업 부하는 다중 스레드 메모리가 많이 매핑 된 I/O이므로 프로세스 주소 공간 잠금에 모두 쌓일 것입니다. 하지만 그것은 순전히 java 사용자 측 잠금 일 수 있습니다. 자바 프로세스 중 하나에있는 plockstat 및/또는 간단한 dtrace 프로파일 링이 도움이 될 것입니다.

+0

감사합니다. 완벽하게 설명합니다. 그 동안 우리는 prstat -Lm, plockstat 및 dtrace를 사용하여 모니터링을 시작했지만 동일한 상황은 더 이상 없었습니다. 그래서 우리는 아직도 정확히 무슨 일이 일어 났는지 모른다. – jammann

관련 문제