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와 어떤 관련이 있습니까?
답변
트랜잭션은 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를 사용하십시오.
답변
또한 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