Io
測量程序的磁碟 I/O 使用情況
time
如果您想弄清楚給定命令需要多少 CPU 時間,這是一個絕妙的命令。我正在尋找可以測量程序和任何子項的磁碟 I/O 的類似東西。最好它應該區分記憶體的 I/O(因此不會導致磁碟旋轉)和未記憶體的 I/O。
所以我想做:
iomeassure my_program my_args
並獲得類似於以下內容的輸出:
Cached read: 10233303 Bytes Cached write: 33303 Bytes # This was probably a tmp file that was erased before making it to the disk Non-cached read: 200002020 Bytes Non-cached write: 202020 Bytes
我看過
vmstat
、iostat
和sar
,但這些都不是在看一個程序。相反,他們著眼於整個系統。我看過
iotop
,但這只能讓我看到這一刻。
- 編輯 - -
snap的答案似乎很接近。
“文件系統輸入:”是 512 字節塊中的非記憶體讀取。
“文件系統輸出:”是 512 字節塊中的記憶體寫入。
您可以使用以下命令強制記憶體為空:
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
我測試過:
seq 10000000 > seq /usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'
您沒有指定您使用的作業系統。
Linux
您可以嘗試使用外部命令,而不是使用
time foo
which is (通常) 內置的 shell/usr/bin/time foo
。它提供了一些附加資訊,例如文件系統輸入和輸出的數量(但沒有關於記憶體命中或字節量的資訊)。請參閱man time
和man getrusage
以獲取更多說明。請注意,此功能需要 Linux 核心版本 2.6.22 或更高版本。
自由BSD
使用
/usr/bin/time -l foo
. 它給出了輸入和輸出的數量。請參閱man time
和man getrusage
以獲取更多說明。