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