SharedIT | 묻고 답하기(AMP)

리눅스 fio 퍼포먼스 체크툴 사용해보신분 계신가요?

질문을 게시하려는데 최대 바이트수가 초과했다고 하여 부득이하게 2cpu 커뮤니티 게시판에 글을 쓰고 링크를 걸어드리니 양해부탁드리겠습니다..ㅠㅠ

https://www.2cpu.co.kr/QnA/816191


답변주시면 정말 감사하겠습니다..!

Tags : 태그가 없습니다.

3개의 답변이 있습니다.

Simon.Park
  0 추천 | 2년 이상 전

Cache Enable 하는 것과 Disable 하는 것은 차이가 있을 수 밖에 없죠.

Enable : Write 했을 때 내부 Bus 를 이용해서 디스크의 Cache 까지의 속도

Disable : Write 했을 때 HDD (or SSD) 까지의 속도

위와 같으니 당연히 Cache 까지만 Write 하고 Ack 를 날리면 그만큼 빠른게 당연하다 봅니다.

결과에서도 보시듯이, 

Disable : IOPS = 5237, BW=8Mib/s

Enable : IOPS = 18.8k, BW=293Mib

위와 같이 상당히 많은 차이를 볼 수 있겠네요.

근데, Enable / Disable 했을때를 비교 해 보는 건 무슨 의도로 하신 건지요?

일반적으로 이런 측정은 스토리지를 교체 할 때 전/후의 속도를 비교할 때 사용 하는데요...

찌롱 | 2년 이상 전

다른분들 답변을 보면 Drive Write Cache 설정이 컨트롤러의 Cache 메모리가 아닌 HDD의 캐시메모리라는 답변이 많습니다.


simon 님께서 답변해주신것처럼 IOPS가 3~40배 가량 차이가나는데, HDD 캐시옵션을 활성화했다고 저정도의 퍼포먼스 차이가 생기는걸까요,,?


캐시배터리의 역할과 write-back, write-through 모드 설정 시 퍼포먼스 차이가 많이 나는지 테스트하기 위함입니다.

wansoo
  0 추천 | 2년 이상 전

쉐어드IT에 글자수 제한은 있어도, 2CPU에 링크한 내용 정도의 이미지와 글 정도는 충분히 넣을 수 있을 정도 일 것 같은데???



조금전에 dd로 디스크 io 체크를 해보았는데요.

이번엔 fio 라는 툴을 이용해 1MB 짜리 파일들 4096개를 생성하는동안의 퍼포먼스를 체크해보았습니다.

raid controller의 disk write cache를 on/off 해서 비교해본 결과입니다.


# Disk Cache Disable


# Disk Cache Enable




결과값에 대한 정확한 판단은 어렵지만 대략적으로 보았을 때 쓰기성능에 주된 포인트라고 생각되는것만 빨간박스 쳐보았습니다.

Cache를 enable 했을때가 disable 되었을때보다 확실히 성능이 좋다고 볼 수 있는건가요!!??


Cache를 사용하는 이유가 디스크 I/O 성능을 향상시키기 위한 목적인데... 당연한 결과가 아닐까 싶어 보이네요.

비교 성능 Test에서 성능이 높게 나왔다면 성능이 높다고 결론을 내릴 수 있다고 보면 될것 같고요.

wansoo | 2년 이상 전

디스크 캐시를 사용하게 되면...

디스크에 직접 쓰기/읽기 하기 전에 성능이 빠른 메모리 영역에 데이터를 기록하고, 읽어올 데이터를 메모리 영역에서 찾아 보고 없으면 디스크에서 읽어 와서 메모리에 올려 뒀다가 다음번에 같은 내용을 찾을때 성능이 낮은 디스크로 부터 내용을 가져 오지 않고 성능이 빠른 메모리에서 찾을 내용을 바로 가져와 버리기 때문에 읽기 속도가 빨라지게 되겠고요.

쓰기 작업도 디스크에 계속적으로 쓰기 작업을 진행하지 않고, 성능이 좋은 메모리 영역에 임시 기록 작업을 해 뒀다가 나중에 여유 시간에 메모리에 기록된 최종 결과 내용을 기록하게 되어 읽기/쓰기 작업을 할때 빠른 성능으로 작업이 진행될 수 있게 해 주게 될테고...

찌롱 | 2년 이상 전

업로드 할 용량이 초과되었다고 하네요.

wansoo 님 말씀은 제가 설정한 옵션이 HDD 의 캐쉬라는 말씀이신거네요..?

저는 컨트롤러의 캐시라고 생각했었는데 아닌가보네요..

wansoo | 2년 이상 전

HDD 이건, 컨트롤러 이건 중요한 것은 느린 디스크에 직접적으로 기록하지 않고, 속도가 빠른 고가의 메모리에 임시로 기록했다가 나중에 실질적인 디스크에 기록한다는 건 동일합니다.

컨트롤러 내에 존재하는 캐시 메모리를 사용하냐 CPU 내의 마더 보드 내의 캐시 메모리를 사용하냐, CPU 내의 캐시 메모리를 사용하냐... 등의 물리적인 캐시 메모리의 성능, 용량, 위치 등에는 차이가 있지만 캐시 메모리 사용에 대한 기본 내용은 동일합니다. 

Genghis Khan
  0 추천 | 2년 이상 전

Raid Controller에서 Data Read / Write의 요청을 처리할 때 서버의 메모리로 전송간 성능의 차이가 발생된다. 
이는 구성 물질과 구조의 차이점으로 일반적인 정보와 같이 CPU -> memory -> Disk 순으로 전송속도의 차이가 발생되며 각 구간별로 전송 속도의 차이가 심하여 이를 보완하기 위해서 구간별 cache라는 장치 혹은 논리적 메모리 영역을 만든다. 

Raid Controller도 Disk와 DRAM간의 데이터 전송속도를 보완하기 위해서 Raid Cache Memory를 장착하며, 이 공간은 데이터가  전송되거나 받을 때 가장 우선적으로 받게 되는 구간이다. 

Raid Cache Memory와 함께 사용되는 것이 배터리인데 존재의 이유는 메모리의 휘발성 문제 때문이다. Raid cache와 disk간 데이터를 적재하는 도중 전원이 차단되면 기본적으론 raid cache 영역 데이터를 분실하게 되며 추후 전원이 공급되어 시스템을 가동 시 데이터의 정합성이 맞지 않아서 데이터가 깨지는 현상이 발생될 수 있기 때문이다. 

즉, 서버나 OS입장에서 볼 때 CPU는 데이터 전송 완료를 대기하는 시간은 메모리 -> Raid cache 구간까지로 인식하며 실질적인 데이터의 저장은 Raid cache에서 Controller를 지나서 Disk로 Raid 방식에 맞추어 저장되는 방식이다. 

찌롱 | 2년 이상 전

네 그 개념은 알고있습니다만.. fio 명령의 결과값에서 쓰기 퍼포먼스 차이에 대한 판단을 질문드린겁니다..

Genghis Khan | 2년 이상 전

fio 툴을 이용하였지만 disk I/O는 Raid controller에서 cache enable, disable 차이는 큽니다

다만 같은 raid controller에 disk가 있느냐 없느냐도 차이가 있죠