작업

2011-12-07 3 views
0
내가 2 개 인자 취하도록 우리의 서버에 부하를 시뮬레이션하는 프로그램 (펄, 파이썬이나 자바) 작성해야

시뮬레이션 방법 :작업

  1. 메모리

  2. 시간

그리고 이러한 인수에 따라 지정된 시간 동안 지정된 양의 메모리를 소모하는 프로세스를 시작해야합니다. 메모리의 최대 값은 50-100GB로 높을 수 있으며 시간은 최대 12-24 시간이 될 수 있습니다 에스.

포크 또는 멀티 스레드를 사용할 수 없으며이 프로세스는 단일 스레드 여야하며 정수/부동 소수점 등의 작업을 연속적으로 수행해야합니다. 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

이 숙제가 있습니까? – carlosdc

+0

:) 아니 1 년 전 졸업했습니다. 나는 실제로 서버에서 내 코드에 대한 스트레스 테스트를 수행하기 위해 이것을 작성하고있다. 스트레스 http : //weather.ou와 같은 것을 사용할 수있는 옵션이 있습니다.edu/~ apw/projects/stress/나중에 나는 doonot이 제공하는 스트레스가 필요한 것들을 필요로한다는 것을 알고 정말 간단하게 시작하고 싶었다. –

답변

1

그래도 난 당신의 도움들에 대해 내가 원하는 기능 ..

감사를 확장하는 그것을 조금 불통 ... 유틸리티 스트레스 weather.ou.edu/~apw/projects/stress 사용하고 있습니다.

1

않을까요 요구 사항이 파이썬 코드 정장 같은?

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() 
0

귀하의 예는 적어도 첫 단계에서는 합리적인 것처럼 보입니다. 이 바로 얻을 그러나 많은 작은 세부 사항은 다음과 같습니다 당신은 O/I 싶지 않아 말을

  • 은, 그리고 당신이하는 현대적인 기계 50-100기가바이트의 할당에하지만, 괜찮습니다 이 원하는지 (페이지 오류를 통해) I/O를 수행해야하므로 을 다시 정의 할 수 있습니다.
  • 또한 "개체"의 세밀도를 고려하면 과학 컴퓨팅 응용 프로그램은 많은 "작은 개체"로 패칭 할 수 없습니다. 패러다임. "많은 작은 개체"와 "적은 개체"간의 균형을 유지할 매개 변수가 많이 있습니다. 또한
  • , 곱하거나 용기에 모든 데이터 포인트를 추가하거나 무언가에 의해 쉽게 OS에 의해 예측하고, 현실 세계에서, 따라서 비현실적인 수 있습니다 페이지 오류의 시퀀스를 생성 할 수 있습니다, 당신은 몇 가지를 추가 할 수 있습니다 너는 무작위로 너 을 가로 지른다.

보다 미묘한 문제이며 많은 사람들이 SETI 나 raytracer 같은 표준 테스트를 통해 간단하게 시작하기를 원합니다.