Linux에서 이동식 장치(USB 스틱/HDD, SD 카드 등)에 콘텐츠를 쓸 때 처음 몇 초 동안 놀라운 쓰기 속도를 보이는 경우가 종종 있으며, 때로는 GB/s(버퍼 쓰기 쓰기) 정도의 속도도 나타납니다. 몇 분간 침묵이 흐릅니다(버퍼가 실제로 장치에 기록되는 중입니다).
이것은 오해의 소지가 있습니다. 이로 인해 실제 쓰기 속도를 판단하기가 어렵습니다. 이것은 짜증나는 일입니다(버퍼가 플러시되는 동안 프로그램을 중단할 수 없습니다). 이로 인해 FS 손상이 발생할 수 있으며, 장치에 기록 중인 동안 장치를 분리하면 적어도 기록되지 않은 콘텐츠가 발생하게 됩니다.
제 경우에는 쓰기 버퍼가 GB를 초과하는 것 같습니다. 그것을 제어할 수 있는 방법이 있나요? 좀 더 합리적인 값으로 줄이고 싶습니다.
참고: 이는 파일 시스템 캐싱과 아무 관련이 없으며 이 효과는 원시 장치에서도 발생합니다.
참고: 쓰기 버퍼를 완전히 비활성화하고 싶지는 않습니다.
감사해요!
답변1
나는 답을 찾았다. 기본적으로 64비트 Linux는 대규모 쓰기 버퍼(사용 가능한 메모리의 20%)를 유지합니다. (흥미롭게도 32비트 Linux는 최대 180MB로 제한됩니다.) 더티 버퍼 크기를 예를 들어 200MB로 변경하려면 다음을 사용할 수 있습니다.
echo 200000000 > /proc/sys/vm/dirty_bytes
또는사용된 RAM 비율(예: 1%):
echo 1 > /proc/sys/vm/dirty_ratio