<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блоги &#187; Julia Fedorova (Intel)</title>
	<atom:link href="http://software.intel.com/ru-ru/blogs/author/julia-fedorova/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/ru-ru/blogs</link>
	<description></description>
	<lastBuildDate>Thu, 24 May 2012 12:16:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>На что уходят наносекунды.</title>
		<link>http://software.intel.com/ru-ru/blogs/2009/05/11/2001230/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2009/05/11/2001230/#comments</comments>
		<pubDate>Mon, 11 May 2009 17:10:23 +0000</pubDate>
		<dc:creator>Julia Fedorova (Intel)</dc:creator>
				<category><![CDATA[Игры]]></category>
		<category><![CDATA[Разработка софта]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2009/05/11/2001230/</guid>
		<description><![CDATA[(предисловие к докладу на КРИ 2009) “Время == деньги” справедливо и в области софта. Яркий пример - софт, который обслуживает биржевые операции и принимает решение в зависимости от котировок акций: покупать или продавать. Замешкалась такая программа на тысячу-другую наносекунд, – и конкурент скупил акции по выгодной цене. А ей – не досталось. Другие примеры: моделирование [...]]]></description>
			<content:encoded><![CDATA[<p>(предисловие к докладу на КРИ 2009)</p>
<p>“Время == деньги” справедливо и в области софта. Яркий пример - софт, который обслуживает биржевые операции и принимает решение в зависимости от котировок акций: покупать или продавать. Замешкалась такая программа на тысячу-другую наносекунд, – и конкурент скупил акции по выгодной цене. А ей – не досталось.<br />
Другие примеры: моделирование сложных систем и механизмов, предсказание катаклизмов (цунами, например), управление ракетными комплексами. А на десктопе? Там свои жадные до производительности программы. Игры – одни из них.</p>
<p>Вопрос:<br />
На вкладке <em>Performance</em> Task Manager показывает все ядра процессора загруженными на 100% . Значит ли это, что процессор каждый такт выдает на-гора результаты исполненной, хотя бы одной, инструкции?<br />
Ответ:<br />
Увы, нет.</p>
<p>Значительную долю времени, будучи в активном состоянии, ядро тратит “непродуктивно” - не выполняя инструкций. Эта доля может быть очень существенна: скажем, 50% (что еще не так плохо), она может быть и все 90%. И ведь как бывает обидно: имеется на машине 8 ядер, вроде все они работают на “полную катушку”, а при ближайшем рассмотрении выясняется, – что большую часть времени они ничего полезного не делают.</p>
<p>Профилировщики производительности помогают обнаружить такие неэффективности и разобраться, что является их причиной. (Далее можно говорить об оптимизации – минимизации непродуктивных тактов.)<br />
Хотя обнаружить активные-но-непродуктивные такты может не всякий профилировщик, а только тот, который использует PMU.</p>
<p>PMU - это performance monitoring unit – узел мониторинга производительности; присутствует в каждом современном процессоре. PMU дает возможность “заглянуть” внутрь процессора, каждого его ядра, и понять что там на самом деле происходит.</p>
<p>Это понимание представляется в виде значений событий производительности (performance events). Примеры событий производительности: выполненная инструкция (любая или определенного типа), промах в кэш, передача данных по шине, количество тактов в течение которых то или иное устройство было занято (работало, то есть)... Вообще, современный процессор поддерживает очень много событий производительности (в зависимости от процессора это может быть и 100+, и 1000+), каждое из которых можно отслеживать и измерять.</p>
<p>Возникает законный вопрос: какие события собирать и как интерпретировать то что насобиралось?</p>
<p>Тут мы подходим к теме выступления на КРИ. А выступление будет о профилировщике Intel® Performance Tuning Utility который</p>
<ul>1) имеет уже готовые Конфигурации с наиболее важными событиями, - нажми “Profile” и информация будет собрана для приложения или его части;</ul>
<ul>2) умеет обрабатывать собранные данные и указывать на проблемные места в коде.</ul>
<p>Intel PTU делает также многое другое: работает из командной строки и GUI, сравнивает результаты экспериментов, показывает source код программы и дизассемблер бинарника проаннотированные собранными событиями производительности и т.д.</p>
<p>Это все умеют делать многие достойные профилировщики, но вот первые две особенности отличают Intel PTU от прочих достойных.</p>
<p><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/cycle_usage_prf.png"><img class="alignright size-medium wp-image-2001237" src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/cycle_usage_prf-300x126.png" alt="" width="300" height="126" /></a><br />
Вопрос:<br />
А как по поводу непродуктивных тактов – того времени, что процессор не исполняет инструкций?<br />
Ответ:<br />
На это у Intel PTU есть готовая Конфигурация – “Cycle Usage”. Вот она – на картинке.</p>
<p>А на другой картинке результаты сбора данных с такой Конфигурацией для фрагмента демонстрационного игрового приложения Smoke. Как видно, доля непродуктивного времени для функции <code>HeatEmitter::update()</code> aж 98%.</p>
<p style="text-align: center;"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/stalls1.png"><img class="aligncenter size-full wp-image-2001248" src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/stalls1.png" alt="" width="631" height="253" /></a></p>
<p>Следующий шаг – разобраться на что ушли непродуктивные наносекунды. Intel PTU поможет в этом.</p>
<p>Детальная разборка – на <strong>КРИ в пятницу 15 мая</strong>. Доклад <strong>“Сделаем это по-быстрому”</strong>.</p>
<p>Если вам уже захотелось попробовать Intel PTU – его можно свободно загрузить с <a href="http://whatif.intel.com">http://whatif.intel.com</a><br />
Intel PTU, кcтати, работает на Windows и Linux. Linux - это уж вряд ли для разработчиков коммерческих игр, но тоже очень полезно.</p>
<p>Если вас заинтересовало приложение Smoke – найдете его там же.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2009/05/11/2001230/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

