일반적으로 한번 디스크에서 메모리까지 읽히는 크기가 4KB라 들었음
근데 오늘 파일시스템 공부하다가 든 의문인데
HDD에선 rotational delay에 의한 seek time을 무시할 수 없기 때문에
peak bandwidth에 최대한 도달하려면 chunk size를 키워서 amortization이 필요하대
근데 한번에 읽는 청크 크기를 애플리케이션 레벨에서 조절할 수 있음?
DBMS 같은 프로그램에선 중요한 문제일거 같은데 어떻게 해결하는지 아는 깃붕이 있냐?
ssize_t read(int fd, void *buf, size_t nbytes); 에서 nbytes 정해주면 될거 같은데
size_t fread(void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);
여기서 size가 디스크에서 읽는 청크사이즈가 아닌거 같아서 질문했는데 내일 일끝나면 함 소스까봐야겠다
c 언어에서 그 2개 함수 말구 파일 읽기 할 수 있는 방법 있음? 내가 알기로는 엄슴
sched_setscheduler 처럼 os레벨에서 뭔가 셋팅해줄수있는게 있나 싶엇음
파일시스템이랑 HDD 캐시램이랑 좀 관련 있을거 같은데. c 언어에서 할 수 있는 방법은 없음. c 언어로 할 수 있는건... 파일시스템의 기본 무슨 사이즈더라.. 암튼 그게 1k, 4k ... 이렇게 있을텐데, 1k 면 read 할 때 1024 만큼 읽으면 좋을거 같은데. 아마 hdparm 이런 어플 소소 봐야할 듯.
hdparm? 그건 또 뭐노 내일 찾아봐야겟네ㅋㅋ
아.. 블록 사이즈. 생각났다.
hdparm 이라고 HDD 벤치마크하는 어플임. 옛날에 유명했음. 지금은 SSD 때문에 잘 안 쓰고.
ㅇㅎ ㄳㄳ
루비가 섹터 말하려는건가
이론적으로는 섹터 크기만큼 읽는게 가장 효율적이라고는 하던데 시스템 콜 비용 때문에 chunk size를 크게할수록 더 빨리 읽힘 근데 대용량 파일은 또 그게 아닐 수도 있어서 성능 측정하면서 최적값 찾아야 함
오