큰 파일을 Linux 시스템에 마운트 된 USB 디스크에 비동기식으로 복사했습니다. 이것은 비교적 빠르게 명령 프롬프트로 돌아가지만, 입력 할 때 sync
물론 디스크로 이동해야하며 시간이 오래 걸립니다.
속도가 느리다는 것을 알고 있지만 카운터가 0으로 내려가는 것을 볼 수있는 곳이 있습니까? 시청 buffers
에서하는 것은 top
도움이되지 않습니다.
답변
살펴보면 모든 데이터가 스풀 아웃됨에 따라 시간이 지남에 따라 숫자가 줄어들고 /proc/meminfo
있음을 알 Dirty
수 있습니다. 그것의 일부도 유출 될 수 Writeback
있습니다. 그것은 모든 장치에 대한 요약이지만 시스템의 한 장치가 나머지 장치보다 훨씬 느린 경우 일반적으로 해당 대기열의 모든 것이 관련되어 있습니다. 당신은 아마 찾을 Dirty
시작하고 때 많은 수의 sync
같은 시간에 대한 완료 그것이 0 대화 형 디스플레이를 얻을이 시도 접근 :
watch -d grep -e Dirty: -e Writeback: /proc/meminfo
일반 디스크를 사용하면 일반적으로 무시할 수 Writeback
있지만 USB 전송 경로에 더 자주 포함되는지는 확실하지 않습니다. 명확한 추세없이 위아래로 튀는 경우 Dirty
숫자를 볼 수 있습니다.
답변
/sys/block/<device>/stat
동기화하는 동안 적절한 장치 에 대한 파일을 볼 수 있습니다 . 9 번째 열에는 장치의 비행 중 요청 수가 표시되며 동기화가 완료되면 0으로 내려갑니다.
이를 바이트 수로 변환하는 방법을 모르지만 여전히 “대기”가 얼마나 보류 중인지 대략적인 아이디어를 제공해야합니다.
자세한 내용은 커널 설명서에서 stat.txt 파일을 참조하십시오. ( inflight
내 시스템의 해당 디렉토리에는 읽기 및 쓰기 기내 요청을 포함 할 수 있는 파일이 있지만 그에 대한 문서를 찾을 수 없습니다.)
답변
Greg의 답변을 사용하면 sync
메모리에 Dirty 블록의 상태를 표시하면서 백그라운드에서 간단히 실행할 수 있습니다 .
이를 위해서는 간단히 다음 명령을 실행하십시오.
sync & watch -n 1 grep -e Dirty: /proc/meminfo
앞에서 sync
실행하는 동안 백그라운드에서 호출 됩니다 watch
. 때 sync
명령 (더티 블록의 크기가 0에 도달했을 때 주위) 완료됩니다, 당신은 다음과 같습니다 출력을해야합니다 :
1] + 27260 done sync
이 명령이 완료하고 죽일 수 있다는 것을 의미 watch
와 명령 Ctrl+를 C.