2013-05-26 4 views
0

Я занимаюсь анализом различных дистрибутивов Linux. Я хочу, чтобы измерить производительность дистрибутивов в приведенных ниже сценариевLinux: примеры программ для загрузки CPU, памяти и жесткого диска

1) использование High CPU

2) Высокая Память использования Использование

3) Высокая IO

4) High CPU IO ждать

Я хочу написать программы C для достижения каждого из сценариев, чтобы я мог выполнять эти программы по отдельности или в комбинации для измерения производительности. Я написал несколько примеров программ для загрузки CPU, но мне нужны программы c для обработки других сценариев. Любая помощь по использованию системы будет принята с благодарностью.

ответ

0

Я занимаюсь анализом различных дистрибутивов Linux.

Если вы не очень внимательно относитесь к тому, что вы делаете, вы вряд ли найдете тонкие различия в производительности между версиями ядра и дистрибутивами значимым образом. С уровня только запущенных программ довольно мало различий между дистрибутивами, за исключением той версии ядра Linux, которую они используют.

2) Использование High Memory

Ваша программа должна таНос() кучу памяти - и затем записать на него. Некоторые дистрибутивы Linux по умолчанию overcommit memory. Простое вызов malloc() для создания массива и запись в каждый элемент должны быть достаточными.

3) использование High IO

Рассмотрите возможность использования fio вместо того, чтобы писать собственный код здесь. Если вам нужно написать свой собственный код, то вам нужно будет решить несколько вещей:

  1. Случайный или последовательный ввод-вывод? Это менее важно для SSD, но на магнитных дисках два случая имеют очень разные характеристики.
  2. Читает или пишет? Различные подсистемы хранения могут работать по-разному с чтением и записью.
  3. Прямой IO или буферизованный IO? Вы хотите подчеркнуть всю сквозную подсистему ввода-вывода или просто базовое хранилище. Флаги, такие как O_DIRECT и O_SYNC, существенно меняют способ обращения к IO.
  4. Файловая система IO или блок IO? Вы заинтересованы в тестировании производительности файловой системы при создании и удалении файлов или просто в IO в блочном файле?

Простейший код, который вы можете здесь написать, просто использует open() для создания большого файла, а затем использует rand() вместе с pread() и pwrite() для выполнения случайного блочного ввода-вывода в этом файле. Если вы хотите протестировать файловую систему, вам нужно вызвать open() и unlink() несколько раз.

IO бенчмаркинг - очень тонкая тема, поэтому я бы посоветовал вам придерживаться хорошо понятого инструмента, такого как fio.

4) High CPU IO ждать

Объединяя своего загрузчика IO с загрузчиком CPU должны привести к высоким IO ждать. Если вы подчеркиваете какую-либо подсистему ввода-вывода, вы будете ждать ввода-вывода.

Смежные вопросы