디스크 IOPS와 sar tps의 관계


13

32 비트 CentOS 6.2에서 실행되는 응용 프로그램의 IOPS 요구 사항을 추정하려고합니다. SATA 디스크가있는 컴퓨터에서 약간의 측정을 시작했으며 sar로 측정 한 IOPS와 tps의 차이가 상당히 혼동됩니다.

위키 백과 에 따르면 SATA 디스크는 75-100 IOPS를 수행해야합니다. ioping 유틸리티 는 랜덤 액세스 테스트에서이를 확인하는 것 같습니다.

# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms

그러나 sar에 의해 생성 된 tps 값은 훨씬 더 높습니다 (/ dev / sda).

# iostat 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.17    0.00    2.02   14.86    0.00   82.96

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             559.00         0.00    142600.00          0     142600
dm-0          18433.00         0.00    147464.00          0     147464
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

이로 드가 순차적 (다양한 블록 크기로 dd) 또는 임의 액세스 (ioping)인지 여부는 실제로 중요하지 않습니다. 값은 여전히 ​​동일합니다. 나는 실제로 tps가 IOPS라고 생각했으며 더 큰 덩어리가 전송되면 다운 될 것으로 예상합니다.

그렇다면 tps 값은 정확히 무엇을 의미합니까? 그리고 IOPS와 어떤 관련이 있습니까?


2
디스크 캐시로 인해 TPS 값에서 더 높은 IOPS를보고 있다고 생각합니다.
ceejayoz

1
좋아, 실제로 캐시를 채우고 ~ 90 초 후에 tps가 ~ 200으로 떨어지기 위해 256kB 블록으로 dd를 통해 10GB 파일을 시도 했으므로 아마도 맞을 것입니다. 그러나 여전히 80과 200은 큰 차이가 있습니다 ... IOPS 읽기와 쓰기가 다를 수 있습니까? 이 값에서 필요한 IOPS를 파악할 수있는 방법이 있습니까?
pystole

1
IOPS 이후의 이유를 설명 할 수 있습니까? 읽기와 쓰기는 여기에 같은 냄비에 던져지는 신발과는 상당히 다른 신발입니다.
Nils

그 이유는 최소 HW 요구 사항을 설명해야하기 때문입니다. 네트워크를 통해 데이터를 수신하고 (여기서는 일정한 비트 전송률을 가정 할 수 있음) 수신 된 데이터를 디스크에 쓰는 서버가 있습니다. 데이터는 파일에 순차적으로 기록되지만 그중 수백 (예 : 800)이 병렬로있을 수 있습니다. 나는 클라이언트의 수가 특정 지점에 도달하면 큰 iowait를 얻기 시작한다는 것을 알았습니다. 내가 달성 할 수있는 실제 디스크 처리량은 약 25MB / s이며, 비트 전송률이 더 높은 클라이언트는 35MB / s를 수행 할 수 있으며 순수한 순차는 약 130MB / s입니다. 그래서 IOPS가 여기서 중요한 것 같아요.
pystole

답변:


6

트랜잭션은 RAW 디스크 (예 : dm-0)에 기록되는 단일 IO 명령 (페치 블록 / 쓰기 블록)입니다. linux-kernel은 이러한 명령을 더 나은 순서로 정렬하거나보다 효율적인 명령으로 압축하려고 시도합니다 (예 : 한 블록 대신 두 블록을 가져오고이 블록 바로 뒤에 다른 블록을 가져옵니다). 디스크 컨트롤러로 전송되는 트랜잭션입니다 (sda의 경우 tps).

좋은 컨트롤러 마이그레이션은 실제 트랜잭션 수를 더 줄이는 자체 논리를 가지고 있습니다.

트랜잭션은 SCSI 명령 "섹터 22에서 시작하여 crontoller 1 대상 2 lun 3에 2GB 쓰기"일 수 있습니다. 알 수 있듯이 이는 처리량 수와 직접적인 상관 관계가 없습니다.

당신이 따르는 것은 지속적인 쓰기 속도입니다. 여기에 몇 가지 제한 요소가 있습니다.

  • 클라이언트 연결 : 네트워크가 기가비트 인 경우 100MB / s 이상 입력 할 수 없습니다
  • 디스크 컨트롤러 : 3Gb 컨트롤러 인 경우 300MB / s 이상의 처리량을 갖지 못합니다
  • 디스크 : 지속적인 쓰기 성능에 대한 제조업체의 가치를 찾아보십시오
  • 파일 시스템 : OS가 데이터를 처리해야하기 때문에 약간의 오버 헤드가 있습니다-RAM 디스크에서 테스트하십시오 ...

귀하의 시스템에 대한 나의 추측은 다음과 같습니다. 10 또는 5를 습격하고 6 개 이상의 빠른 (15k) 디스크를 얻을 수있는 우수한 하드웨어 RAID 컨트롤러를 구입하십시오.

전문적인 사용을 위해서는 SATA 대신 SAS를 사용하십시오.


좋아, 당신은 맞다 IOPS는 캐시, 재정렬 및 ​​병합이 많이 있기 때문에 쓰기에는 의미가 없습니다. 닫는 중 ... 감사합니다.
pystole

5

또한 TPS값은 읽기 및 쓰기를 나타내 므로 -x읽기와 쓰기가 분리 된 확장보기에 스위치를 사용할 수 있습니다 (r / s = 읽기 IOPS, w / s = 쓰기 IOPS).

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.07    24.65    0.30   18.95    30.65   330.22    18.74     0.07    3.61   0.98   1.89

그래, 당신 말이 맞아. 그러나 필자의 경우 거의 100 %의 쓰기가 있으며 읽기는 거의 없습니다.
pystole
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.