Shell-Script
將文本文件下載並寫入 tmpfs 比寫入磁碟要慢,為什麼?
我有一個名為 tmpfs
/rtmp/
,它在 Ubuntu 作業系統上分配了 1GB 的 RAM。使用 bash 腳本,我正在測試將一個小文本文件寫入硬碟是否更快,或者寫入此 RAM 驅動器是否更快
/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
嗎?
您的腳本不是測試 I/O 的正確方法。正如hardillb指出的那樣,其中一些,還有更多。這就是為什麼有專門的工具來解決這個問題。最好的工具可能是恕我直言
fio
。你可以這樣試試fio --name=fio-rand-write --rw=randwrite --bs=4k --direct=0 --numjobs=4 \ --size=512M --ioengine=libaio --iodepth=16
您只需
cd
進入要測試的分區中的文件夾,例如/rtmp
並啟動命令。隨意閱讀它的文件或這裡的其他執行緒以獲取更多資訊。