oflag=direct
항상 in을 사용하는 것이 dd
사용하지 않거나 등을 사용하여 작업을 수행하는 것보다 훨씬 빠른 것 같습니다.pv
어떤 상황에서 할 수 있나요?아니요그것을 사용하고 싶습니까 oflag=direct
?
답변1
내 머리 꼭대기에서 바로 :
- 직접 IO 쓰기를 사용하면 대상 파일이 다른 프로세스에 의해 매핑되는 경우(일반적으로 직접 IO 쓰기) 데이터가 손실될 수 있습니다.
- 일부 파일 시스템은 직접 IO를 지원하지 않거나 직접 IO에서 제대로 작동하지 않습니다. 두 번째 가능성은 역사적으로 BTRFS가 직접 IO를 사용할 때 대상 파일의 데이터 손상을 초래하는 경우가 있다는 것입니다.
- 직접 IO가 보편적으로 더 빠르지는 않습니다. 여기에는 많은 것들이 있지만 일반적으로 직접 IO가 느려지는 일반적인 상황은 시스템 쓰기 저장 캐시에 맞을 만큼 작은 파일을 복사하여 0이 아닌 검색 대기 시간으로 스토리지 속도를 늦추는 경우입니다.
- 때때로 일반 IO의 바람직한 부작용이 발생합니다. 예를 들어, 대상 파일이 느린 저장소에 있고 즉시 사용하려는 경우 유용할 수 있습니다. 이 경우 직접 IO를 사용하지 않으면 파일 데이터 중 적어도 일부가 여전히 페이지 캐시에 있을 수 있으므로 다음의 경우 시간을 절약하세요. 파일을 나중에 읽으세요. 많은 것들이 직접 IO를 사용하지 않기 때문에 성능 벤치마킹을 수행하려는 경우에도 이는 중요합니다.
oflags=direct
진정한 이식성이 필요한 경우 Linux 전용 확장이므로 의 가용성에 의존할 수 없습니다 .