2012-08-22 3 views
1

내 응용 프로그램의 성능 문제로 인해 용의자 중 하나가 과도한 IO입니다. iostat는 초당 기록 된 10K 블록의 속도를 보여줍니다. 이것이 많은지 아닌지 어떻게 알 수 있습니까? 특정 시스템과 디스크의 한계를 어떻게 알 수 있습니까?iostat 출력 분석

편집 : 출력 iostat의

:

avg-cpu: %user %nice %system %iowait %steal %idle 

     16.39 0.00 0.52 11.43 0.00 71.66 

Device:   tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn 
cciss/c0d0  315.20   0.00  10341.80   0  51709 

가동 시간 :

2:08am up 17 days 17:26, 5 users, load average: 9.13, 9.32, 8.73 

상단 :

top - 02:10:02 up 17 days, 17:27, 5 users, load average: 8.89, 9.18, 8.72 
Tasks: 202 total, 2 running, 200 sleeping, 0 stopped, 0 zombie 
Cpu(s): 5.9%us, 0.7%sy, 0.0%ni, 90.5%id, 2.9%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem:  96556M total, 15930M used, 80626M free,  221M buffers 
Swap: 196615M total,  93M used, 196522M free,  2061M cached 

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND             
20027 root  16 0 10.5g 9.8g 12m S 74 10.4 2407:55 /usr/intel/pkgs/java/1.6.0.31-64/jre//bin/java -server -X 

감사

엘리엇의 요청에 따라

답변

2

대부분의 시스템에서 매우 높은 블록 쓰기 속도를 경험할 수 있습니다. 그러나 시스템은 완벽하게 처리 할 수 ​​있습니다 - 당신은 어떤 종류의 하드웨어를 가지고 있느냐에 달려 있습니다. 중요한 것은 귀하의 server load 숫자와 iowait 수치입니다. 서버 부하가 높거나 (즉, 시스템의 코어 수보다 높음) 부하가 크게 iowait 인 경우 문제가 발생합니다.

iostat, uptime의 전체 출력과 응용 프로그램이 실행되는 동안 top -c 출력의 스냅 샷을 우리와 공유 할 수 있습니까?

+0

감사합니다. 현재 괜찮습니다. 다시 한 번이 정보를 공유 할 것입니다. – duduamar

1

관점 :

  • 는 디스크를 회전 있다면, 그 높은 값이다.
  • 쓰기 캐시가있는 SSD 또는 SAN 인 경우 합리적입니다. 폭 확장 메트릭 -x iostat의

사용 :

[[email protected]]$ iostat -x 
Linux 2.6.32-358.6.2.el6.x86_64 (boxname.goes.here)  12/12/2013 _x86_64_ (24 CPU) 

avg-cpu: %user %nice %system %iowait %steal %idle 
      0.57 0.00 0.21 0.00 0.00 99.21 

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util 
sda  0.06 28.38 0.04 3.99 0.99 259.15 64.58  0.01 2.11 0.55 0.22 

은 % UTIL이 당신의 친구입니다. iostat.c (이 부분을 보시오 : http://code.google.com/p/tester-higkoo/source/browse/trunk/Tools/iostat/iostat.c)에서 IO를 처리하는 데 걸린 시간 (프로세서 틱)과 경과 된 틱의 총 갯수를 비교하여이 백분율을 계산하는 것을 볼 수 있습니다. 즉, PERCENTAGE-UTIL은 IO가 통화 중 상태였던 시간의 백분율입니다.

관련 문제