Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
for (x = 0; x < 100000000; x++)
{
y = x;
}
Не забыв в начале функции check_exec, написать:
int x;
int y;
После внесения этих нехитрых изменений, снова перекомпилируем ядро. Естественно, с профилированием. Перезагрузившись, повторяем уже известные нам действия по созданию файлов gmon.out и gprof.out. И переходим к анализу полученных файлов.
В данном случае результат сразу бросается в глаза, вот что у меня получилось в gprof.out, раздел Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls us/call us/call name
93.97 136.13 136.13 idle
5.87 143.81 7.68 25 466826.09 466842.52 check_exec
0.01 143.83 0.02 243 82.30 82.30 pmap_copy_page
Сравним получившиеся результаты функции check_exec с теми, которые были получены до модификации последней.
До:
0.00 4.61 0.01 4 0.00 422.11 check_exec
После:
5.87 143.81 7.68 25 466826.09 466842.52 check_exec
Разница, я думаю, всем понятна. А теперь представим, что изменения, аналогичные тем, что мы специально добавили в систему для уменьшения производительности, попали в код случайно, например, вследствие ошибки программиста. Без профилирования, как мне кажется, будет сложно узнать, что именно «притормаживает» систему. А какие перспективы открывает профилирование для оценки оптимизации кода ядра! Внесли некоторые изменения в процедуру, погоняли машину в тестовом режиме, сравнили результаты с тем, что было в старом варианте и что получилось в новом.
И все видно сразу как на ладони. Для любителей оптимизации и разработчиков встроенных систем это просто находка!
Вообще тема профилирования достаточно обширна, но думаю, что описанного выше простого примера вполне достаточно, чтобы понять принцип профилирования ядра.