rawdevice를 일반적인 Block device와 성능비교를 하려고 합니다.
글쓴이: ydhoney / 작성시간: 화, 2006/01/17 - 6:08오후
특정 스토리지에 있는 일반적인 Block device와 raw device 두가지를 비교하려고 합니다.
이 두 디바이스의 실제 성능을 비교하려면 어떻게 하는것이 좋을까요?
rawdevice에 dd테스트는 의미가 없을것이고..
혹시 이에 대한 좋은 생각이 있으신 분들은 추천 부탁드립니다.
(현재 오라클 본사에서 오라클 기반에서 일반 block device와 raw device에 대한 성능 테스트를 진행중입니다만 결과가 아직 불투명하군요)
Forums:
지금 말씀하시는건 유닉스 파일시스템의 이야기가 아니라 오라클의 테이블스페
지금 말씀하시는건 유닉스 파일시스템의 이야기가 아니라 오라클의 테이블스페이스를 파일로 만들것이냐 아니면 raw 파티션을 이용할것이냐 하는 문제를 그렇게 말씀하신게 아닐까 싶습니다. (오라클에서 직접 하드디스크 블럭에 접근하게 구성하는걸 raw device를 이용한다고 표현하는데 그건 유닉스에서 말하는 스트림 디바이스나 블럭 디바이스와는 다른 개념입니다)
결론적으로 말씀드리면 속편하게 파일로 만드시는걸 추천드립니다. 데이터베이스 알고리즘상에 디스크 블럭 관리 알고리즘이 있는데, 어차피 SCSI하드나 외장 RAID (또는 SAN, NAS거나) 스토리지를 이용한다면 디스크 블럭 접근 메카니즘은 파일시스템 API를 거쳐서 하거나 RDBMS 알고리즘을 쓰거나 비슷한 반응시간을 가집니다.
오라클 옛날부터 만졌던 디비어드민도 테이블 스페이스를 파일로 만들거나 디바이스로 만들거나 거의 성능차이는 1%수준밖에 안 된다고 하더군요. 파일로 만들면 이론적으로는 성능이 떨어지는게 맞지만 그건 거의 체감할 차이는 되지 않고, 백업이나 이전하는 등 관리하기는 훨씬 편한데 디바이스로 만들면 백업이나 이전도 귀찮고 어렵다고.
(RDBMS 이론을 배우다 보면 디스크 블럭 액세스 알고리즘도 배웁니다. 그런데 요새는 그런 기능이 OS에 다 들어가 있어서리...)
you must know the power of dark side.
요즘 CPU 랑 하드가 좋아서.. 사실 크게 신경을 안써도 되는게 맞는
요즘 CPU 랑 하드가 좋아서.. 사실 크게 신경을 안써도 되는게 맞는 이야기입니다만 어째껀 아직까지 한 시스템에 들어가는
물리적인 램은 제한이 있는 편이고
rawdevice 를 쓰는 직접적인 이유는 io 를 오라클에 맞기면서
fs단의 cache 를 안쓰려는 이유입니다. (오라클에서 캐쉬하고
fs단에서 캐쉬하면 이중이되겠죠)
오라클에서도 그에 관하여 directio 라던가 여러가지 패치를
내놓고 있는 실정입니다.
그리고 block device 와 raw device의 차이는 fs단에서는 다음과 같습니다.
oracle 상에서 db block size 가 있고 그걸 raw에 적용시에는
1번에 block-size 만큼 콜이 됩니다. 그런데 32bit os 에서는
4K가 일반적인 block-size 이고 ( max입니다. 커널수정이 없는한 ) 일반적으로 oracle block-size 는 8k 혹은 16k입니다.
그러면 시스템 콜이 실질적으로 2번일어나게되는겁니다.
oracle 의 io 성능은 결과적으로
oracle block-size , file system option (block size ) or type
raid level , raid strip size , raid cache size ,
writeback write thru , readahead 등등.. 시스템경험과
dba로서의 oracle systme 이해도가 걸려 있는 문제입니다.
여튼 두서가 없긴한데.. 세팅하기 나름입니다. 라는것이
제 결론입니다. =3
댓글 달기