应用程序似乎运行多次,具体取决于输入大小

时间:2012-03-29 06:12:50

标签: python unix xargs

我有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行“页面错误数量:......”

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 开销