[英]Disk Space Usage Profiling in Linux
我在Linux [Red Hat]上運行C ++程序,該程序在硬盤上創建臨時文件以計算其結果。 我需要知道該程序在運行時會從磁盤使用多少空間。 我無法更改源代碼來保留文件,因此我可以在產生結果之前和之后減去Program文件夾的大小。 在這種情況下,是否可以使用任何性能分析工具或命令行來幫助我。
我想,您可以在從終端運行程序之前和之后使用du -h /path/todir
。
du-估計文件空間使用量
-h,-人類可讀格式的人類可讀打印尺寸(例如1K 234M 2G)
如果您需要其他選擇,請看一下man du
您可以使用/ proc / [pid] / io中維護的統計信息。
從/ proc手冊頁:
此文件包含該過程的I / O統計信息,例如:
# cat /proc/3828/io
rchar: 323934931
wchar: 323929600
syscr: 632687
syscw: 632675
read_bytes: 0
write_bytes: 323932160
cancelled_write_bytes: 0
write_bytes: bytes written
Attempt to count the number of bytes which this process
caused to be sent to the storage layer.
您可以編寫類似的腳本,
#!/bin/bash
c=0
echo $1
rm /tmp/writtenBytes.txt
psout=`ps aux | grep "$1" | grep -v $0 | grep -v grep `
while [[ "$psout" != "" ]]
do
pid=`echo $psout | awk '{print $2}'`
cat /proc/$pid/io | grep write | grep -v cancelled >> /tmp/writtenBytes.txt
psout=`ps aux | grep "$1" | grep -v $0 | grep -v grep`
echo $psout
sleep 1
done
運行該腳本為
bash -x getIO.sh "postgres: stats collector"
該腳本將創建文件/tmp/writingBytes.txt,其中包含名為“ postgres:stats collector”的進程寫入的字節數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.