Тестирование производительности.Как повысить стабильность работы жесткого диска - PullRequest
2 голосов
/ 29 августа 2010

Я пытаюсь смоделировать загрузку приложения, чтобы измерить производительность приложения. Десятки клиентов отправляют запросы на сервер, и значительная часть обработки запросов - это случайные данные, загружаемые с жесткого диска (случайный файл, случайное смещение файла).

Я использую 15 Гб в 400 файлах.

Жесткий диск делает все возможное для кэширования операций чтения, поэтому общая производительность очень нестабильна от запуска к запуску (+/- 5,10%).

Чтобы минимизировать внутреннюю оптимизацию жесткого диска, я думаю поместить данные на выделенный физический жесткий диск, создавать случайные файлы перед каждым запуском теста, использовать ту же самую последовательность случайного доступа к файлам (последовательность файлов и смещения), затем выполнить тест и формат HDD в конце. Я предполагаю, что он очистит все внутренние кеши HDD и прогнозы доступа к файлам.

Что я должен сделать, чтобы свести к минимуму разброс результатов работы? Есть ли более простой (или может быть более подходящий) способ получения стабильных результатов производительности?

Заранее спасибо!

1 Ответ

2 голосов
/ 29 августа 2010

Практически все современные жесткие диски делают включают кэширование.Мне кажется, что результаты без кеша могли бы быть более однородными, но были бы абсолютно бессмысленными.

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

OTOH, учитывая, что вы хотите смоделировать что-то, что отличается от реального жесткого диска (обычноработает, я бы подумал написать его как полную программную симуляцию - например, иметь некоторый класс жестких дисков, который сохранял «текущую дорожку», с командами для чтения и записи данных, поиска другой дорожки и т. д.класс будет отслеживать такие вещи, как количество (виртуального) времени, затрачиваемого на каждую операцию.

...