Как смоделировать разную частоту процессора и ограничить оперативную память - PullRequest
10 голосов
/ 26 мая 2010

Я должен построить симулятор с C #.Этот симулятор должен быть в состоянии запустить второй поток с настраиваемой скоростью процессора и ограниченным объемом оперативной памяти, например, 144 МГц и 50 МБ.
Конечно, я знаю, что симулятор никогда не может быть таким точным, как реальное оборудование.Но я пытаюсь получить почти схожую производительность.
В данный момент я думаю о создании потока, который я буду время от времени останавливать / спать.В зависимости от желаемой скорости процессора, симулятор должен регулировать время ожидания этого потока и, следовательно, имитировать различные частоты процессора.Для измерения достигнутой скорости я подумал об использовании PerformanceCounters.Но при таком подходе у меня возникает проблема, заключающаяся в том, что я не знаю, как ограничить объем ОЗУ, который может использовать поток.
У вас есть идеи, как реализовать такой симулятор?заранее !!

Ответы [ 4 ]

3 голосов
/ 26 мая 2010

Ограничить память легко с виртуальными машинами, такими как vmware. Вы можете изменить скорость процессора с помощью некоторых инструментов разгона. Например http://cpu.rightmark.org/products/rmclock.shtml Удачи!

2 голосов
/ 26 мая 2010

ограничение скорости процессора? Вы должны проверить это, возможно, это будет полезно (в некоторой степени, по крайней мере). Эмуляция процессора и привязка к определенной тактовой частоте

1 голос
/ 26 мая 2010

Если вас интересует моделирование среды операционной системы, тогда одним из ответов будет использование среды виртуальных машин, в которой вы можете контролировать параметры памяти и ЦП и т. Д.

Потоковая пауза \ остановка может помочь вам смоделировать частоту ЦП, но это будет очень неточно, поскольку, когда вы приостанавливаете поток, он будет перенесен, а операционная система перепланирует его на какой-то «случайный» момент времени, то есть момент, который вы не можете контролировать.

Что касается ограничения памяти, можно запустить новый процесс, в котором будет размещен ваш код, а затем ограничить память этого процесса, например ::

.

http://www.codeproject.com/KB/threads/Setting_Max_Memory_Limit.aspx

Однако это не будет имитировать общие ограничения памяти ОС.

0 голосов
/ 27 ноября 2011

Поток, чтобы отключить выполнение программного обеспечения ваших гостевых кодов операций?

Я думаю, что это работает, но немного странно, как перемотка вперед, пауза, ff, пауза и т. Д. *

Если вы просто хотите ускорить процесс, попробуйте следующее: используйте одношаговые функции процессора и "отладьте" процесс . Вы должны написать собственный обработчик для одиночной степпинговой ловушки процессора. Ваша работа обработчика - это только большой цикл NOP.

У вас есть тонкая задержка между каждой инструкцией.

...