2010-02-02 3 views
1

리눅스의 PHP 스크립트에서 몇 가지 성능 문제가 발생했습니다. Fedora Core 11 상자에서 병목 현상을 찾기 위해 명령을 실행하고있었습니다. 한 가지 사실은 파일을 작성하는 것이 매우 빠르다는 것입니다.파일을 매우 빠르게 작성하면 파일을 덮어 쓸 때 더 오래 걸릴 것입니다.

[[email protected] ~]# dd if=/dev/zero of=/root/myGfile bs=1024K count=1000 
1000+0 records in 
1000+0 records out 
1048576000 bytes (1.0 GB) copied, 1.0817 s, 969 MB/s 

그러나 덮어 쓰기에는 시간이 오래 걸립니다.

[[email protected] ~]# dd if=/dev/zero of=/root/myGfile bs=1024K count=1000 
1000+0 records in 
1000+0 records out 
1048576000 bytes (1.0 GB) copied, 23.0658 s, 45.5 MB/s 

왜 그렇습니까? (그 결과를 반복 할 수 있습니다.)

+0

명령간에'sync'를 실행 해보십시오. 차이가 있는지 확인하십시오. – Hasturkun

답변

0

파일을 처음 작성하면 시스템 메모리에 버퍼링됩니다.

두 번째로 파일을 쓰면 파일이 잘 리므로 어떤 이유로 더티 페이지가 모두 디스크에 기록됩니다. 예, 이것은 어리석은 것처럼 보입니다. 파일의 길이가 0으로 자르면 파일 데이터를 쓰는 이유는 무엇입니까?

두 번째로 데이터를 쓰면 (예 : 4k의 데이터 만 쓸 수 있음) dd. 그것은 오래 걸립니다.

ddconv=notrunc을 사용하여 잘리지 않도록 설정할 수도 있습니다.

관련 문제