The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование в Linux" / Оглавление документа
next up previous contents
Next: Опции компилятора Up: Начальные сведения о PETSc Previous: Сохранение вывода в файле   Contents

Точное профилирование: избегание перегрузки страниц

Одним из факторов, играющим значительную роль в профилировании кода, является страничная поддержка в операционной системе. В общем случае при запуске программы в память загружается только несколько страниц, необходимых для ее старта, но не весь исполняемый файл. Когда выполнение доходит до сегментов кода, не находящихся в памяти, возникает отсутствие страницы, вызывающее запрос на загрузку страниц с диска (очень медленный процесс). Эти действия существенно нарушают результаты профилирования. (Страничный эффект заметен в файлах регистрации, сгенерированных через -log_mpe). Для устранения страничного эффекта при профилировании производительности программ разработана эффективная процедура запуска того же самого кода на маленькой задаче-муляже перед запуском самой задачи. Затем следует убедиться, что весь код, требуемый решателю, загружен в память во время решения малой задачи. Если код работает для действительной задачи и все требуемые страницы уже загружены в основную память, то показатели производительности не пострадают. Когда эта процедура используется в сочетании с пользовательскими этапами профилирования, можно сосредоточиться на самой задаче. Например, эта технология используется в программе, приведенной в ${PETSC_DIR}/src/sles/examples/tutorials/ex10.c для генерации результатов, показанных в примерах этого раздела. В этом случае, профилируемый код (решение линейной системы для большой задачи) появляется в событиях 4 и 5. В частности, макросы:

PreLoadBegin (PetscTruth ,char* stagename),

PreLoadStage (char *stagename),

PreLoadEnd()

могут использоваться для быстрого преобразования обычной программы PETSc в программу, применяющую предварительную загрузку. Опции командной строки -preload_true и -preload_false могут использоваться для включения и отключения предварительной загрузки во время выполнения для тех программ PETSc, которым необходимы соответствующие макросы.



2004-06-22



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру