我必须编写一个程序(perl,python或java)来模拟我们服务器上的工作负载,这样它需要2个参数:
内存
时间
基于这些参数,它应该启动一个在指定时间内消耗指定数量内存的进程。内存的最大值可以高达50-100GB,时间可以高达12-24小时。
我不能使用fork或多线程,这个进程应该是一个单独的线程并且应该继续执行操作(如Integer / Floating point等)。我也不想做任何I / O操作。
我能想到的最简单的方法是:
1. while(timeSpent < timeLimit || memoryConsumed < memorySpecified){
2. if(memoryConsumed < ){
3. Add random number to ArrayList
4. }else{
5. Multiply all numbers (Do some exception handling to prevent this from overflowing)
6. }
7. }
如果有更好的方法,请告诉我。
谢谢,
阿米特
答案 0 :(得分:1)
这个python代码不适合你的需求吗?
import argparse
import datetime
def main():
parser = argparse.ArgumentParser(description = "Consume memory and time.")
parser.add_argument('memory', metavar = 'M', type=int, help = "memory (in megabytes) to consume")
parser.add_argument('time', metavar = 'H', type=int, help = "time (in hours) to consume")
args = parser.parse_args()
data = bytearray(args.memory * 1000000)
now = datetime.datetime.today()
finish = now + datetime.timedelta(hours = args.time)
while now < finish:
for i in xrange(args.memory * 1000000):
data[i] = now.second
now = datetime.datetime.today()
if __name__ == '__main__':
main()
答案 1 :(得分:1)
我正在使用实用程序stress weather.ou.edu/~apw/projects/stress ...虽然调整了一下以扩展我想要的功能..
感谢您的帮助。
答案 2 :(得分:0)
你的例子似乎是合理的,至少在第一步。然而,有许多小细节可以做对:
这是一个比看起来更微妙的问题,你们很多人都希望从简单开始,甚至可能使用标准测试,例如:SETI或光线跟踪器。