0xfb thread proc benchmark source. Для сравнения эффективности нитей и процессов
License
iprun/thread-proc
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Добро пожаловать в thread proc benchmark -- набор тестов для сравнения эффективности разбиений некоторого набора вычислений на нити и на процессы. 1. Сборка. Для сборки исполняемых файлов с программами тестов необходимо сделать следующее. 1.1 Если Вы ещё не сделали это, то получить исходные тексты тестов. Например, так: $ git clone git://github.com/coda/thread-proc.git thread-proc 1.2 Для сборки тестов нужны некоторые дополнительные модули, которые следует получить при помощи скрипта foreign-up, находящегося в корне дерева исходных текстов тестов: $ cd thread-proc $ sh foreign-up git://github.com/coda Аргумент для foreign-up -- это путь для поиска модулей и он должен совпадать с указанным, если Вы не разместили необходимые модули по другому адресу. Для работы foreign-up требуется пакет Git 1.3 Процесс сборки запускает скрипт build. По-умолчанию он будет собирать исполняемые файлы тестов при помощи набора утилит GCC с оптимизацией времени связывания (LTO -- Link Time Optimization) в рабочей директории bld, находящуюся в корне дерева исходных текстов. Эту директорию необходимо создать перед запуском build: $ mkdir bld $ sh build Поведение build можно изменить при помощи ключей: -d собирать отладочные версии исполняемых файлов -b dir использовать dir в качестве рабочей директории -t tcn использовать набор компиляторов tcn. Поддерживаемые наборы: clang, gcc, gcc-nolto. Последний необходимо использовать c относительно старыми версиями GCC. -j n количество работ для make, соответствует -j для самого make. 2. Тестирование. В процессе сборки build разместит все необходимые для тестирования исполняемые файлы в поддиректорию bin используемой для процесса сборки директории. Запускающий все тесты скрипт runall находится там же. Тестирование можно запустить командой: $ bld/bin/runall Скрипт runall реагирует на несколько ключей в командной строке: -u n количество задач (нитей или процессов) до которого следует доводить тестирование. Тесты начинаются с 1 задачи, а затем их количество доводится до не более чем n в геометрической прогрессии с показателем 2: 1, 2, 4, 8, ... По-умолчанию, 512. -m sz размер матрицы для тестов с умножением матриц. Матрицы получат размер sz * 512. По-умолчанию, 2 (матрицы размером 1024x1024). -a it количество итераций для теста с выделением памяти. Количество итераций будет равно it * 1024 * 1024. По-умолчанию, 4 (число итераций 4194304). -e it количество итераций для теста с обменами. Количество итераций будет равно it * 1024. По-умолчанию, 64 (число итераций 65536). -p sz предполагаемый размер большой страницы, используемый для работы с матрицами. В килобайтах. По-умолчанию, 2048. Если какой-то из параметров, заданных при помощи -m, -a, -e или -p равен 0, то соответствующая группа тестов не проводится. Из нескольких повторяющихся опций значение имеет последняя. -s указывает на необходимость провести тестирование по сокращённой программе, с одним типом установок аффинности для задач: Interleave. -l fn позволяет указать файл, в который будет записана информация, выдаваемая запускаемыми для тестов программами. Опция полезна для контроля результатов. Запись будет производиться в файл с именем readlink -f fn. По-умолчанию, /dev/null 3. Большие страницы. Для того, чтобы программы с умножением матриц могли использовать большие страницы, а не завершаться с ошибкой (FAIL в колонках HP.P и HP.P-FS в списке результатов) необходимо включить поддержку больших страниц. Для систем на основе ядра Linux (ядро должно быть достаточно новым) это делается следующим образом: # echo gid > /proc/sys/vm/hugetlb_shm_group Здесь gid -- номер группы пользователей, которым разрешено использовать большие страницы. Естественно, это должен быть номер одной из групп, в которые входит пользователь, от чьего имени запускаются тесты. # echo N > /proc/sys/vm/nr_hugepages Здесь N -- количество больших страниц, которые система должна зарезервировать для работы. Большая страница для систем на базе процессоров x86-64 имеет длину 2MiB, и N должно быть достаточным для размещения 3-ёх матриц, запрашиваемого размера. Выполнения этих команд достаточно, чтобы заработал тест HP.P для умножения матрицы. Чтобы заработал тест HP.P-FS (процессы с общей памятью на основе файловой системы с большими страницами) необходимо смонтировать соответствующую файловую систему в точку монтирования /tmp/hugetlb (этот путь прописан в исходных текстах программы): mount -t hugetlbfs -o size=SZ,uid=UID none /tmp/hugetlb Здесь SZ -- объём памяти, который будет отведён под большие страницы данной файловой системы. UID -- номер пользователя, который получит возможность работать с этой ФС.
About
0xfb thread proc benchmark source. Для сравнения эффективности нитей и процессов
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published