요약
네트워크를 통해 데이터가 전송되지 않는 동안 읽고 로컬 디스크가있는 동안 네트워크를 통해 해당 데이터를 전송하는 대신 Linux가 로컬 디스크 / 파일 시스템에서 읽고 네트워크 공유에 동시에 쓰도록 구성하는 방법 게으른?
한 작업 만 수행 한 다음 다른 작업을 번갈아 수행하는 대신 동시에 읽고 쓰는 것이 훨씬 빠릅니다.
세부
Linux 시스템의 로컬 디스크에서 NAS 장치로 많은 양의 데이터를 옮깁니다.
내가 사용하고 rsync
기본적으로 복사 /srv/data
로 /mnt/nas
CIFS 마운트이다.
읽기와 쓰기가 동시에 일어나면서 100MB / 초로 읽고 100MB / 초 (기가비트 네트워크의 한계)로 NAS에 쓰기를 시작했습니다.
그러나 이제 몇 시간 후에 로컬 디스크에서 읽은 다음 NAS에 쓰는 동안 읽기를 중지 한 다음 NAS에 쓸 데이터가 더 이상 없으면 디스크에서 다시 읽습니다. 다시. 디스크를 읽는 동안 네트워크가 유휴 상태이고 네트워크가 사용중인 동안 디스크가 유휴 상태입니다.
말할 것도없이 200MB를 읽고 200MB를 쓰는 것은 동시에 200MB를 읽고 쓰는 것보다 훨씬 오래 걸립니다.
읽기와 쓰기 사이를 번갈아 가면서 한 번에 하나의 작업 만 수행하지 않고 동시에 읽기와 쓰기의 이전 동작을 고수하도록 커널을 구성하려면 어떻게해야합니까?
일부 관찰 : 로컬 디스크가 100 + MB / 초로 읽 히면 모든 것이 병렬로 잘 일어나는 것처럼 보이지만 디스크가 느려지면 (어떤 이유로 인해 현재 20MB / 초로 진행되는 것처럼 보임)이 읽기 / 쓰기 전환이 발생하는 것 같습니다.
또한 실행할 수 sync
있지만 퍼팅 쓰기가 (감소 속도 분명하지만)이 읽기와 병렬로 일어나는 얻을 수있는 수동으로 몇 초마다 sync
A의 while
그것이 올바른 해결책은 아닌 것 같아 5 초마다 실행되도록 루프를 ...
커널은 약 1GB의 데이터를 캐시 한 다음 가능한 한 빨리 네트워크를 통해 기록하는 것 같습니다. 괜찮습니다. 데이터를 전송하는 동안 느린 디스크 읽기를 중지 해야하는 이유를 이해하지 못합니다. 회로망.