我有2个python脚本https://gist.github.com/2233477。
rsgen.py
生成“随机”输入,以便在simulate.py
simulate.py
执行实际模拟事情是,当我开始使用rsgen.py
参数从--numReferences
增加输入大小时,我得到不同的输出
# ./rsgen.py --numReferences 1000 > rs.txt; cat rs.txt | xargs ./simulate.py
Number of page faults : 59
# ./rsgen.py --numReferences 100000 > rs.txt; cat rs.txt | xargs ./simulate.py
Number of page faults : 873
Number of page faults : 848
Number of page faults : 823
Number of page faults : 103
./rsgen.py --numReferences 1000000 > rs.txt; cat rs.txt | xargs ./simulate.py
Number of page faults : 866
Number of page faults : 869
Number of page faults : 876
Number of page faults : 907
Number of page faults : 910
Number of page faults : 1001
Number of page faults : 845
...
请注意,当我增加numReferences时,python脚本模拟似乎运行了更多次。这是为什么?我只期待1行“页面错误数量:......”
答案 0 :(得分:2)
这可能与xargs
'ARG_MAX
有关,它定义了要发送给可执行文件的args数量的批量大小;因此,为什么要多次调用你的脚本,因为它会在多个调用之间拆分args。
尝试-n
的{{1}}(或--max-args
)标记。
更好的方法是让xargs
接受一个文件参数,这样你就可以这样做:
simulate.py
它可能会快得多,因为它避免了./rsgen.py --numReferences N > rs.txt;
./simulate.py -f rs.txt
开销