무작위 읽기 및 쓰기가 큰 경우 IO를 개선하는 방법은 무엇입니까?

무작위 읽기 및 쓰기가 큰 경우 IO를 개선하는 방법은 무엇입니까?

내 스크립트는 읽기 및 쓰기를 많이 사용합니다. 대부분은 작고 무작위입니다. 나는 Linux가 디스크에 데이터를 쓰기 전에 10초를 기다리기를 원합니다.

이 목표를 달성하는 방법은 무엇입니까?

나는 리눅스가 이미 이것을 자동으로 할 수 있다고 생각한다. 좀 더 극단적인 방법으로 하고 싶었어요. Windows의 슈퍼 캐시와 같습니다.

참고: 이것은 질문과 관련이 있습니다.리눅스에 슈퍼캐시와 비슷한 것이 있나요?. 나는 Linux가 기본적으로 "슈퍼캐시"와 같은 것을 사용한다는 것을 이미 알고 있습니다. 그러나 Linux의 하이퍼캐시와 유사한 설정은 더 낮아야 합니다. 슈퍼 캐시에 대해 더 많은 메모리 공유를 원합니다. 또한 10초마다 게으른 쓰기를 수행하고 싶습니다.

답변1

/proc 파일 시스템에는 Linux의 쓰기 저장 동작을 변경할 수 있는 5개의 조정 가능한 매개변수가 있습니다.

dirty_async_ratio
dirty_background_ratio
dirty_sync_ratio
dirty_expire_centisecs
dirty_writeback_centisecs

구성은 상당히 복잡합니다. 설명서는 다음에서 찾을 수 있습니다.kernel.org. 그러나 다음과 같이요르단이미 말했다,"모든 사용자 공간 응용 프로그램은 sync() 시스템 호출을 통해 더티 버퍼를 디스크에 쓰도록 커널에 지시할 수 있습니다."이는 다른 프로세스로 인해 구성이 쓸모 없게 될 수 있음을 의미합니다.

또한 파일 시스템 설정을 기억하십시오. noatime, data=writeback 및 nobarrier와 같은 마운트 옵션은 처리량을 크게 향상시킬 수 있지만 디스크 컨트롤러가 배터리로 지원되지 않는 경우 데이터를 위험에 빠뜨릴 수도 있습니다.

답변2

메모리(tmpfs)에 있는 하나 이상의 파일에 변경 사항을 쓴 다음 10초마다 디스크에 변경 사항을 쓸 수 있습니다.

관련 정보