텍스트 파일을 다운로드하고 tmpfs에 쓰는 것이 디스크에 쓰는 것보다 느립니다. 이유는 무엇입니까?

텍스트 파일을 다운로드하고 tmpfs에 쓰는 것이 디스크에 쓰는 것보다 느립니다. 이유는 무엇입니까?

/rtmp/Ubuntu OS에 1GB RAM이 할당된 tmpfs라는 파일이 있습니다 .

저는 작은 텍스트 파일을 하드 드라이브에 쓰는 것이 더 빠른지, 아니면 이 RAM 드라이브에 쓰는 것이 더 빠른지 테스트하기 위해 bash 스크립트를 사용하고 있습니다 /rtmp/.

Bash 스크립트는 하드 드라이브에 씁니다.

#!/bin/bash

URL="http://some.website/some.txt"

wget -O ~/current/axis_tmp ${URL}

cat ~/current/axis_tmp | grep "^pattern" | tail -n 1 | awk -F',' '{printf("%.0f\n", $3)}' | sed 's/ //g' > ~/current/tmp.txt

sed -i 's/^/X,/' ~/current/tmp.txt
sed -i 's/$/,Y/' ~/current/tmp.txt

exit 0

tmpfs에 쓰기 위한 Bash 스크립트

#!/bin/bash

URL="http://some.website/some.txt"

wget -O /rtmp/axis_tmp ${URL}

cat /rtmp/axis_tmp | grep "^pattern" | tail -n 1 | awk -F',' '{printf("%.0f\n", $3)}' | sed 's/ //g' > /rtmp/tmp.txt

sed -i 's/^/X,/' /rtmp/tmp.txt
sed -i 's/$/,Y/' /rtmp/tmp.txt

exit 0

명령을 실행 time한 후 다음과 같은 결과를 얻습니다.

디스크에 쓰기

real    0m0.554s
user    0m0.022s
sys     0m0.003s

tmpfs에 쓰기

real    0m0.614s
user    0m0.023s
sys     0m0.002s

텍스트 파일을 쓰는 것이 tmpfs디스크에 파일을 쓰는 것보다 느린 이유는 무엇입니까? 처리 시간은 다음과 같아야 합니다.서둘러요에 쓰시겠습니까 tmpfs?

답변1

귀하의 스크립트는 I/O를 테스트하는 올바른 방법이 아닙니다. ~처럼하디르브그 중 몇 가지만 말해 보세요. 더 많은 것들이 있습니다. 그렇기 때문에 이를 달성하기 위한 특수 도구가 있습니다. IMHO 최고의 도구는 아마도fio. 이것을 시도해 볼 수 있습니다

fio --name=fio-rand-write --rw=randwrite --bs=4k --direct=0 --numjobs=4 \
--size=512M --ioengine=libaio --iodepth=16

cd예를 들어 테스트하려는 파티션의 폴더로 이동하여 명령 /rtmp을 실행하면 됩니다. 자세한 내용은 해당 문서나 다른 스레드를 자유롭게 읽어보세요.

답변2

스크립트는 요청된 작업(여기에 작성된 일부 데이터)을 수행하기 전/후에 많은 작업을 수행합니다. 쉘 프로그램을 시작하고(아마도 이미 메모리에 있으므로 별 문제는 아님), 데이터 영역을 초기화하고, 찾고, 읽고 해석해야 합니다. 시작 파일( .bashrc, .bash_profile집에 있는 시스템 전체 파일, ...), 그 안에 제공된 명령을 읽고 해석하고, 스크립트의 명령을 읽고 해석하고, 호출된 프로그램을 순서대로 실행하고, 모든 것을 분해한 후 . 측정하는 것은 주로 작업 자체가 아니라 간접비입니다.

셸은 직접적인 사용자 상호 작용에 사용되며 몇 가지 기본 프로그래밍 기능(여러 파일을 동시에 처리하는 등 한 줄의 코드를 작성하는 경우가 많습니다)을 갖추고 있으며(성능이 그다지 좋지 않은 한) 보다 실질적인 프로그램을 작성할 수도 있습니다. 중요한). 그러나 심각한 스크립팅의 경우 Python, Perl 또는 Raku와 같이 해당 작업을 위해 특별히 설계된 언어를 사용하는 것이 좋습니다. 두 가지 스크립팅 대안 모두 엄격한 벤치마킹에 적합한 도구는 아닙니다. 적어도 많은 관심 없이는 그렇지 않습니다.

관련 정보